github.com/klaytn/klaytn@v1.10.2/contracts/bridge/Bridge.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 bridge
     5  
     6  import (
     7  	"math/big"
     8  	"strings"
     9  
    10  	"github.com/klaytn/klaytn"
    11  	"github.com/klaytn/klaytn/accounts/abi"
    12  	"github.com/klaytn/klaytn/accounts/abi/bind"
    13  	"github.com/klaytn/klaytn/blockchain/types"
    14  	"github.com/klaytn/klaytn/common"
    15  	"github.com/klaytn/klaytn/event"
    16  )
    17  
    18  // Reference imports to suppress errors if they are not otherwise used.
    19  var (
    20  	_ = big.NewInt
    21  	_ = strings.NewReader
    22  	_ = klaytn.NotFound
    23  	_ = bind.Bind
    24  	_ = common.Big1
    25  	_ = types.BloomLookup
    26  	_ = event.NewSubscription
    27  )
    28  
    29  // AddressABI is the input ABI used to generate the binding from.
    30  const AddressABI = "[]"
    31  
    32  // AddressBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
    33  const AddressBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820b7534b8b203852d9ead56352219b5abb5424533d9bb1b9cf84c0b1d15d11fee50029`
    34  
    35  // AddressBin is the compiled bytecode used for deploying new contracts.
    36  var AddressBin = "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820b7534b8b203852d9ead56352219b5abb5424533d9bb1b9cf84c0b1d15d11fee50029"
    37  
    38  // DeployAddress deploys a new Klaytn contract, binding an instance of Address to it.
    39  func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) {
    40  	parsed, err := abi.JSON(strings.NewReader(AddressABI))
    41  	if err != nil {
    42  		return common.Address{}, nil, nil, err
    43  	}
    44  
    45  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(AddressBin), backend)
    46  	if err != nil {
    47  		return common.Address{}, nil, nil, err
    48  	}
    49  	return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil
    50  }
    51  
    52  // Address is an auto generated Go binding around a Klaytn contract.
    53  type Address struct {
    54  	AddressCaller     // Read-only binding to the contract
    55  	AddressTransactor // Write-only binding to the contract
    56  	AddressFilterer   // Log filterer for contract events
    57  }
    58  
    59  // AddressCaller is an auto generated read-only Go binding around a Klaytn contract.
    60  type AddressCaller struct {
    61  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    62  }
    63  
    64  // AddressTransactor is an auto generated write-only Go binding around a Klaytn contract.
    65  type AddressTransactor struct {
    66  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    67  }
    68  
    69  // AddressFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
    70  type AddressFilterer struct {
    71  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    72  }
    73  
    74  // AddressSession is an auto generated Go binding around a Klaytn contract,
    75  // with pre-set call and transact options.
    76  type AddressSession struct {
    77  	Contract     *Address          // Generic contract binding to set the session for
    78  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    79  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    80  }
    81  
    82  // AddressCallerSession is an auto generated read-only Go binding around a Klaytn contract,
    83  // with pre-set call options.
    84  type AddressCallerSession struct {
    85  	Contract *AddressCaller // Generic contract caller binding to set the session for
    86  	CallOpts bind.CallOpts  // Call options to use throughout this session
    87  }
    88  
    89  // AddressTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
    90  // with pre-set transact options.
    91  type AddressTransactorSession struct {
    92  	Contract     *AddressTransactor // Generic contract transactor binding to set the session for
    93  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
    94  }
    95  
    96  // AddressRaw is an auto generated low-level Go binding around a Klaytn contract.
    97  type AddressRaw struct {
    98  	Contract *Address // Generic contract binding to access the raw methods on
    99  }
   100  
   101  // AddressCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
   102  type AddressCallerRaw struct {
   103  	Contract *AddressCaller // Generic read-only contract binding to access the raw methods on
   104  }
   105  
   106  // AddressTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
   107  type AddressTransactorRaw struct {
   108  	Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on
   109  }
   110  
   111  // NewAddress creates a new instance of Address, bound to a specific deployed contract.
   112  func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) {
   113  	contract, err := bindAddress(address, backend, backend, backend)
   114  	if err != nil {
   115  		return nil, err
   116  	}
   117  	return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil
   118  }
   119  
   120  // NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract.
   121  func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) {
   122  	contract, err := bindAddress(address, caller, nil, nil)
   123  	if err != nil {
   124  		return nil, err
   125  	}
   126  	return &AddressCaller{contract: contract}, nil
   127  }
   128  
   129  // NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract.
   130  func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) {
   131  	contract, err := bindAddress(address, nil, transactor, nil)
   132  	if err != nil {
   133  		return nil, err
   134  	}
   135  	return &AddressTransactor{contract: contract}, nil
   136  }
   137  
   138  // NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract.
   139  func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) {
   140  	contract, err := bindAddress(address, nil, nil, filterer)
   141  	if err != nil {
   142  		return nil, err
   143  	}
   144  	return &AddressFilterer{contract: contract}, nil
   145  }
   146  
   147  // bindAddress binds a generic wrapper to an already deployed contract.
   148  func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   149  	parsed, err := abi.JSON(strings.NewReader(AddressABI))
   150  	if err != nil {
   151  		return nil, err
   152  	}
   153  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   154  }
   155  
   156  // Call invokes the (constant) contract method with params as input values and
   157  // sets the output to result. The result type might be a single field for simple
   158  // returns, a slice of interfaces for anonymous returns and a struct for named
   159  // returns.
   160  func (_Address *AddressRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   161  	return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...)
   162  }
   163  
   164  // Transfer initiates a plain transaction to move funds to the contract, calling
   165  // its default method if one is available.
   166  func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   167  	return _Address.Contract.AddressTransactor.contract.Transfer(opts)
   168  }
   169  
   170  // Transact invokes the (paid) contract method with params as input values.
   171  func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   172  	return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...)
   173  }
   174  
   175  // Call invokes the (constant) contract method with params as input values and
   176  // sets the output to result. The result type might be a single field for simple
   177  // returns, a slice of interfaces for anonymous returns and a struct for named
   178  // returns.
   179  func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   180  	return _Address.Contract.contract.Call(opts, result, method, params...)
   181  }
   182  
   183  // Transfer initiates a plain transaction to move funds to the contract, calling
   184  // its default method if one is available.
   185  func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   186  	return _Address.Contract.contract.Transfer(opts)
   187  }
   188  
   189  // Transact invokes the (paid) contract method with params as input values.
   190  func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   191  	return _Address.Contract.contract.Transact(opts, method, params...)
   192  }
   193  
   194  // BridgeABI is the input ABI used to generate the binding from.
   195  const BridgeABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_fee\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"}],\"name\":\"setKLAYFee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unlockKLAY\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_fee\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"}],\"name\":\"setERC20Fee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"counterpartBridge\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestKLAYTransfer\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\"}],\"name\":\"setCounterPartBridge\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"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\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"lockKLAY\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleKLAYTransfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_tokenURI\",\"type\":\"string\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"chargeWithoutEvent\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC20Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isLockedKLAY\",\"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\"},{\"constant\":true,\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_modeMintBurn\",\"type\":\"bool\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"KLAYLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"KLAYUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"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\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]"
   196  
   197  // BridgeBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
   198  const BridgeBinRuntime = `60806040526004361061031a5760003560e01c80638a75eee2116101ab578063bab2af1d116100f7578063ea21eade11610095578063f1656e531161006f578063f1656e5314611071578063f171996614611147578063f2fde38b1461115c578063ffa1ad741461118f5761031a565b8063ea21eade14610ff4578063ee2aec6514611009578063efdcd9741461103e5761031a565b8063cb38f407116100d1578063cb38f40714610ebf578063cf0da29014610ee9578063d8cf98ca14610fb9578063dd9222d614610fec5761031a565b8063bab2af1d14610e4b578063c263b5d614610e7e578063c877cf3714610e935761031a565b80639ef2017b11610164578063ac6fff0b1161013e578063ac6fff0b14610c3e578063afb6022314610c53578063b2c0103014610dd1578063b3f0067414610e365761031a565b80639ef2017b14610b075780639f07132914610b3a578063a066a7ed14610b4f5761031a565b80638a75eee214610a385780638c0bd91614610a625780638da5cb5b14610a955780638f32d59b14610aaa5780639832c1d714610abf578063989ba0d314610af25761031a565b8063407e6bae1161026a5780635526f76b11610223578063715018a6116101fd578063715018a61461095857806375ebdc091461096d5780637c1a0302146109f057806387b04c5514610a055761031a565b80635526f76b146108cd5780635eb7413a146109105780636e176ec2146109435761031a565b8063407e6bae146106f75780634739f7e5146107f0578063488af8711461082b57806348a18a6a146108705780634b40b826146108a357806354edad72146108b85761031a565b806322604742116102d75780633682a450116102b15780633682a450146106545780633a3099d1146106875780633a3485331461069c5780633e4fe949146106cd5761031a565b8063226047421461046557806326c23b54146105365780632f88396c1461060c5761031a565b806310693fcd1461033957806313a6738a1461036c57806313e7c9d8146103bb5780631a2ae53e146104025780631ebdca381461043b5780632014e5d114610450575b6002546040805160008152602081019091526103379133916111a4565b005b34801561034557600080fd5b506103376004803603602081101561035c57600080fd5b50356001600160a01b03166113e4565b34801561037857600080fd5b5061039f6004803603602081101561038f57600080fd5b50356001600160401b0316611549565b604080516001600160401b039092168252519081900360200190f35b3480156103c757600080fd5b506103ee600480360360208110156103de57600080fd5b50356001600160a01b0316611564565b604080519115158252519081900360200190f35b34801561040e57600080fd5b506103376004803603604081101561042557600080fd5b50803590602001356001600160401b0316611579565b34801561044757600080fd5b506103376115ed565b34801561045c57600080fd5b506103ee6116b9565b34801561047157600080fd5b506103376004803603608081101561048857600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156104c257600080fd5b8201836020820111156104d457600080fd5b803590602001918460018302840111600160201b831117156104f557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506116c9945050505050565b34801561054257600080fd5b50610337600480360360a081101561055957600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561059857600080fd5b8201836020820111156105aa57600080fd5b803590602001918460018302840111600160201b831117156105cb57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061174b945050505050565b34801561061857600080fd5b506103376004803603606081101561062f57600080fd5b5080356001600160a01b031690602081013590604001356001600160401b031661183c565b34801561066057600080fd5b506103376004803603602081101561067757600080fd5b50356001600160a01b03166118b2565b34801561069357600080fd5b5061039f611a2d565b3480156106a857600080fd5b506106b1611a32565b604080516001600160a01b039092168252519081900360200190f35b3480156106d957600080fd5b506106b1600480360360208110156106f057600080fd5b5035611a41565b34801561070357600080fd5b50610337600480360361010081101561071b57600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b81111561077c57600080fd5b82018360208201111561078e57600080fd5b803590602001918460018302840111600160201b831117156107af57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611a68945050505050565b3480156107fc57600080fd5b506103376004803603604081101561081357600080fd5b506001600160a01b0381358116916020013516611e0b565b34801561083757600080fd5b5061085e6004803603602081101561084e57600080fd5b50356001600160a01b0316611f68565b60408051918252519081900360200190f35b34801561087c57600080fd5b5061085e6004803603602081101561089357600080fd5b50356001600160a01b0316611f7a565b3480156108af57600080fd5b5061039f611f8c565b3480156108c457600080fd5b5061039f611fa2565b3480156108d957600080fd5b506108fa600480360360208110156108f057600080fd5b503560ff16611fb1565b6040805160ff9092168252519081900360200190f35b34801561091c57600080fd5b506103ee6004803603602081101561093357600080fd5b50356001600160a01b0316611fc6565b34801561094f57600080fd5b506103ee611fdb565b34801561096457600080fd5b50610337611feb565b6103376004803603606081101561098357600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156109b257600080fd5b8201836020820111156109c457600080fd5b803590602001918460018302840111600160201b831117156109e557600080fd5b50909250905061207f565b3480156109fc57600080fd5b5061039f6120d4565b348015610a1157600080fd5b5061033760048036036020811015610a2857600080fd5b50356001600160a01b03166120ea565b348015610a4457600080fd5b506103ee60048036036020811015610a5b57600080fd5b5035612156565b348015610a6e57600080fd5b506106b160048036036020811015610a8557600080fd5b50356001600160a01b031661216b565b348015610aa157600080fd5b506106b1612186565b348015610ab657600080fd5b506103ee612196565b348015610acb57600080fd5b506103ee60048036036020811015610ae257600080fd5b50356001600160401b03166121a7565b348015610afe57600080fd5b5061039f6121bc565b348015610b1357600080fd5b5061033760048036036020811015610b2a57600080fd5b50356001600160a01b03166121d2565b348015610b4657600080fd5b50610337612346565b348015610b5b57600080fd5b50610337600480360360e0811015610b7257600080fd5b8135916001600160a01b0360208201358116926040830135909116916060810135916001600160401b03608083013581169260a08101359091169181019060e0810160c0820135600160201b811115610bca57600080fd5b820183602082011115610bdc57600080fd5b803590602001918460018302840111600160201b83111715610bfd57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061240f945050505050565b348015610c4a57600080fd5b5061039f612627565b348015610c5f57600080fd5b506103376004803603610120811015610c7757600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b811115610cd857600080fd5b820183602082011115610cea57600080fd5b803590602001918460018302840111600160201b83111715610d0b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610d5d57600080fd5b820183602082011115610d6f57600080fd5b803590602001918460018302840111600160201b83111715610d9057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612636945050505050565b348015610ddd57600080fd5b50610de66129df565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610e22578181015183820152602001610e0a565b505050509050019250505060405180910390f35b348015610e4257600080fd5b506106b1612a41565b348015610e5757600080fd5b5061033760048036036020811015610e6e57600080fd5b50356001600160a01b0316612a50565b348015610e8a57600080fd5b5061085e612c3f565b348015610e9f57600080fd5b5061033760048036036020811015610eb657600080fd5b50351515612c45565b348015610ecb57600080fd5b506106b160048036036020811015610ee257600080fd5b5035612cb3565b348015610ef557600080fd5b5061033760048036036080811015610f0c57600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b811115610f4557600080fd5b820183602082011115610f5757600080fd5b803590602001918460018302840111600160201b83111715610f7857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612cc0945050505050565b348015610fc557600080fd5b5061033760048036036020811015610fdc57600080fd5b50356001600160a01b0316612ccd565b610337612e1b565b34801561100057600080fd5b50610de6612e1d565b34801561101557600080fd5b506103376004803603604081101561102c57600080fd5b5060ff81358116916020013516612e7d565b34801561104a57600080fd5b506103376004803603602081101561106157600080fd5b50356001600160a01b0316612fb9565b34801561107d57600080fd5b50610337600480360360a081101561109457600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156110d357600080fd5b8201836020820111156110e557600080fd5b803590602001918460018302840111600160201b8311171561110657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061300f945050505050565b34801561115357600080fd5b506103ee61301d565b34801561116857600080fd5b506103376004803603602081101561117f57600080fd5b50356001600160a01b0316613026565b34801561119b57600080fd5b5061039f613079565b60125460ff16156111eb5760408051600160e51b62461bcd0281526020600482015260066024820152600160d21b651b1bd8dad95902604482015290519081900360640190fd5b600f54600160481b900460ff166112405760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b8134116112975760408051600160e51b62461bcd02815260206004820152601360248201527f696e73756666696369656e7420616d6f756e7400000000000000000000000000604482015290519081900360640190fd5b60006112a28361307e565b905060006001600160a01b038516337feff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09836112e3348963ffffffff6131cd16565b600f600a9054906101000a90046001600160401b031687896040518086600281111561130b57fe5b60ff168152602001858152602001846001600160401b03166001600160401b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611370578181015183820152602001611358565b50505050905090810190601f16801561139d5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a45050600f805460016001600160401b03600160501b8084048216929092011602600160501b600160901b03199091161790555050565b6113ec612196565b61142e5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600660205260409020548291166114965760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260096020526040902054829060ff16156114fb5760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038316600081815260096020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6011602052600090815260409020546001600160401b031681565b600c6020526000908152604090205460ff1681565b336000908152600c602052604090205460ff166115ce5760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061469a833981519152604482015290519081900360640190fd5b6115d78161322d565b6115e0576115e9565b6115e9826132ff565b5050565b6115f5612196565b6116375760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b60125460ff1615156001146116845760408051600160e51b62461bcd0281526020600482015260086024820152600160c21b671d5b9b1bd8dad95902604482015290519081900360640190fd5b6012805460ff191690556040517fd20610c9b78a6903ef134539e3deb5d243be461de6ef12d4c29536bb9b54fa1b90600090a1565b600f54600160481b900460ff1681565b60408051600160e01b6323b872dd0281523360048201523060248201526044810184905290516001600160a01b038616916323b872dd91606480830192600092919082900301818387803b15801561172057600080fd5b505af1158015611734573d6000803e3d6000fd5b505050506117458433858585613332565b50505050565b6001600160a01b0385166323b872dd333061176c878763ffffffff61385616565b6040805163ffffffff861660e01b81526001600160a01b0394851660048201529290931660248301526044820152905160648083019260209291908290030181600087803b1580156117bd57600080fd5b505af11580156117d1573d6000803e3d6000fd5b505050506040513d60208110156117e757600080fd5b505161182757604051600160e51b62461bcd0281526004018080602001828103825260298152602001806146716029913960400191505060405180910390fd5b6118358533868686866138ba565b5050505050565b336000908152600c602052604090205460ff166118915760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061469a833981519152604482015290519081900360640190fd5b61189a8161322d565b6118a3576118ad565b6118ad8383613bfd565b505050565b6118ba612196565b6118fc5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b600d54600c116119565760408051600160e51b62461bcd02815260206004820152601260248201527f6d6178206f70657261746f72206c696d69740000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600c602052604090205460ff16156119c75760408051600160e51b62461bcd02815260206004820152600e60248201527f6578697374206f70657261746f72000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600d805491820181559091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319169091179055565b600c81565b6005546001600160a01b031681565b60088181548110611a4e57fe5b6000918252602090912001546001600160a01b0316905081565b336000908152600c602052604090205460ff16611abd5760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061469a833981519152604482015290519081900360640190fd5b611ac683613c44565b611acf83613cb1565b611ad857611e01565b611ae188613d74565b6001600160401b038381166000908152601160205260409020805467ffffffffffffffff1916918416919091179055611b1983613d8f565b846001600160a01b0316866001600160a01b0316886001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758b60018989600f60129054906101000a90046001600160401b03168960405180878152602001866002811115611b8a57fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611c01578181015183820152602001611be9565b50505050905090810190601f168015611c2e5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600f54600160401b900460ff1615611d3757846001600160a01b03166340c10f1987866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611cb257600080fd5b505af1158015611cc6573d6000803e3d6000fd5b505050506040513d6020811015611cdc57600080fd5b5051611d325760408051600160e51b62461bcd02815260206004820181905260248201527f68616e646c6545524332305472616e736665723a206d696e74206661696c6564604482015290519081900360640190fd5b611e01565b846001600160a01b031663a9059cbb87866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611d9757600080fd5b505af1158015611dab573d6000803e3d6000fd5b505050506040513d6020811015611dc157600080fd5b5051611e0157604051600160e51b62461bcd0281526004018080602001828103825260248152602001806146ba6024913960400191505060405180910390fd5b5050505050505050565b611e13612196565b611e555760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6001600160a01b0380831660009081526006602052604090205483911615611ec75760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260066020908152604080832080549588166001600160a01b031996871617905560088054600790935281842083905560018301815583527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee390910180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60036020526000908152604090205481565b60076020526000908152604090205481565b600f54600160901b90046001600160401b031681565b6010546001600160401b031681565b600e6020526000908152604090205460ff1681565b60096020526000908152604090205460ff1681565b600f54600160401b900460ff1681565b611ff3612196565b6120355760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b6000612091348563ffffffff6131cd16565b9050611835858285858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506111a492505050565b600f54600160501b90046001600160401b031681565b6120f2612196565b6121345760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60006020819052908152604090205460ff1681565b6006602052600090815260409020546001600160a01b031681565b6004546001600160a01b03165b90565b6004546001600160a01b0316331490565b600b6020526000908152604090205460ff1681565b601054600160401b90046001600160401b031681565b6121da612196565b61221c5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600660205260409020548291166122845760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260096020526040902054829060ff1615156001146122fb5760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260096020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b61234e612196565b6123905760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b60125460ff16156123d75760408051600160e51b62461bcd0281526020600482015260066024820152600160d21b651b1bd8dad95902604482015290519081900360640190fd5b6012805460ff191660011790556040517f915f3053cbc6842207cd97b68c0b585109b4f2fe61c5dbeb25d7678bfdfb8dfa90600090a1565b336000908152600c602052604090205460ff166124645760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061469a833981519152604482015290519081900360640190fd5b61246d83613c44565b61247683613cb1565b61247f5761261e565b61248887613d74565b6001600160401b038381166000908152601160205260409020805467ffffffffffffffff19169184169190911790556124c083613d8f565b60006001600160a01b0316856001600160a01b0316876001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758a60008989600f60129054906101000a90046001600160401b0316896040518087815260200186600281111561253257fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156125a9578181015183820152602001612591565b50505050905090810190601f1680156125d65780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a46040516001600160a01b0386169085156108fc029086906000818181858888f19350505050158015611e01573d6000803e3d6000fd5b50505050505050565b600f546001600160401b031681565b336000908152600c602052604090205460ff1661268b5760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061469a833981519152604482015290519081900360640190fd5b61269484613c44565b61269d84613cb1565b6126a6576129d4565b6126af89613d74565b6001600160401b038481166000908152601160205260409020805467ffffffffffffffff19169185169190911790556126e784613d8f565b856001600160a01b0316876001600160a01b0316896001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758c60028a8a600f60129054906101000a90046001600160401b0316896040518087815260200186600281111561275857fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156127cf5781810151838201526020016127b7565b50505050905090810190601f1680156127fc5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600f54600160401b900460ff161561296057856001600160a01b03166350bb4e7f8887856040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561289c578181015183820152602001612884565b50505050905090810190601f1680156128c95780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b1580156128ea57600080fd5b505af11580156128fe573d6000803e3d6000fd5b505050506040513d602081101561291457600080fd5b505161295b5760408051600160e51b62461bcd02815260206004820152600b6024820152600160aa1b6a1b5a5b9d0819985a5b195902604482015290519081900360640190fd5b6129d4565b60408051600160e01b6323b872dd0281523060048201526001600160a01b038981166024830152604482018890529151918816916323b872dd9160648082019260009290919082900301818387803b1580156129bb57600080fd5b505af11580156129cf573d6000803e3d6000fd5b505050505b505050505050505050565b6060600d805480602002602001604051908101604052809291908181526020018280548015612a3757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612a19575b5050505050905090565b6001546001600160a01b031681565b612a58612196565b612a9a5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6001600160a01b03808216600090815260066020526040902054829116612b025760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260066020908152604080832080546001600160a01b031916905560098252808320805460ff1916905560079091528120805491905560085460001901811015612bf257600880546000198101908110612b6657fe5b600091825260209091200154600880546001600160a01b039092169183908110612b8c57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806007600060088481548110612bcc57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b6008805490612c059060001983016145a2565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60025481565b612c4d612196565b612c8f5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b600f8054911515600160481b0269ff00000000000000000019909216919091179055565b600d8181548110611a4e57fe5b6117453385848685613332565b612cd5612196565b612d175760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600c602052604090205460ff16612d3c57600080fd5b6001600160a01b0381166000908152600c60205260408120805460ff191690555b600d548110156115e957816001600160a01b0316600d8281548110612d7e57fe5b6000918252602090912001546001600160a01b03161415612e1357600d80546000198101908110612dab57fe5b600091825260209091200154600d80546001600160a01b039092169183908110612dd157fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600d805490612e0d9060001983016145a2565b506115e9565b600101612d5d565b565b60606008805480602002602001604051908101604052809291908181526020018280548015612a37576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311612a19575050505050905090565b612e85612196565b612ec75760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b60008160ff1611612f225760408051600160e51b62461bcd02815260206004820152600e60248201527f7a65726f207468726573686f6c64000000000000000000000000000000000000604482015290519081900360640190fd5b600d5460ff82161115612f7f5760408051600160e51b62461bcd02815260206004820152601c60248201527f626967676572207468616e206e756d206f66206f70657261746f727300000000604482015290519081900360640190fd5b80600e6000846002811115612f9057fe5b60ff90811682526020820192909252604001600020805460ff1916929091169190911790555050565b612fc1612196565b6130035760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b61300c81613ef3565b50565b6118353386868686866138ba565b60125460ff1681565b61302e612196565b6130705760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b61300c81613f3d565b600181565b600254600154600091906001600160a01b03161580159061309f5750600081115b1561319457808310156130fc5760408051600160e51b62461bcd02815260206004820152601560248201527f696e73756666696369656e74206665654c696d69740000000000000000000000604482015290519081900360640190fd5b6001546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015613136573d6000803e3d6000fd5b506000613149848363ffffffff6131cd16565b111561318d57336108fc613163858463ffffffff6131cd16565b6040518115909202916000818181858888f1935050505015801561318b573d6000803e3d6000fd5b505b90506131c8565b604051339084156108fc029085906000818181858888f193505050501580156131c1573d6000803e3d6000fd5b5060009150505b919050565b6000828211156132275760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600f546000906001600160401b038381169116146132955760408051600160e51b62461bcd02815260206004820152600e60248201527f6e6f6e6365206d69736d61746368000000000000000000000000000000000000604482015290519081900360640190fd5b60008036604051808383808284378083019250505092505050604051809103902090506132c460018483613fe1565b156132f6575050600f805467ffffffffffffffff19811660016001600160401b039283168101909216179091556131c8565b50600092915050565b600281905560405181907fa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac36590600090a250565b6001600160a01b0380861660009081526006602052604090205486911661339a5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038616600090815260096020526040902054869060ff16156133ff5760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600f54600160481b900460ff166134545760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b604080516020808201879052825180830382018152828401909352600160e01b63c87b56dd026060838101828152855160009692956001600160a01b038f1695606490910191908401908083835b602083106134c15780518252601f1990920191602091820191016134a2565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b602083106135255780518252601f199092019160209182019101613506565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613587576040519150601f19603f3d011682016040523d82523d6000602084013e61358c565b606091505b509092509050816135a857506040805160208101909152600081525b600f54600160401b900460ff161561361957886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561360057600080fd5b505af1158015613614573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167f17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f60028a600f600a9054906101000a90046001600160401b031660008c60028a6040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156136b757818101518382015260200161369f565b50505050905090810190601f1680156136e45780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040526040518088600281111561370857fe5b60ff168152602001878152602001866001600160401b03166001600160401b03168152602001858152602001806020018460ff16815260200180602001838103835286818151815260200191508051906020019080838360005b8381101561377a578181015183820152602001613762565b50505050905090810190601f1680156137a75780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156137da5781810151838201526020016137c2565b50505050905090810190601f1680156138075780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a45050600f805460016001600160401b03600160501b8084048216929092011602600160501b600160901b031990911617905550505050505050565b6000828201838110156138b35760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038087166000908152600660205260409020548791166139225760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038716600090815260096020526040902054879060ff16156139875760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600f54600160481b900460ff166139dc5760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b60008511613a345760408051600160e51b62461bcd02815260206004820152600e60248201527f7a65726f206d73672e76616c7565000000000000000000000000000000000000604482015290519081900360640190fd5b6000613a41888a8761414d565b600f54909150600160401b900460ff1615613ab557886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015613a9c57600080fd5b505af1158015613ab0573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167feff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f0960018a600f600a9054906101000a90046001600160401b0316878b60405180866002811115613b1f57fe5b60ff168152602001858152602001846001600160401b03166001600160401b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613b84578181015183820152602001613b6c565b50505050905090810190601f168015613bb15780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a45050600f805460016001600160401b03600160501b8084048216929092011602600160501b600160901b031990911617905550505050505050565b6001600160a01b038216600081815260036020526040808220849055518392917fdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b91a35050565b600f546001600160401b03808316600160901b90920416111561300c5760408051600160e51b62461bcd02815260206004820152600c60248201527f72656d6f76656420766f74650000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160401b0381166000908152600b602052604081205460ff1615613d135760408051600160e51b62461bcd02815260206004820152600b6024820152600160a81b6a636c6f73656420766f746502604482015290519081900360640190fd5b6000803660405180838380828437808301925050509250505060405180910390209050613d4260008483613fe1565b156132f65750506001600160401b0381166000908152600b60205260409020805460ff191660019081179091556131c8565b6000908152602081905260409020805460ff19166001179055565b6010546001600160401b039081169082161115613dc3576010805467ffffffffffffffff19166001600160401b0383161790555b600f5460105460c86001600160401b03600160901b909304831601919081169082161115613df957506010546001600160401b03165b600f54600160901b90046001600160401b03165b816001600160401b0316816001600160401b031611158015613e4857506001600160401b038082166000908152601160205260409020541615155b15613eb5576001600160401b0381811660009081526011602090815260408083208054601080546fffffffffffffffff0000000000000000191691909616600160401b0217909455835467ffffffffffffffff1916909355600b905220805460ff19169055600101613e0d565b600f80546001600160401b03909216600160901b0279ffffffffffffffff000000000000000000000000000000000000199092169190911790555050565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f78605990600090a250565b6001600160a01b038116613f8557604051600160e51b62461bcd0281526004018080602001828103825260268152602001806145ff6026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b600080600a6000866002811115613ff457fe5b60ff168152602080820192909252604090810160009081206001600160401b03881682528352818120338252600181019093522054909150806140585781546001810183556000838152602090200180546001600160a01b0319163317905561407f565b60008181526003830160205260409020805460ff19811660ff918216600019019091161790555b33600090815260018301602090815260408083208790558683526003850190915290205460ff166140c55760028201805460018101825560009182526020909120018490555b60008481526003830160205260408120805460ff8082166001011660ff19909116179055600e908760028111156140f857fe5b60ff9081168252602080830193909352604091820160009081205488825260038701909452919091205491811691161061414157614136868661446a565b6001925050506138b3565b50600095945050505050565b6001600160a01b0380831660009081526003602052604081205460015491929091161580159061417d5750600081115b1561439557808310156141da5760408051600160e51b62461bcd02815260206004820152601560248201527f696e73756666696369656e74206665654c696d69740000000000000000000000604482015290519081900360640190fd5b60015460408051600160e01b63a9059cbb0281526001600160a01b0392831660048201526024810184905290519186169163a9059cbb916044808201926020929091908290030181600087803b15801561423357600080fd5b505af1158015614247573d6000803e3d6000fd5b505050506040513d602081101561425d57600080fd5b505161429d57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180614645602c913960400191505060405180910390fd5b60006142af848363ffffffff6131cd16565b111561438e576001600160a01b03841663a9059cbb866142d5868563ffffffff6131cd16565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561432457600080fd5b505af1158015614338573d6000803e3d6000fd5b505050506040513d602081101561434e57600080fd5b505161438e57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180614645602c913960400191505060405180910390fd5b90506138b3565b836001600160a01b031663a9059cbb86856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156143f557600080fd5b505af1158015614409573d6000803e3d6000fd5b505050506040513d602081101561441f57600080fd5b505161445f57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180614645602c913960400191505060405180910390fd5b506000949350505050565b6000600a600084600281111561447c57fe5b60ff168152602080820192909252604090810160009081206001600160401b0386168252909252812091505b815460ff821610156144f957816001016000836000018360ff16815481106144cc57fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120556001016144a8565b5060005b600282015460ff8216101561454f57816003016000836002018360ff168154811061452457fe5b600091825260208083209091015483528201929092526040019020805460ff191690556001016144fd565b50600a600084600281111561456057fe5b60ff168152602080820192909252604090810160009081206001600160401b038616825290925281209061459482826145c6565b6118356002830160006145c6565b8154818355818111156118ad576000838152602090206118ad9181019083016145e0565b508054600082559060005260206000209081019061300c91905b61219391905b808211156145fa57600081556001016145e6565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f7061794552433230466565416e64526566756e644368616e67653a207472616e73666572206661696c65647265717565737445524332305472616e736665723a207472616e7366657246726f6d206661696c65646d73672e73656e646572206973206e6f7420616e206f70657261746f7200000068616e646c6545524332305472616e736665723a207472616e73666572206661696c6564a165627a7a72305820d72c45eb055000abe14c03c9f351f5824bf68792d7a5cfa195f3aba407d4f4ec0029`
   199  
   200  // BridgeFuncSigs maps the 4-byte function signature to its string representation.
   201  var BridgeFuncSigs = map[string]string{
   202  	"3a3099d1": "MAX_OPERATOR()",
   203  	"ffa1ad74": "VERSION()",
   204  	"dd9222d6": "chargeWithoutEvent()",
   205  	"9832c1d7": "closedValueTransferVotes(uint64)",
   206  	"ac6fff0b": "configurationNonce()",
   207  	"3a348533": "counterpartBridge()",
   208  	"d8cf98ca": "deregisterOperator(address)",
   209  	"bab2af1d": "deregisterToken(address)",
   210  	"488af871": "feeOfERC20(address)",
   211  	"c263b5d6": "feeOfKLAY()",
   212  	"b3f00674": "feeReceiver()",
   213  	"b2c01030": "getOperatorList()",
   214  	"ea21eade": "getRegisteredTokenList()",
   215  	"407e6bae": "handleERC20Transfer(bytes32,address,address,address,uint256,uint64,uint64,bytes)",
   216  	"afb60223": "handleERC721Transfer(bytes32,address,address,address,uint256,uint64,uint64,string,bytes)",
   217  	"a066a7ed": "handleKLAYTransfer(bytes32,address,address,uint256,uint64,uint64,bytes)",
   218  	"13a6738a": "handleNoncesToBlockNums(uint64)",
   219  	"8a75eee2": "handledRequestTx(bytes32)",
   220  	"48a18a6a": "indexOfTokens(address)",
   221  	"f1719966": "isLockedKLAY()",
   222  	"8f32d59b": "isOwner()",
   223  	"2014e5d1": "isRunning()",
   224  	"9f071329": "lockKLAY()",
   225  	"10693fcd": "lockToken(address)",
   226  	"5eb7413a": "lockedTokens(address)",
   227  	"4b40b826": "lowerHandleNonce()",
   228  	"6e176ec2": "modeMintBurn()",
   229  	"f1656e53": "onERC20Received(address,address,uint256,uint256,bytes)",
   230  	"cf0da290": "onERC721Received(address,uint256,address,bytes)",
   231  	"cb38f407": "operatorList(uint256)",
   232  	"5526f76b": "operatorThresholds(uint8)",
   233  	"13e7c9d8": "operators(address)",
   234  	"8da5cb5b": "owner()",
   235  	"989ba0d3": "recoveryBlockNumber()",
   236  	"3682a450": "registerOperator(address)",
   237  	"4739f7e5": "registerToken(address,address)",
   238  	"3e4fe949": "registeredTokenList(uint256)",
   239  	"8c0bd916": "registeredTokens(address)",
   240  	"715018a6": "renounceOwnership()",
   241  	"26c23b54": "requestERC20Transfer(address,address,uint256,uint256,bytes)",
   242  	"22604742": "requestERC721Transfer(address,address,uint256,bytes)",
   243  	"75ebdc09": "requestKLAYTransfer(address,uint256,bytes)",
   244  	"7c1a0302": "requestNonce()",
   245  	"87b04c55": "setCounterPartBridge(address)",
   246  	"2f88396c": "setERC20Fee(address,uint256,uint64)",
   247  	"efdcd974": "setFeeReceiver(address)",
   248  	"1a2ae53e": "setKLAYFee(uint256,uint64)",
   249  	"ee2aec65": "setOperatorThreshold(uint8,uint8)",
   250  	"c877cf37": "start(bool)",
   251  	"f2fde38b": "transferOwnership(address)",
   252  	"1ebdca38": "unlockKLAY()",
   253  	"9ef2017b": "unlockToken(address)",
   254  	"54edad72": "upperHandleNonce()",
   255  }
   256  
   257  // BridgeBin is the compiled bytecode used for deploying new contracts.
   258  var BridgeBin = "0x60806040819052600180546001600160a01b03191690556000600255600f8054600160401b61ffff021916690100000000000000000017905560108054600160401b600160801b031916680100000000000000001790556020806200489f833981018060405260208110156200007457600080fd5b5051600180546001600160a01b03199081169091556004805490911633179081905560405182916001600160a01b0316906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360005b600260ff82161015620001045760ff81166000908152600e60205260409020805460ff1916600190811790915501620000d0565b50336000818152600c60205260408120805460ff19166001908117909155600d805491820181559091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319169091179055600f80549115156801000000000000000002600160401b60ff02199092169190911790555061470980620001966000396000f3fe60806040526004361061031a5760003560e01c80638a75eee2116101ab578063bab2af1d116100f7578063ea21eade11610095578063f1656e531161006f578063f1656e5314611071578063f171996614611147578063f2fde38b1461115c578063ffa1ad741461118f5761031a565b8063ea21eade14610ff4578063ee2aec6514611009578063efdcd9741461103e5761031a565b8063cb38f407116100d1578063cb38f40714610ebf578063cf0da29014610ee9578063d8cf98ca14610fb9578063dd9222d614610fec5761031a565b8063bab2af1d14610e4b578063c263b5d614610e7e578063c877cf3714610e935761031a565b80639ef2017b11610164578063ac6fff0b1161013e578063ac6fff0b14610c3e578063afb6022314610c53578063b2c0103014610dd1578063b3f0067414610e365761031a565b80639ef2017b14610b075780639f07132914610b3a578063a066a7ed14610b4f5761031a565b80638a75eee214610a385780638c0bd91614610a625780638da5cb5b14610a955780638f32d59b14610aaa5780639832c1d714610abf578063989ba0d314610af25761031a565b8063407e6bae1161026a5780635526f76b11610223578063715018a6116101fd578063715018a61461095857806375ebdc091461096d5780637c1a0302146109f057806387b04c5514610a055761031a565b80635526f76b146108cd5780635eb7413a146109105780636e176ec2146109435761031a565b8063407e6bae146106f75780634739f7e5146107f0578063488af8711461082b57806348a18a6a146108705780634b40b826146108a357806354edad72146108b85761031a565b806322604742116102d75780633682a450116102b15780633682a450146106545780633a3099d1146106875780633a3485331461069c5780633e4fe949146106cd5761031a565b8063226047421461046557806326c23b54146105365780632f88396c1461060c5761031a565b806310693fcd1461033957806313a6738a1461036c57806313e7c9d8146103bb5780631a2ae53e146104025780631ebdca381461043b5780632014e5d114610450575b6002546040805160008152602081019091526103379133916111a4565b005b34801561034557600080fd5b506103376004803603602081101561035c57600080fd5b50356001600160a01b03166113e4565b34801561037857600080fd5b5061039f6004803603602081101561038f57600080fd5b50356001600160401b0316611549565b604080516001600160401b039092168252519081900360200190f35b3480156103c757600080fd5b506103ee600480360360208110156103de57600080fd5b50356001600160a01b0316611564565b604080519115158252519081900360200190f35b34801561040e57600080fd5b506103376004803603604081101561042557600080fd5b50803590602001356001600160401b0316611579565b34801561044757600080fd5b506103376115ed565b34801561045c57600080fd5b506103ee6116b9565b34801561047157600080fd5b506103376004803603608081101561048857600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156104c257600080fd5b8201836020820111156104d457600080fd5b803590602001918460018302840111600160201b831117156104f557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506116c9945050505050565b34801561054257600080fd5b50610337600480360360a081101561055957600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561059857600080fd5b8201836020820111156105aa57600080fd5b803590602001918460018302840111600160201b831117156105cb57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061174b945050505050565b34801561061857600080fd5b506103376004803603606081101561062f57600080fd5b5080356001600160a01b031690602081013590604001356001600160401b031661183c565b34801561066057600080fd5b506103376004803603602081101561067757600080fd5b50356001600160a01b03166118b2565b34801561069357600080fd5b5061039f611a2d565b3480156106a857600080fd5b506106b1611a32565b604080516001600160a01b039092168252519081900360200190f35b3480156106d957600080fd5b506106b1600480360360208110156106f057600080fd5b5035611a41565b34801561070357600080fd5b50610337600480360361010081101561071b57600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b81111561077c57600080fd5b82018360208201111561078e57600080fd5b803590602001918460018302840111600160201b831117156107af57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611a68945050505050565b3480156107fc57600080fd5b506103376004803603604081101561081357600080fd5b506001600160a01b0381358116916020013516611e0b565b34801561083757600080fd5b5061085e6004803603602081101561084e57600080fd5b50356001600160a01b0316611f68565b60408051918252519081900360200190f35b34801561087c57600080fd5b5061085e6004803603602081101561089357600080fd5b50356001600160a01b0316611f7a565b3480156108af57600080fd5b5061039f611f8c565b3480156108c457600080fd5b5061039f611fa2565b3480156108d957600080fd5b506108fa600480360360208110156108f057600080fd5b503560ff16611fb1565b6040805160ff9092168252519081900360200190f35b34801561091c57600080fd5b506103ee6004803603602081101561093357600080fd5b50356001600160a01b0316611fc6565b34801561094f57600080fd5b506103ee611fdb565b34801561096457600080fd5b50610337611feb565b6103376004803603606081101561098357600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156109b257600080fd5b8201836020820111156109c457600080fd5b803590602001918460018302840111600160201b831117156109e557600080fd5b50909250905061207f565b3480156109fc57600080fd5b5061039f6120d4565b348015610a1157600080fd5b5061033760048036036020811015610a2857600080fd5b50356001600160a01b03166120ea565b348015610a4457600080fd5b506103ee60048036036020811015610a5b57600080fd5b5035612156565b348015610a6e57600080fd5b506106b160048036036020811015610a8557600080fd5b50356001600160a01b031661216b565b348015610aa157600080fd5b506106b1612186565b348015610ab657600080fd5b506103ee612196565b348015610acb57600080fd5b506103ee60048036036020811015610ae257600080fd5b50356001600160401b03166121a7565b348015610afe57600080fd5b5061039f6121bc565b348015610b1357600080fd5b5061033760048036036020811015610b2a57600080fd5b50356001600160a01b03166121d2565b348015610b4657600080fd5b50610337612346565b348015610b5b57600080fd5b50610337600480360360e0811015610b7257600080fd5b8135916001600160a01b0360208201358116926040830135909116916060810135916001600160401b03608083013581169260a08101359091169181019060e0810160c0820135600160201b811115610bca57600080fd5b820183602082011115610bdc57600080fd5b803590602001918460018302840111600160201b83111715610bfd57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061240f945050505050565b348015610c4a57600080fd5b5061039f612627565b348015610c5f57600080fd5b506103376004803603610120811015610c7757600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b811115610cd857600080fd5b820183602082011115610cea57600080fd5b803590602001918460018302840111600160201b83111715610d0b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610d5d57600080fd5b820183602082011115610d6f57600080fd5b803590602001918460018302840111600160201b83111715610d9057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612636945050505050565b348015610ddd57600080fd5b50610de66129df565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610e22578181015183820152602001610e0a565b505050509050019250505060405180910390f35b348015610e4257600080fd5b506106b1612a41565b348015610e5757600080fd5b5061033760048036036020811015610e6e57600080fd5b50356001600160a01b0316612a50565b348015610e8a57600080fd5b5061085e612c3f565b348015610e9f57600080fd5b5061033760048036036020811015610eb657600080fd5b50351515612c45565b348015610ecb57600080fd5b506106b160048036036020811015610ee257600080fd5b5035612cb3565b348015610ef557600080fd5b5061033760048036036080811015610f0c57600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b811115610f4557600080fd5b820183602082011115610f5757600080fd5b803590602001918460018302840111600160201b83111715610f7857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612cc0945050505050565b348015610fc557600080fd5b5061033760048036036020811015610fdc57600080fd5b50356001600160a01b0316612ccd565b610337612e1b565b34801561100057600080fd5b50610de6612e1d565b34801561101557600080fd5b506103376004803603604081101561102c57600080fd5b5060ff81358116916020013516612e7d565b34801561104a57600080fd5b506103376004803603602081101561106157600080fd5b50356001600160a01b0316612fb9565b34801561107d57600080fd5b50610337600480360360a081101561109457600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156110d357600080fd5b8201836020820111156110e557600080fd5b803590602001918460018302840111600160201b8311171561110657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061300f945050505050565b34801561115357600080fd5b506103ee61301d565b34801561116857600080fd5b506103376004803603602081101561117f57600080fd5b50356001600160a01b0316613026565b34801561119b57600080fd5b5061039f613079565b60125460ff16156111eb5760408051600160e51b62461bcd0281526020600482015260066024820152600160d21b651b1bd8dad95902604482015290519081900360640190fd5b600f54600160481b900460ff166112405760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b8134116112975760408051600160e51b62461bcd02815260206004820152601360248201527f696e73756666696369656e7420616d6f756e7400000000000000000000000000604482015290519081900360640190fd5b60006112a28361307e565b905060006001600160a01b038516337feff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09836112e3348963ffffffff6131cd16565b600f600a9054906101000a90046001600160401b031687896040518086600281111561130b57fe5b60ff168152602001858152602001846001600160401b03166001600160401b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611370578181015183820152602001611358565b50505050905090810190601f16801561139d5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a45050600f805460016001600160401b03600160501b8084048216929092011602600160501b600160901b03199091161790555050565b6113ec612196565b61142e5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600660205260409020548291166114965760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260096020526040902054829060ff16156114fb5760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038316600081815260096020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6011602052600090815260409020546001600160401b031681565b600c6020526000908152604090205460ff1681565b336000908152600c602052604090205460ff166115ce5760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061469a833981519152604482015290519081900360640190fd5b6115d78161322d565b6115e0576115e9565b6115e9826132ff565b5050565b6115f5612196565b6116375760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b60125460ff1615156001146116845760408051600160e51b62461bcd0281526020600482015260086024820152600160c21b671d5b9b1bd8dad95902604482015290519081900360640190fd5b6012805460ff191690556040517fd20610c9b78a6903ef134539e3deb5d243be461de6ef12d4c29536bb9b54fa1b90600090a1565b600f54600160481b900460ff1681565b60408051600160e01b6323b872dd0281523360048201523060248201526044810184905290516001600160a01b038616916323b872dd91606480830192600092919082900301818387803b15801561172057600080fd5b505af1158015611734573d6000803e3d6000fd5b505050506117458433858585613332565b50505050565b6001600160a01b0385166323b872dd333061176c878763ffffffff61385616565b6040805163ffffffff861660e01b81526001600160a01b0394851660048201529290931660248301526044820152905160648083019260209291908290030181600087803b1580156117bd57600080fd5b505af11580156117d1573d6000803e3d6000fd5b505050506040513d60208110156117e757600080fd5b505161182757604051600160e51b62461bcd0281526004018080602001828103825260298152602001806146716029913960400191505060405180910390fd5b6118358533868686866138ba565b5050505050565b336000908152600c602052604090205460ff166118915760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061469a833981519152604482015290519081900360640190fd5b61189a8161322d565b6118a3576118ad565b6118ad8383613bfd565b505050565b6118ba612196565b6118fc5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b600d54600c116119565760408051600160e51b62461bcd02815260206004820152601260248201527f6d6178206f70657261746f72206c696d69740000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600c602052604090205460ff16156119c75760408051600160e51b62461bcd02815260206004820152600e60248201527f6578697374206f70657261746f72000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600d805491820181559091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319169091179055565b600c81565b6005546001600160a01b031681565b60088181548110611a4e57fe5b6000918252602090912001546001600160a01b0316905081565b336000908152600c602052604090205460ff16611abd5760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061469a833981519152604482015290519081900360640190fd5b611ac683613c44565b611acf83613cb1565b611ad857611e01565b611ae188613d74565b6001600160401b038381166000908152601160205260409020805467ffffffffffffffff1916918416919091179055611b1983613d8f565b846001600160a01b0316866001600160a01b0316886001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758b60018989600f60129054906101000a90046001600160401b03168960405180878152602001866002811115611b8a57fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611c01578181015183820152602001611be9565b50505050905090810190601f168015611c2e5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600f54600160401b900460ff1615611d3757846001600160a01b03166340c10f1987866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611cb257600080fd5b505af1158015611cc6573d6000803e3d6000fd5b505050506040513d6020811015611cdc57600080fd5b5051611d325760408051600160e51b62461bcd02815260206004820181905260248201527f68616e646c6545524332305472616e736665723a206d696e74206661696c6564604482015290519081900360640190fd5b611e01565b846001600160a01b031663a9059cbb87866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611d9757600080fd5b505af1158015611dab573d6000803e3d6000fd5b505050506040513d6020811015611dc157600080fd5b5051611e0157604051600160e51b62461bcd0281526004018080602001828103825260248152602001806146ba6024913960400191505060405180910390fd5b5050505050505050565b611e13612196565b611e555760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6001600160a01b0380831660009081526006602052604090205483911615611ec75760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260066020908152604080832080549588166001600160a01b031996871617905560088054600790935281842083905560018301815583527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee390910180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60036020526000908152604090205481565b60076020526000908152604090205481565b600f54600160901b90046001600160401b031681565b6010546001600160401b031681565b600e6020526000908152604090205460ff1681565b60096020526000908152604090205460ff1681565b600f54600160401b900460ff1681565b611ff3612196565b6120355760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b6000612091348563ffffffff6131cd16565b9050611835858285858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506111a492505050565b600f54600160501b90046001600160401b031681565b6120f2612196565b6121345760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60006020819052908152604090205460ff1681565b6006602052600090815260409020546001600160a01b031681565b6004546001600160a01b03165b90565b6004546001600160a01b0316331490565b600b6020526000908152604090205460ff1681565b601054600160401b90046001600160401b031681565b6121da612196565b61221c5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600660205260409020548291166122845760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260096020526040902054829060ff1615156001146122fb5760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260096020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b61234e612196565b6123905760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b60125460ff16156123d75760408051600160e51b62461bcd0281526020600482015260066024820152600160d21b651b1bd8dad95902604482015290519081900360640190fd5b6012805460ff191660011790556040517f915f3053cbc6842207cd97b68c0b585109b4f2fe61c5dbeb25d7678bfdfb8dfa90600090a1565b336000908152600c602052604090205460ff166124645760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061469a833981519152604482015290519081900360640190fd5b61246d83613c44565b61247683613cb1565b61247f5761261e565b61248887613d74565b6001600160401b038381166000908152601160205260409020805467ffffffffffffffff19169184169190911790556124c083613d8f565b60006001600160a01b0316856001600160a01b0316876001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758a60008989600f60129054906101000a90046001600160401b0316896040518087815260200186600281111561253257fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156125a9578181015183820152602001612591565b50505050905090810190601f1680156125d65780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a46040516001600160a01b0386169085156108fc029086906000818181858888f19350505050158015611e01573d6000803e3d6000fd5b50505050505050565b600f546001600160401b031681565b336000908152600c602052604090205460ff1661268b5760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061469a833981519152604482015290519081900360640190fd5b61269484613c44565b61269d84613cb1565b6126a6576129d4565b6126af89613d74565b6001600160401b038481166000908152601160205260409020805467ffffffffffffffff19169185169190911790556126e784613d8f565b856001600160a01b0316876001600160a01b0316896001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758c60028a8a600f60129054906101000a90046001600160401b0316896040518087815260200186600281111561275857fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156127cf5781810151838201526020016127b7565b50505050905090810190601f1680156127fc5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600f54600160401b900460ff161561296057856001600160a01b03166350bb4e7f8887856040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561289c578181015183820152602001612884565b50505050905090810190601f1680156128c95780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b1580156128ea57600080fd5b505af11580156128fe573d6000803e3d6000fd5b505050506040513d602081101561291457600080fd5b505161295b5760408051600160e51b62461bcd02815260206004820152600b6024820152600160aa1b6a1b5a5b9d0819985a5b195902604482015290519081900360640190fd5b6129d4565b60408051600160e01b6323b872dd0281523060048201526001600160a01b038981166024830152604482018890529151918816916323b872dd9160648082019260009290919082900301818387803b1580156129bb57600080fd5b505af11580156129cf573d6000803e3d6000fd5b505050505b505050505050505050565b6060600d805480602002602001604051908101604052809291908181526020018280548015612a3757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612a19575b5050505050905090565b6001546001600160a01b031681565b612a58612196565b612a9a5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6001600160a01b03808216600090815260066020526040902054829116612b025760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260066020908152604080832080546001600160a01b031916905560098252808320805460ff1916905560079091528120805491905560085460001901811015612bf257600880546000198101908110612b6657fe5b600091825260209091200154600880546001600160a01b039092169183908110612b8c57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806007600060088481548110612bcc57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b6008805490612c059060001983016145a2565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60025481565b612c4d612196565b612c8f5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b600f8054911515600160481b0269ff00000000000000000019909216919091179055565b600d8181548110611a4e57fe5b6117453385848685613332565b612cd5612196565b612d175760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600c602052604090205460ff16612d3c57600080fd5b6001600160a01b0381166000908152600c60205260408120805460ff191690555b600d548110156115e957816001600160a01b0316600d8281548110612d7e57fe5b6000918252602090912001546001600160a01b03161415612e1357600d80546000198101908110612dab57fe5b600091825260209091200154600d80546001600160a01b039092169183908110612dd157fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600d805490612e0d9060001983016145a2565b506115e9565b600101612d5d565b565b60606008805480602002602001604051908101604052809291908181526020018280548015612a37576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311612a19575050505050905090565b612e85612196565b612ec75760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b60008160ff1611612f225760408051600160e51b62461bcd02815260206004820152600e60248201527f7a65726f207468726573686f6c64000000000000000000000000000000000000604482015290519081900360640190fd5b600d5460ff82161115612f7f5760408051600160e51b62461bcd02815260206004820152601c60248201527f626967676572207468616e206e756d206f66206f70657261746f727300000000604482015290519081900360640190fd5b80600e6000846002811115612f9057fe5b60ff90811682526020820192909252604001600020805460ff1916929091169190911790555050565b612fc1612196565b6130035760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b61300c81613ef3565b50565b6118353386868686866138ba565b60125460ff1681565b61302e612196565b6130705760408051600160e51b62461bcd0281526020600482018190526024820152600080516020614625833981519152604482015290519081900360640190fd5b61300c81613f3d565b600181565b600254600154600091906001600160a01b03161580159061309f5750600081115b1561319457808310156130fc5760408051600160e51b62461bcd02815260206004820152601560248201527f696e73756666696369656e74206665654c696d69740000000000000000000000604482015290519081900360640190fd5b6001546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015613136573d6000803e3d6000fd5b506000613149848363ffffffff6131cd16565b111561318d57336108fc613163858463ffffffff6131cd16565b6040518115909202916000818181858888f1935050505015801561318b573d6000803e3d6000fd5b505b90506131c8565b604051339084156108fc029085906000818181858888f193505050501580156131c1573d6000803e3d6000fd5b5060009150505b919050565b6000828211156132275760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600f546000906001600160401b038381169116146132955760408051600160e51b62461bcd02815260206004820152600e60248201527f6e6f6e6365206d69736d61746368000000000000000000000000000000000000604482015290519081900360640190fd5b60008036604051808383808284378083019250505092505050604051809103902090506132c460018483613fe1565b156132f6575050600f805467ffffffffffffffff19811660016001600160401b039283168101909216179091556131c8565b50600092915050565b600281905560405181907fa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac36590600090a250565b6001600160a01b0380861660009081526006602052604090205486911661339a5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038616600090815260096020526040902054869060ff16156133ff5760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600f54600160481b900460ff166134545760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b604080516020808201879052825180830382018152828401909352600160e01b63c87b56dd026060838101828152855160009692956001600160a01b038f1695606490910191908401908083835b602083106134c15780518252601f1990920191602091820191016134a2565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b602083106135255780518252601f199092019160209182019101613506565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613587576040519150601f19603f3d011682016040523d82523d6000602084013e61358c565b606091505b509092509050816135a857506040805160208101909152600081525b600f54600160401b900460ff161561361957886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561360057600080fd5b505af1158015613614573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167f17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f60028a600f600a9054906101000a90046001600160401b031660008c60028a6040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156136b757818101518382015260200161369f565b50505050905090810190601f1680156136e45780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040526040518088600281111561370857fe5b60ff168152602001878152602001866001600160401b03166001600160401b03168152602001858152602001806020018460ff16815260200180602001838103835286818151815260200191508051906020019080838360005b8381101561377a578181015183820152602001613762565b50505050905090810190601f1680156137a75780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156137da5781810151838201526020016137c2565b50505050905090810190601f1680156138075780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a45050600f805460016001600160401b03600160501b8084048216929092011602600160501b600160901b031990911617905550505050505050565b6000828201838110156138b35760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038087166000908152600660205260409020548791166139225760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038716600090815260096020526040902054879060ff16156139875760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600f54600160481b900460ff166139dc5760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b60008511613a345760408051600160e51b62461bcd02815260206004820152600e60248201527f7a65726f206d73672e76616c7565000000000000000000000000000000000000604482015290519081900360640190fd5b6000613a41888a8761414d565b600f54909150600160401b900460ff1615613ab557886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015613a9c57600080fd5b505af1158015613ab0573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167feff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f0960018a600f600a9054906101000a90046001600160401b0316878b60405180866002811115613b1f57fe5b60ff168152602001858152602001846001600160401b03166001600160401b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613b84578181015183820152602001613b6c565b50505050905090810190601f168015613bb15780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a45050600f805460016001600160401b03600160501b8084048216929092011602600160501b600160901b031990911617905550505050505050565b6001600160a01b038216600081815260036020526040808220849055518392917fdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b91a35050565b600f546001600160401b03808316600160901b90920416111561300c5760408051600160e51b62461bcd02815260206004820152600c60248201527f72656d6f76656420766f74650000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160401b0381166000908152600b602052604081205460ff1615613d135760408051600160e51b62461bcd02815260206004820152600b6024820152600160a81b6a636c6f73656420766f746502604482015290519081900360640190fd5b6000803660405180838380828437808301925050509250505060405180910390209050613d4260008483613fe1565b156132f65750506001600160401b0381166000908152600b60205260409020805460ff191660019081179091556131c8565b6000908152602081905260409020805460ff19166001179055565b6010546001600160401b039081169082161115613dc3576010805467ffffffffffffffff19166001600160401b0383161790555b600f5460105460c86001600160401b03600160901b909304831601919081169082161115613df957506010546001600160401b03165b600f54600160901b90046001600160401b03165b816001600160401b0316816001600160401b031611158015613e4857506001600160401b038082166000908152601160205260409020541615155b15613eb5576001600160401b0381811660009081526011602090815260408083208054601080546fffffffffffffffff0000000000000000191691909616600160401b0217909455835467ffffffffffffffff1916909355600b905220805460ff19169055600101613e0d565b600f80546001600160401b03909216600160901b0279ffffffffffffffff000000000000000000000000000000000000199092169190911790555050565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f78605990600090a250565b6001600160a01b038116613f8557604051600160e51b62461bcd0281526004018080602001828103825260268152602001806145ff6026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b600080600a6000866002811115613ff457fe5b60ff168152602080820192909252604090810160009081206001600160401b03881682528352818120338252600181019093522054909150806140585781546001810183556000838152602090200180546001600160a01b0319163317905561407f565b60008181526003830160205260409020805460ff19811660ff918216600019019091161790555b33600090815260018301602090815260408083208790558683526003850190915290205460ff166140c55760028201805460018101825560009182526020909120018490555b60008481526003830160205260408120805460ff8082166001011660ff19909116179055600e908760028111156140f857fe5b60ff9081168252602080830193909352604091820160009081205488825260038701909452919091205491811691161061414157614136868661446a565b6001925050506138b3565b50600095945050505050565b6001600160a01b0380831660009081526003602052604081205460015491929091161580159061417d5750600081115b1561439557808310156141da5760408051600160e51b62461bcd02815260206004820152601560248201527f696e73756666696369656e74206665654c696d69740000000000000000000000604482015290519081900360640190fd5b60015460408051600160e01b63a9059cbb0281526001600160a01b0392831660048201526024810184905290519186169163a9059cbb916044808201926020929091908290030181600087803b15801561423357600080fd5b505af1158015614247573d6000803e3d6000fd5b505050506040513d602081101561425d57600080fd5b505161429d57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180614645602c913960400191505060405180910390fd5b60006142af848363ffffffff6131cd16565b111561438e576001600160a01b03841663a9059cbb866142d5868563ffffffff6131cd16565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561432457600080fd5b505af1158015614338573d6000803e3d6000fd5b505050506040513d602081101561434e57600080fd5b505161438e57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180614645602c913960400191505060405180910390fd5b90506138b3565b836001600160a01b031663a9059cbb86856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156143f557600080fd5b505af1158015614409573d6000803e3d6000fd5b505050506040513d602081101561441f57600080fd5b505161445f57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180614645602c913960400191505060405180910390fd5b506000949350505050565b6000600a600084600281111561447c57fe5b60ff168152602080820192909252604090810160009081206001600160401b0386168252909252812091505b815460ff821610156144f957816001016000836000018360ff16815481106144cc57fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120556001016144a8565b5060005b600282015460ff8216101561454f57816003016000836002018360ff168154811061452457fe5b600091825260208083209091015483528201929092526040019020805460ff191690556001016144fd565b50600a600084600281111561456057fe5b60ff168152602080820192909252604090810160009081206001600160401b038616825290925281209061459482826145c6565b6118356002830160006145c6565b8154818355818111156118ad576000838152602090206118ad9181019083016145e0565b508054600082559060005260206000209081019061300c91905b61219391905b808211156145fa57600081556001016145e6565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f7061794552433230466565416e64526566756e644368616e67653a207472616e73666572206661696c65647265717565737445524332305472616e736665723a207472616e7366657246726f6d206661696c65646d73672e73656e646572206973206e6f7420616e206f70657261746f7200000068616e646c6545524332305472616e736665723a207472616e73666572206661696c6564a165627a7a72305820d72c45eb055000abe14c03c9f351f5824bf68792d7a5cfa195f3aba407d4f4ec0029"
   259  
   260  // DeployBridge deploys a new Klaytn contract, binding an instance of Bridge to it.
   261  func DeployBridge(auth *bind.TransactOpts, backend bind.ContractBackend, _modeMintBurn bool) (common.Address, *types.Transaction, *Bridge, error) {
   262  	parsed, err := abi.JSON(strings.NewReader(BridgeABI))
   263  	if err != nil {
   264  		return common.Address{}, nil, nil, err
   265  	}
   266  
   267  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(BridgeBin), backend, _modeMintBurn)
   268  	if err != nil {
   269  		return common.Address{}, nil, nil, err
   270  	}
   271  	return address, tx, &Bridge{BridgeCaller: BridgeCaller{contract: contract}, BridgeTransactor: BridgeTransactor{contract: contract}, BridgeFilterer: BridgeFilterer{contract: contract}}, nil
   272  }
   273  
   274  // Bridge is an auto generated Go binding around a Klaytn contract.
   275  type Bridge struct {
   276  	BridgeCaller     // Read-only binding to the contract
   277  	BridgeTransactor // Write-only binding to the contract
   278  	BridgeFilterer   // Log filterer for contract events
   279  }
   280  
   281  // BridgeCaller is an auto generated read-only Go binding around a Klaytn contract.
   282  type BridgeCaller struct {
   283  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   284  }
   285  
   286  // BridgeTransactor is an auto generated write-only Go binding around a Klaytn contract.
   287  type BridgeTransactor struct {
   288  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   289  }
   290  
   291  // BridgeFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
   292  type BridgeFilterer struct {
   293  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   294  }
   295  
   296  // BridgeSession is an auto generated Go binding around a Klaytn contract,
   297  // with pre-set call and transact options.
   298  type BridgeSession struct {
   299  	Contract     *Bridge           // Generic contract binding to set the session for
   300  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   301  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   302  }
   303  
   304  // BridgeCallerSession is an auto generated read-only Go binding around a Klaytn contract,
   305  // with pre-set call options.
   306  type BridgeCallerSession struct {
   307  	Contract *BridgeCaller // Generic contract caller binding to set the session for
   308  	CallOpts bind.CallOpts // Call options to use throughout this session
   309  }
   310  
   311  // BridgeTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
   312  // with pre-set transact options.
   313  type BridgeTransactorSession struct {
   314  	Contract     *BridgeTransactor // Generic contract transactor binding to set the session for
   315  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   316  }
   317  
   318  // BridgeRaw is an auto generated low-level Go binding around a Klaytn contract.
   319  type BridgeRaw struct {
   320  	Contract *Bridge // Generic contract binding to access the raw methods on
   321  }
   322  
   323  // BridgeCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
   324  type BridgeCallerRaw struct {
   325  	Contract *BridgeCaller // Generic read-only contract binding to access the raw methods on
   326  }
   327  
   328  // BridgeTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
   329  type BridgeTransactorRaw struct {
   330  	Contract *BridgeTransactor // Generic write-only contract binding to access the raw methods on
   331  }
   332  
   333  // NewBridge creates a new instance of Bridge, bound to a specific deployed contract.
   334  func NewBridge(address common.Address, backend bind.ContractBackend) (*Bridge, error) {
   335  	contract, err := bindBridge(address, backend, backend, backend)
   336  	if err != nil {
   337  		return nil, err
   338  	}
   339  	return &Bridge{BridgeCaller: BridgeCaller{contract: contract}, BridgeTransactor: BridgeTransactor{contract: contract}, BridgeFilterer: BridgeFilterer{contract: contract}}, nil
   340  }
   341  
   342  // NewBridgeCaller creates a new read-only instance of Bridge, bound to a specific deployed contract.
   343  func NewBridgeCaller(address common.Address, caller bind.ContractCaller) (*BridgeCaller, error) {
   344  	contract, err := bindBridge(address, caller, nil, nil)
   345  	if err != nil {
   346  		return nil, err
   347  	}
   348  	return &BridgeCaller{contract: contract}, nil
   349  }
   350  
   351  // NewBridgeTransactor creates a new write-only instance of Bridge, bound to a specific deployed contract.
   352  func NewBridgeTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransactor, error) {
   353  	contract, err := bindBridge(address, nil, transactor, nil)
   354  	if err != nil {
   355  		return nil, err
   356  	}
   357  	return &BridgeTransactor{contract: contract}, nil
   358  }
   359  
   360  // NewBridgeFilterer creates a new log filterer instance of Bridge, bound to a specific deployed contract.
   361  func NewBridgeFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeFilterer, error) {
   362  	contract, err := bindBridge(address, nil, nil, filterer)
   363  	if err != nil {
   364  		return nil, err
   365  	}
   366  	return &BridgeFilterer{contract: contract}, nil
   367  }
   368  
   369  // bindBridge binds a generic wrapper to an already deployed contract.
   370  func bindBridge(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   371  	parsed, err := abi.JSON(strings.NewReader(BridgeABI))
   372  	if err != nil {
   373  		return nil, err
   374  	}
   375  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   376  }
   377  
   378  // Call invokes the (constant) contract method with params as input values and
   379  // sets the output to result. The result type might be a single field for simple
   380  // returns, a slice of interfaces for anonymous returns and a struct for named
   381  // returns.
   382  func (_Bridge *BridgeRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   383  	return _Bridge.Contract.BridgeCaller.contract.Call(opts, result, method, params...)
   384  }
   385  
   386  // Transfer initiates a plain transaction to move funds to the contract, calling
   387  // its default method if one is available.
   388  func (_Bridge *BridgeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   389  	return _Bridge.Contract.BridgeTransactor.contract.Transfer(opts)
   390  }
   391  
   392  // Transact invokes the (paid) contract method with params as input values.
   393  func (_Bridge *BridgeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   394  	return _Bridge.Contract.BridgeTransactor.contract.Transact(opts, method, params...)
   395  }
   396  
   397  // Call invokes the (constant) contract method with params as input values and
   398  // sets the output to result. The result type might be a single field for simple
   399  // returns, a slice of interfaces for anonymous returns and a struct for named
   400  // returns.
   401  func (_Bridge *BridgeCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   402  	return _Bridge.Contract.contract.Call(opts, result, method, params...)
   403  }
   404  
   405  // Transfer initiates a plain transaction to move funds to the contract, calling
   406  // its default method if one is available.
   407  func (_Bridge *BridgeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   408  	return _Bridge.Contract.contract.Transfer(opts)
   409  }
   410  
   411  // Transact invokes the (paid) contract method with params as input values.
   412  func (_Bridge *BridgeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   413  	return _Bridge.Contract.contract.Transact(opts, method, params...)
   414  }
   415  
   416  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
   417  //
   418  // Solidity: function MAX_OPERATOR() view returns(uint64)
   419  func (_Bridge *BridgeCaller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) {
   420  	var (
   421  		ret0 = new(uint64)
   422  	)
   423  	out := ret0
   424  	err := _Bridge.contract.Call(opts, out, "MAX_OPERATOR")
   425  	return *ret0, err
   426  }
   427  
   428  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
   429  //
   430  // Solidity: function MAX_OPERATOR() view returns(uint64)
   431  func (_Bridge *BridgeSession) MAXOPERATOR() (uint64, error) {
   432  	return _Bridge.Contract.MAXOPERATOR(&_Bridge.CallOpts)
   433  }
   434  
   435  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
   436  //
   437  // Solidity: function MAX_OPERATOR() view returns(uint64)
   438  func (_Bridge *BridgeCallerSession) MAXOPERATOR() (uint64, error) {
   439  	return _Bridge.Contract.MAXOPERATOR(&_Bridge.CallOpts)
   440  }
   441  
   442  // VERSION is a free data retrieval call binding the contract method 0xffa1ad74.
   443  //
   444  // Solidity: function VERSION() view returns(uint64)
   445  func (_Bridge *BridgeCaller) VERSION(opts *bind.CallOpts) (uint64, error) {
   446  	var (
   447  		ret0 = new(uint64)
   448  	)
   449  	out := ret0
   450  	err := _Bridge.contract.Call(opts, out, "VERSION")
   451  	return *ret0, err
   452  }
   453  
   454  // VERSION is a free data retrieval call binding the contract method 0xffa1ad74.
   455  //
   456  // Solidity: function VERSION() view returns(uint64)
   457  func (_Bridge *BridgeSession) VERSION() (uint64, error) {
   458  	return _Bridge.Contract.VERSION(&_Bridge.CallOpts)
   459  }
   460  
   461  // VERSION is a free data retrieval call binding the contract method 0xffa1ad74.
   462  //
   463  // Solidity: function VERSION() view returns(uint64)
   464  func (_Bridge *BridgeCallerSession) VERSION() (uint64, error) {
   465  	return _Bridge.Contract.VERSION(&_Bridge.CallOpts)
   466  }
   467  
   468  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
   469  //
   470  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
   471  func (_Bridge *BridgeCaller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) {
   472  	var (
   473  		ret0 = new(bool)
   474  	)
   475  	out := ret0
   476  	err := _Bridge.contract.Call(opts, out, "closedValueTransferVotes", arg0)
   477  	return *ret0, err
   478  }
   479  
   480  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
   481  //
   482  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
   483  func (_Bridge *BridgeSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) {
   484  	return _Bridge.Contract.ClosedValueTransferVotes(&_Bridge.CallOpts, arg0)
   485  }
   486  
   487  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
   488  //
   489  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
   490  func (_Bridge *BridgeCallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) {
   491  	return _Bridge.Contract.ClosedValueTransferVotes(&_Bridge.CallOpts, arg0)
   492  }
   493  
   494  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
   495  //
   496  // Solidity: function configurationNonce() view returns(uint64)
   497  func (_Bridge *BridgeCaller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) {
   498  	var (
   499  		ret0 = new(uint64)
   500  	)
   501  	out := ret0
   502  	err := _Bridge.contract.Call(opts, out, "configurationNonce")
   503  	return *ret0, err
   504  }
   505  
   506  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
   507  //
   508  // Solidity: function configurationNonce() view returns(uint64)
   509  func (_Bridge *BridgeSession) ConfigurationNonce() (uint64, error) {
   510  	return _Bridge.Contract.ConfigurationNonce(&_Bridge.CallOpts)
   511  }
   512  
   513  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
   514  //
   515  // Solidity: function configurationNonce() view returns(uint64)
   516  func (_Bridge *BridgeCallerSession) ConfigurationNonce() (uint64, error) {
   517  	return _Bridge.Contract.ConfigurationNonce(&_Bridge.CallOpts)
   518  }
   519  
   520  // CounterpartBridge is a free data retrieval call binding the contract method 0x3a348533.
   521  //
   522  // Solidity: function counterpartBridge() view returns(address)
   523  func (_Bridge *BridgeCaller) CounterpartBridge(opts *bind.CallOpts) (common.Address, error) {
   524  	var (
   525  		ret0 = new(common.Address)
   526  	)
   527  	out := ret0
   528  	err := _Bridge.contract.Call(opts, out, "counterpartBridge")
   529  	return *ret0, err
   530  }
   531  
   532  // CounterpartBridge is a free data retrieval call binding the contract method 0x3a348533.
   533  //
   534  // Solidity: function counterpartBridge() view returns(address)
   535  func (_Bridge *BridgeSession) CounterpartBridge() (common.Address, error) {
   536  	return _Bridge.Contract.CounterpartBridge(&_Bridge.CallOpts)
   537  }
   538  
   539  // CounterpartBridge is a free data retrieval call binding the contract method 0x3a348533.
   540  //
   541  // Solidity: function counterpartBridge() view returns(address)
   542  func (_Bridge *BridgeCallerSession) CounterpartBridge() (common.Address, error) {
   543  	return _Bridge.Contract.CounterpartBridge(&_Bridge.CallOpts)
   544  }
   545  
   546  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
   547  //
   548  // Solidity: function feeOfERC20(address ) view returns(uint256)
   549  func (_Bridge *BridgeCaller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
   550  	var (
   551  		ret0 = new(*big.Int)
   552  	)
   553  	out := ret0
   554  	err := _Bridge.contract.Call(opts, out, "feeOfERC20", arg0)
   555  	return *ret0, err
   556  }
   557  
   558  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
   559  //
   560  // Solidity: function feeOfERC20(address ) view returns(uint256)
   561  func (_Bridge *BridgeSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) {
   562  	return _Bridge.Contract.FeeOfERC20(&_Bridge.CallOpts, arg0)
   563  }
   564  
   565  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
   566  //
   567  // Solidity: function feeOfERC20(address ) view returns(uint256)
   568  func (_Bridge *BridgeCallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) {
   569  	return _Bridge.Contract.FeeOfERC20(&_Bridge.CallOpts, arg0)
   570  }
   571  
   572  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
   573  //
   574  // Solidity: function feeOfKLAY() view returns(uint256)
   575  func (_Bridge *BridgeCaller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) {
   576  	var (
   577  		ret0 = new(*big.Int)
   578  	)
   579  	out := ret0
   580  	err := _Bridge.contract.Call(opts, out, "feeOfKLAY")
   581  	return *ret0, err
   582  }
   583  
   584  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
   585  //
   586  // Solidity: function feeOfKLAY() view returns(uint256)
   587  func (_Bridge *BridgeSession) FeeOfKLAY() (*big.Int, error) {
   588  	return _Bridge.Contract.FeeOfKLAY(&_Bridge.CallOpts)
   589  }
   590  
   591  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
   592  //
   593  // Solidity: function feeOfKLAY() view returns(uint256)
   594  func (_Bridge *BridgeCallerSession) FeeOfKLAY() (*big.Int, error) {
   595  	return _Bridge.Contract.FeeOfKLAY(&_Bridge.CallOpts)
   596  }
   597  
   598  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
   599  //
   600  // Solidity: function feeReceiver() view returns(address)
   601  func (_Bridge *BridgeCaller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) {
   602  	var (
   603  		ret0 = new(common.Address)
   604  	)
   605  	out := ret0
   606  	err := _Bridge.contract.Call(opts, out, "feeReceiver")
   607  	return *ret0, err
   608  }
   609  
   610  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
   611  //
   612  // Solidity: function feeReceiver() view returns(address)
   613  func (_Bridge *BridgeSession) FeeReceiver() (common.Address, error) {
   614  	return _Bridge.Contract.FeeReceiver(&_Bridge.CallOpts)
   615  }
   616  
   617  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
   618  //
   619  // Solidity: function feeReceiver() view returns(address)
   620  func (_Bridge *BridgeCallerSession) FeeReceiver() (common.Address, error) {
   621  	return _Bridge.Contract.FeeReceiver(&_Bridge.CallOpts)
   622  }
   623  
   624  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
   625  //
   626  // Solidity: function getOperatorList() view returns(address[])
   627  func (_Bridge *BridgeCaller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) {
   628  	var (
   629  		ret0 = new([]common.Address)
   630  	)
   631  	out := ret0
   632  	err := _Bridge.contract.Call(opts, out, "getOperatorList")
   633  	return *ret0, err
   634  }
   635  
   636  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
   637  //
   638  // Solidity: function getOperatorList() view returns(address[])
   639  func (_Bridge *BridgeSession) GetOperatorList() ([]common.Address, error) {
   640  	return _Bridge.Contract.GetOperatorList(&_Bridge.CallOpts)
   641  }
   642  
   643  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
   644  //
   645  // Solidity: function getOperatorList() view returns(address[])
   646  func (_Bridge *BridgeCallerSession) GetOperatorList() ([]common.Address, error) {
   647  	return _Bridge.Contract.GetOperatorList(&_Bridge.CallOpts)
   648  }
   649  
   650  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
   651  //
   652  // Solidity: function getRegisteredTokenList() view returns(address[])
   653  func (_Bridge *BridgeCaller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) {
   654  	var (
   655  		ret0 = new([]common.Address)
   656  	)
   657  	out := ret0
   658  	err := _Bridge.contract.Call(opts, out, "getRegisteredTokenList")
   659  	return *ret0, err
   660  }
   661  
   662  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
   663  //
   664  // Solidity: function getRegisteredTokenList() view returns(address[])
   665  func (_Bridge *BridgeSession) GetRegisteredTokenList() ([]common.Address, error) {
   666  	return _Bridge.Contract.GetRegisteredTokenList(&_Bridge.CallOpts)
   667  }
   668  
   669  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
   670  //
   671  // Solidity: function getRegisteredTokenList() view returns(address[])
   672  func (_Bridge *BridgeCallerSession) GetRegisteredTokenList() ([]common.Address, error) {
   673  	return _Bridge.Contract.GetRegisteredTokenList(&_Bridge.CallOpts)
   674  }
   675  
   676  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
   677  //
   678  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
   679  func (_Bridge *BridgeCaller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) {
   680  	var (
   681  		ret0 = new(uint64)
   682  	)
   683  	out := ret0
   684  	err := _Bridge.contract.Call(opts, out, "handleNoncesToBlockNums", arg0)
   685  	return *ret0, err
   686  }
   687  
   688  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
   689  //
   690  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
   691  func (_Bridge *BridgeSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) {
   692  	return _Bridge.Contract.HandleNoncesToBlockNums(&_Bridge.CallOpts, arg0)
   693  }
   694  
   695  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
   696  //
   697  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
   698  func (_Bridge *BridgeCallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) {
   699  	return _Bridge.Contract.HandleNoncesToBlockNums(&_Bridge.CallOpts, arg0)
   700  }
   701  
   702  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
   703  //
   704  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
   705  func (_Bridge *BridgeCaller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) {
   706  	var (
   707  		ret0 = new(bool)
   708  	)
   709  	out := ret0
   710  	err := _Bridge.contract.Call(opts, out, "handledRequestTx", arg0)
   711  	return *ret0, err
   712  }
   713  
   714  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
   715  //
   716  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
   717  func (_Bridge *BridgeSession) HandledRequestTx(arg0 [32]byte) (bool, error) {
   718  	return _Bridge.Contract.HandledRequestTx(&_Bridge.CallOpts, arg0)
   719  }
   720  
   721  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
   722  //
   723  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
   724  func (_Bridge *BridgeCallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) {
   725  	return _Bridge.Contract.HandledRequestTx(&_Bridge.CallOpts, arg0)
   726  }
   727  
   728  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
   729  //
   730  // Solidity: function indexOfTokens(address ) view returns(uint256)
   731  func (_Bridge *BridgeCaller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
   732  	var (
   733  		ret0 = new(*big.Int)
   734  	)
   735  	out := ret0
   736  	err := _Bridge.contract.Call(opts, out, "indexOfTokens", arg0)
   737  	return *ret0, err
   738  }
   739  
   740  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
   741  //
   742  // Solidity: function indexOfTokens(address ) view returns(uint256)
   743  func (_Bridge *BridgeSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) {
   744  	return _Bridge.Contract.IndexOfTokens(&_Bridge.CallOpts, arg0)
   745  }
   746  
   747  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
   748  //
   749  // Solidity: function indexOfTokens(address ) view returns(uint256)
   750  func (_Bridge *BridgeCallerSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) {
   751  	return _Bridge.Contract.IndexOfTokens(&_Bridge.CallOpts, arg0)
   752  }
   753  
   754  // IsLockedKLAY is a free data retrieval call binding the contract method 0xf1719966.
   755  //
   756  // Solidity: function isLockedKLAY() view returns(bool)
   757  func (_Bridge *BridgeCaller) IsLockedKLAY(opts *bind.CallOpts) (bool, error) {
   758  	var (
   759  		ret0 = new(bool)
   760  	)
   761  	out := ret0
   762  	err := _Bridge.contract.Call(opts, out, "isLockedKLAY")
   763  	return *ret0, err
   764  }
   765  
   766  // IsLockedKLAY is a free data retrieval call binding the contract method 0xf1719966.
   767  //
   768  // Solidity: function isLockedKLAY() view returns(bool)
   769  func (_Bridge *BridgeSession) IsLockedKLAY() (bool, error) {
   770  	return _Bridge.Contract.IsLockedKLAY(&_Bridge.CallOpts)
   771  }
   772  
   773  // IsLockedKLAY is a free data retrieval call binding the contract method 0xf1719966.
   774  //
   775  // Solidity: function isLockedKLAY() view returns(bool)
   776  func (_Bridge *BridgeCallerSession) IsLockedKLAY() (bool, error) {
   777  	return _Bridge.Contract.IsLockedKLAY(&_Bridge.CallOpts)
   778  }
   779  
   780  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
   781  //
   782  // Solidity: function isOwner() view returns(bool)
   783  func (_Bridge *BridgeCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
   784  	var (
   785  		ret0 = new(bool)
   786  	)
   787  	out := ret0
   788  	err := _Bridge.contract.Call(opts, out, "isOwner")
   789  	return *ret0, err
   790  }
   791  
   792  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
   793  //
   794  // Solidity: function isOwner() view returns(bool)
   795  func (_Bridge *BridgeSession) IsOwner() (bool, error) {
   796  	return _Bridge.Contract.IsOwner(&_Bridge.CallOpts)
   797  }
   798  
   799  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
   800  //
   801  // Solidity: function isOwner() view returns(bool)
   802  func (_Bridge *BridgeCallerSession) IsOwner() (bool, error) {
   803  	return _Bridge.Contract.IsOwner(&_Bridge.CallOpts)
   804  }
   805  
   806  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
   807  //
   808  // Solidity: function isRunning() view returns(bool)
   809  func (_Bridge *BridgeCaller) IsRunning(opts *bind.CallOpts) (bool, error) {
   810  	var (
   811  		ret0 = new(bool)
   812  	)
   813  	out := ret0
   814  	err := _Bridge.contract.Call(opts, out, "isRunning")
   815  	return *ret0, err
   816  }
   817  
   818  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
   819  //
   820  // Solidity: function isRunning() view returns(bool)
   821  func (_Bridge *BridgeSession) IsRunning() (bool, error) {
   822  	return _Bridge.Contract.IsRunning(&_Bridge.CallOpts)
   823  }
   824  
   825  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
   826  //
   827  // Solidity: function isRunning() view returns(bool)
   828  func (_Bridge *BridgeCallerSession) IsRunning() (bool, error) {
   829  	return _Bridge.Contract.IsRunning(&_Bridge.CallOpts)
   830  }
   831  
   832  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
   833  //
   834  // Solidity: function lockedTokens(address ) view returns(bool)
   835  func (_Bridge *BridgeCaller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
   836  	var (
   837  		ret0 = new(bool)
   838  	)
   839  	out := ret0
   840  	err := _Bridge.contract.Call(opts, out, "lockedTokens", arg0)
   841  	return *ret0, err
   842  }
   843  
   844  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
   845  //
   846  // Solidity: function lockedTokens(address ) view returns(bool)
   847  func (_Bridge *BridgeSession) LockedTokens(arg0 common.Address) (bool, error) {
   848  	return _Bridge.Contract.LockedTokens(&_Bridge.CallOpts, arg0)
   849  }
   850  
   851  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
   852  //
   853  // Solidity: function lockedTokens(address ) view returns(bool)
   854  func (_Bridge *BridgeCallerSession) LockedTokens(arg0 common.Address) (bool, error) {
   855  	return _Bridge.Contract.LockedTokens(&_Bridge.CallOpts, arg0)
   856  }
   857  
   858  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
   859  //
   860  // Solidity: function lowerHandleNonce() view returns(uint64)
   861  func (_Bridge *BridgeCaller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) {
   862  	var (
   863  		ret0 = new(uint64)
   864  	)
   865  	out := ret0
   866  	err := _Bridge.contract.Call(opts, out, "lowerHandleNonce")
   867  	return *ret0, err
   868  }
   869  
   870  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
   871  //
   872  // Solidity: function lowerHandleNonce() view returns(uint64)
   873  func (_Bridge *BridgeSession) LowerHandleNonce() (uint64, error) {
   874  	return _Bridge.Contract.LowerHandleNonce(&_Bridge.CallOpts)
   875  }
   876  
   877  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
   878  //
   879  // Solidity: function lowerHandleNonce() view returns(uint64)
   880  func (_Bridge *BridgeCallerSession) LowerHandleNonce() (uint64, error) {
   881  	return _Bridge.Contract.LowerHandleNonce(&_Bridge.CallOpts)
   882  }
   883  
   884  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
   885  //
   886  // Solidity: function modeMintBurn() view returns(bool)
   887  func (_Bridge *BridgeCaller) ModeMintBurn(opts *bind.CallOpts) (bool, error) {
   888  	var (
   889  		ret0 = new(bool)
   890  	)
   891  	out := ret0
   892  	err := _Bridge.contract.Call(opts, out, "modeMintBurn")
   893  	return *ret0, err
   894  }
   895  
   896  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
   897  //
   898  // Solidity: function modeMintBurn() view returns(bool)
   899  func (_Bridge *BridgeSession) ModeMintBurn() (bool, error) {
   900  	return _Bridge.Contract.ModeMintBurn(&_Bridge.CallOpts)
   901  }
   902  
   903  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
   904  //
   905  // Solidity: function modeMintBurn() view returns(bool)
   906  func (_Bridge *BridgeCallerSession) ModeMintBurn() (bool, error) {
   907  	return _Bridge.Contract.ModeMintBurn(&_Bridge.CallOpts)
   908  }
   909  
   910  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
   911  //
   912  // Solidity: function operatorList(uint256 ) view returns(address)
   913  func (_Bridge *BridgeCaller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
   914  	var (
   915  		ret0 = new(common.Address)
   916  	)
   917  	out := ret0
   918  	err := _Bridge.contract.Call(opts, out, "operatorList", arg0)
   919  	return *ret0, err
   920  }
   921  
   922  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
   923  //
   924  // Solidity: function operatorList(uint256 ) view returns(address)
   925  func (_Bridge *BridgeSession) OperatorList(arg0 *big.Int) (common.Address, error) {
   926  	return _Bridge.Contract.OperatorList(&_Bridge.CallOpts, arg0)
   927  }
   928  
   929  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
   930  //
   931  // Solidity: function operatorList(uint256 ) view returns(address)
   932  func (_Bridge *BridgeCallerSession) OperatorList(arg0 *big.Int) (common.Address, error) {
   933  	return _Bridge.Contract.OperatorList(&_Bridge.CallOpts, arg0)
   934  }
   935  
   936  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
   937  //
   938  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
   939  func (_Bridge *BridgeCaller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) {
   940  	var (
   941  		ret0 = new(uint8)
   942  	)
   943  	out := ret0
   944  	err := _Bridge.contract.Call(opts, out, "operatorThresholds", arg0)
   945  	return *ret0, err
   946  }
   947  
   948  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
   949  //
   950  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
   951  func (_Bridge *BridgeSession) OperatorThresholds(arg0 uint8) (uint8, error) {
   952  	return _Bridge.Contract.OperatorThresholds(&_Bridge.CallOpts, arg0)
   953  }
   954  
   955  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
   956  //
   957  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
   958  func (_Bridge *BridgeCallerSession) OperatorThresholds(arg0 uint8) (uint8, error) {
   959  	return _Bridge.Contract.OperatorThresholds(&_Bridge.CallOpts, arg0)
   960  }
   961  
   962  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
   963  //
   964  // Solidity: function operators(address ) view returns(bool)
   965  func (_Bridge *BridgeCaller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
   966  	var (
   967  		ret0 = new(bool)
   968  	)
   969  	out := ret0
   970  	err := _Bridge.contract.Call(opts, out, "operators", arg0)
   971  	return *ret0, err
   972  }
   973  
   974  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
   975  //
   976  // Solidity: function operators(address ) view returns(bool)
   977  func (_Bridge *BridgeSession) Operators(arg0 common.Address) (bool, error) {
   978  	return _Bridge.Contract.Operators(&_Bridge.CallOpts, arg0)
   979  }
   980  
   981  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
   982  //
   983  // Solidity: function operators(address ) view returns(bool)
   984  func (_Bridge *BridgeCallerSession) Operators(arg0 common.Address) (bool, error) {
   985  	return _Bridge.Contract.Operators(&_Bridge.CallOpts, arg0)
   986  }
   987  
   988  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
   989  //
   990  // Solidity: function owner() view returns(address)
   991  func (_Bridge *BridgeCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
   992  	var (
   993  		ret0 = new(common.Address)
   994  	)
   995  	out := ret0
   996  	err := _Bridge.contract.Call(opts, out, "owner")
   997  	return *ret0, err
   998  }
   999  
  1000  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  1001  //
  1002  // Solidity: function owner() view returns(address)
  1003  func (_Bridge *BridgeSession) Owner() (common.Address, error) {
  1004  	return _Bridge.Contract.Owner(&_Bridge.CallOpts)
  1005  }
  1006  
  1007  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  1008  //
  1009  // Solidity: function owner() view returns(address)
  1010  func (_Bridge *BridgeCallerSession) Owner() (common.Address, error) {
  1011  	return _Bridge.Contract.Owner(&_Bridge.CallOpts)
  1012  }
  1013  
  1014  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
  1015  //
  1016  // Solidity: function recoveryBlockNumber() view returns(uint64)
  1017  func (_Bridge *BridgeCaller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) {
  1018  	var (
  1019  		ret0 = new(uint64)
  1020  	)
  1021  	out := ret0
  1022  	err := _Bridge.contract.Call(opts, out, "recoveryBlockNumber")
  1023  	return *ret0, err
  1024  }
  1025  
  1026  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
  1027  //
  1028  // Solidity: function recoveryBlockNumber() view returns(uint64)
  1029  func (_Bridge *BridgeSession) RecoveryBlockNumber() (uint64, error) {
  1030  	return _Bridge.Contract.RecoveryBlockNumber(&_Bridge.CallOpts)
  1031  }
  1032  
  1033  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
  1034  //
  1035  // Solidity: function recoveryBlockNumber() view returns(uint64)
  1036  func (_Bridge *BridgeCallerSession) RecoveryBlockNumber() (uint64, error) {
  1037  	return _Bridge.Contract.RecoveryBlockNumber(&_Bridge.CallOpts)
  1038  }
  1039  
  1040  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
  1041  //
  1042  // Solidity: function registeredTokenList(uint256 ) view returns(address)
  1043  func (_Bridge *BridgeCaller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
  1044  	var (
  1045  		ret0 = new(common.Address)
  1046  	)
  1047  	out := ret0
  1048  	err := _Bridge.contract.Call(opts, out, "registeredTokenList", arg0)
  1049  	return *ret0, err
  1050  }
  1051  
  1052  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
  1053  //
  1054  // Solidity: function registeredTokenList(uint256 ) view returns(address)
  1055  func (_Bridge *BridgeSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) {
  1056  	return _Bridge.Contract.RegisteredTokenList(&_Bridge.CallOpts, arg0)
  1057  }
  1058  
  1059  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
  1060  //
  1061  // Solidity: function registeredTokenList(uint256 ) view returns(address)
  1062  func (_Bridge *BridgeCallerSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) {
  1063  	return _Bridge.Contract.RegisteredTokenList(&_Bridge.CallOpts, arg0)
  1064  }
  1065  
  1066  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
  1067  //
  1068  // Solidity: function registeredTokens(address ) view returns(address)
  1069  func (_Bridge *BridgeCaller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) {
  1070  	var (
  1071  		ret0 = new(common.Address)
  1072  	)
  1073  	out := ret0
  1074  	err := _Bridge.contract.Call(opts, out, "registeredTokens", arg0)
  1075  	return *ret0, err
  1076  }
  1077  
  1078  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
  1079  //
  1080  // Solidity: function registeredTokens(address ) view returns(address)
  1081  func (_Bridge *BridgeSession) RegisteredTokens(arg0 common.Address) (common.Address, error) {
  1082  	return _Bridge.Contract.RegisteredTokens(&_Bridge.CallOpts, arg0)
  1083  }
  1084  
  1085  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
  1086  //
  1087  // Solidity: function registeredTokens(address ) view returns(address)
  1088  func (_Bridge *BridgeCallerSession) RegisteredTokens(arg0 common.Address) (common.Address, error) {
  1089  	return _Bridge.Contract.RegisteredTokens(&_Bridge.CallOpts, arg0)
  1090  }
  1091  
  1092  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
  1093  //
  1094  // Solidity: function requestNonce() view returns(uint64)
  1095  func (_Bridge *BridgeCaller) RequestNonce(opts *bind.CallOpts) (uint64, error) {
  1096  	var (
  1097  		ret0 = new(uint64)
  1098  	)
  1099  	out := ret0
  1100  	err := _Bridge.contract.Call(opts, out, "requestNonce")
  1101  	return *ret0, err
  1102  }
  1103  
  1104  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
  1105  //
  1106  // Solidity: function requestNonce() view returns(uint64)
  1107  func (_Bridge *BridgeSession) RequestNonce() (uint64, error) {
  1108  	return _Bridge.Contract.RequestNonce(&_Bridge.CallOpts)
  1109  }
  1110  
  1111  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
  1112  //
  1113  // Solidity: function requestNonce() view returns(uint64)
  1114  func (_Bridge *BridgeCallerSession) RequestNonce() (uint64, error) {
  1115  	return _Bridge.Contract.RequestNonce(&_Bridge.CallOpts)
  1116  }
  1117  
  1118  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
  1119  //
  1120  // Solidity: function upperHandleNonce() view returns(uint64)
  1121  func (_Bridge *BridgeCaller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) {
  1122  	var (
  1123  		ret0 = new(uint64)
  1124  	)
  1125  	out := ret0
  1126  	err := _Bridge.contract.Call(opts, out, "upperHandleNonce")
  1127  	return *ret0, err
  1128  }
  1129  
  1130  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
  1131  //
  1132  // Solidity: function upperHandleNonce() view returns(uint64)
  1133  func (_Bridge *BridgeSession) UpperHandleNonce() (uint64, error) {
  1134  	return _Bridge.Contract.UpperHandleNonce(&_Bridge.CallOpts)
  1135  }
  1136  
  1137  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
  1138  //
  1139  // Solidity: function upperHandleNonce() view returns(uint64)
  1140  func (_Bridge *BridgeCallerSession) UpperHandleNonce() (uint64, error) {
  1141  	return _Bridge.Contract.UpperHandleNonce(&_Bridge.CallOpts)
  1142  }
  1143  
  1144  // ChargeWithoutEvent is a paid mutator transaction binding the contract method 0xdd9222d6.
  1145  //
  1146  // Solidity: function chargeWithoutEvent() payable returns()
  1147  func (_Bridge *BridgeTransactor) ChargeWithoutEvent(opts *bind.TransactOpts) (*types.Transaction, error) {
  1148  	return _Bridge.contract.Transact(opts, "chargeWithoutEvent")
  1149  }
  1150  
  1151  // ChargeWithoutEvent is a paid mutator transaction binding the contract method 0xdd9222d6.
  1152  //
  1153  // Solidity: function chargeWithoutEvent() payable returns()
  1154  func (_Bridge *BridgeSession) ChargeWithoutEvent() (*types.Transaction, error) {
  1155  	return _Bridge.Contract.ChargeWithoutEvent(&_Bridge.TransactOpts)
  1156  }
  1157  
  1158  // ChargeWithoutEvent is a paid mutator transaction binding the contract method 0xdd9222d6.
  1159  //
  1160  // Solidity: function chargeWithoutEvent() payable returns()
  1161  func (_Bridge *BridgeTransactorSession) ChargeWithoutEvent() (*types.Transaction, error) {
  1162  	return _Bridge.Contract.ChargeWithoutEvent(&_Bridge.TransactOpts)
  1163  }
  1164  
  1165  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  1166  //
  1167  // Solidity: function deregisterOperator(address _operator) returns()
  1168  func (_Bridge *BridgeTransactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
  1169  	return _Bridge.contract.Transact(opts, "deregisterOperator", _operator)
  1170  }
  1171  
  1172  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  1173  //
  1174  // Solidity: function deregisterOperator(address _operator) returns()
  1175  func (_Bridge *BridgeSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) {
  1176  	return _Bridge.Contract.DeregisterOperator(&_Bridge.TransactOpts, _operator)
  1177  }
  1178  
  1179  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  1180  //
  1181  // Solidity: function deregisterOperator(address _operator) returns()
  1182  func (_Bridge *BridgeTransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) {
  1183  	return _Bridge.Contract.DeregisterOperator(&_Bridge.TransactOpts, _operator)
  1184  }
  1185  
  1186  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
  1187  //
  1188  // Solidity: function deregisterToken(address _token) returns()
  1189  func (_Bridge *BridgeTransactor) DeregisterToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
  1190  	return _Bridge.contract.Transact(opts, "deregisterToken", _token)
  1191  }
  1192  
  1193  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
  1194  //
  1195  // Solidity: function deregisterToken(address _token) returns()
  1196  func (_Bridge *BridgeSession) DeregisterToken(_token common.Address) (*types.Transaction, error) {
  1197  	return _Bridge.Contract.DeregisterToken(&_Bridge.TransactOpts, _token)
  1198  }
  1199  
  1200  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
  1201  //
  1202  // Solidity: function deregisterToken(address _token) returns()
  1203  func (_Bridge *BridgeTransactorSession) DeregisterToken(_token common.Address) (*types.Transaction, error) {
  1204  	return _Bridge.Contract.DeregisterToken(&_Bridge.TransactOpts, _token)
  1205  }
  1206  
  1207  // HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae.
  1208  //
  1209  // Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns()
  1210  func (_Bridge *BridgeTransactor) HandleERC20Transfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) {
  1211  	return _Bridge.contract.Transact(opts, "handleERC20Transfer", _requestTxHash, _from, _to, _tokenAddress, _value, _requestedNonce, _requestedBlockNumber, _extraData)
  1212  }
  1213  
  1214  // HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae.
  1215  //
  1216  // Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns()
  1217  func (_Bridge *BridgeSession) HandleERC20Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) {
  1218  	return _Bridge.Contract.HandleERC20Transfer(&_Bridge.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _value, _requestedNonce, _requestedBlockNumber, _extraData)
  1219  }
  1220  
  1221  // HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae.
  1222  //
  1223  // Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns()
  1224  func (_Bridge *BridgeTransactorSession) HandleERC20Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) {
  1225  	return _Bridge.Contract.HandleERC20Transfer(&_Bridge.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _value, _requestedNonce, _requestedBlockNumber, _extraData)
  1226  }
  1227  
  1228  // HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223.
  1229  //
  1230  // Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestedNonce, uint64 _requestedBlockNumber, string _tokenURI, bytes _extraData) returns()
  1231  func (_Bridge *BridgeTransactor) HandleERC721Transfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) {
  1232  	return _Bridge.contract.Transact(opts, "handleERC721Transfer", _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestedNonce, _requestedBlockNumber, _tokenURI, _extraData)
  1233  }
  1234  
  1235  // HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223.
  1236  //
  1237  // Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestedNonce, uint64 _requestedBlockNumber, string _tokenURI, bytes _extraData) returns()
  1238  func (_Bridge *BridgeSession) HandleERC721Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) {
  1239  	return _Bridge.Contract.HandleERC721Transfer(&_Bridge.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestedNonce, _requestedBlockNumber, _tokenURI, _extraData)
  1240  }
  1241  
  1242  // HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223.
  1243  //
  1244  // Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestedNonce, uint64 _requestedBlockNumber, string _tokenURI, bytes _extraData) returns()
  1245  func (_Bridge *BridgeTransactorSession) HandleERC721Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) {
  1246  	return _Bridge.Contract.HandleERC721Transfer(&_Bridge.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestedNonce, _requestedBlockNumber, _tokenURI, _extraData)
  1247  }
  1248  
  1249  // HandleKLAYTransfer is a paid mutator transaction binding the contract method 0xa066a7ed.
  1250  //
  1251  // Solidity: function handleKLAYTransfer(bytes32 _requestTxHash, address _from, address _to, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns()
  1252  func (_Bridge *BridgeTransactor) HandleKLAYTransfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) {
  1253  	return _Bridge.contract.Transact(opts, "handleKLAYTransfer", _requestTxHash, _from, _to, _value, _requestedNonce, _requestedBlockNumber, _extraData)
  1254  }
  1255  
  1256  // HandleKLAYTransfer is a paid mutator transaction binding the contract method 0xa066a7ed.
  1257  //
  1258  // Solidity: function handleKLAYTransfer(bytes32 _requestTxHash, address _from, address _to, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns()
  1259  func (_Bridge *BridgeSession) HandleKLAYTransfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) {
  1260  	return _Bridge.Contract.HandleKLAYTransfer(&_Bridge.TransactOpts, _requestTxHash, _from, _to, _value, _requestedNonce, _requestedBlockNumber, _extraData)
  1261  }
  1262  
  1263  // HandleKLAYTransfer is a paid mutator transaction binding the contract method 0xa066a7ed.
  1264  //
  1265  // Solidity: function handleKLAYTransfer(bytes32 _requestTxHash, address _from, address _to, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns()
  1266  func (_Bridge *BridgeTransactorSession) HandleKLAYTransfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) {
  1267  	return _Bridge.Contract.HandleKLAYTransfer(&_Bridge.TransactOpts, _requestTxHash, _from, _to, _value, _requestedNonce, _requestedBlockNumber, _extraData)
  1268  }
  1269  
  1270  // LockKLAY is a paid mutator transaction binding the contract method 0x9f071329.
  1271  //
  1272  // Solidity: function lockKLAY() returns()
  1273  func (_Bridge *BridgeTransactor) LockKLAY(opts *bind.TransactOpts) (*types.Transaction, error) {
  1274  	return _Bridge.contract.Transact(opts, "lockKLAY")
  1275  }
  1276  
  1277  // LockKLAY is a paid mutator transaction binding the contract method 0x9f071329.
  1278  //
  1279  // Solidity: function lockKLAY() returns()
  1280  func (_Bridge *BridgeSession) LockKLAY() (*types.Transaction, error) {
  1281  	return _Bridge.Contract.LockKLAY(&_Bridge.TransactOpts)
  1282  }
  1283  
  1284  // LockKLAY is a paid mutator transaction binding the contract method 0x9f071329.
  1285  //
  1286  // Solidity: function lockKLAY() returns()
  1287  func (_Bridge *BridgeTransactorSession) LockKLAY() (*types.Transaction, error) {
  1288  	return _Bridge.Contract.LockKLAY(&_Bridge.TransactOpts)
  1289  }
  1290  
  1291  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
  1292  //
  1293  // Solidity: function lockToken(address _token) returns()
  1294  func (_Bridge *BridgeTransactor) LockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
  1295  	return _Bridge.contract.Transact(opts, "lockToken", _token)
  1296  }
  1297  
  1298  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
  1299  //
  1300  // Solidity: function lockToken(address _token) returns()
  1301  func (_Bridge *BridgeSession) LockToken(_token common.Address) (*types.Transaction, error) {
  1302  	return _Bridge.Contract.LockToken(&_Bridge.TransactOpts, _token)
  1303  }
  1304  
  1305  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
  1306  //
  1307  // Solidity: function lockToken(address _token) returns()
  1308  func (_Bridge *BridgeTransactorSession) LockToken(_token common.Address) (*types.Transaction, error) {
  1309  	return _Bridge.Contract.LockToken(&_Bridge.TransactOpts, _token)
  1310  }
  1311  
  1312  // OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53.
  1313  //
  1314  // Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
  1315  func (_Bridge *BridgeTransactor) OnERC20Received(opts *bind.TransactOpts, _from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  1316  	return _Bridge.contract.Transact(opts, "onERC20Received", _from, _to, _value, _feeLimit, _extraData)
  1317  }
  1318  
  1319  // OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53.
  1320  //
  1321  // Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
  1322  func (_Bridge *BridgeSession) OnERC20Received(_from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  1323  	return _Bridge.Contract.OnERC20Received(&_Bridge.TransactOpts, _from, _to, _value, _feeLimit, _extraData)
  1324  }
  1325  
  1326  // OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53.
  1327  //
  1328  // Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
  1329  func (_Bridge *BridgeTransactorSession) OnERC20Received(_from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  1330  	return _Bridge.Contract.OnERC20Received(&_Bridge.TransactOpts, _from, _to, _value, _feeLimit, _extraData)
  1331  }
  1332  
  1333  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
  1334  //
  1335  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
  1336  func (_Bridge *BridgeTransactor) OnERC721Received(opts *bind.TransactOpts, _from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  1337  	return _Bridge.contract.Transact(opts, "onERC721Received", _from, _tokenId, _to, _extraData)
  1338  }
  1339  
  1340  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
  1341  //
  1342  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
  1343  func (_Bridge *BridgeSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  1344  	return _Bridge.Contract.OnERC721Received(&_Bridge.TransactOpts, _from, _tokenId, _to, _extraData)
  1345  }
  1346  
  1347  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
  1348  //
  1349  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
  1350  func (_Bridge *BridgeTransactorSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  1351  	return _Bridge.Contract.OnERC721Received(&_Bridge.TransactOpts, _from, _tokenId, _to, _extraData)
  1352  }
  1353  
  1354  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  1355  //
  1356  // Solidity: function registerOperator(address _operator) returns()
  1357  func (_Bridge *BridgeTransactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
  1358  	return _Bridge.contract.Transact(opts, "registerOperator", _operator)
  1359  }
  1360  
  1361  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  1362  //
  1363  // Solidity: function registerOperator(address _operator) returns()
  1364  func (_Bridge *BridgeSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) {
  1365  	return _Bridge.Contract.RegisterOperator(&_Bridge.TransactOpts, _operator)
  1366  }
  1367  
  1368  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  1369  //
  1370  // Solidity: function registerOperator(address _operator) returns()
  1371  func (_Bridge *BridgeTransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) {
  1372  	return _Bridge.Contract.RegisterOperator(&_Bridge.TransactOpts, _operator)
  1373  }
  1374  
  1375  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
  1376  //
  1377  // Solidity: function registerToken(address _token, address _cToken) returns()
  1378  func (_Bridge *BridgeTransactor) RegisterToken(opts *bind.TransactOpts, _token common.Address, _cToken common.Address) (*types.Transaction, error) {
  1379  	return _Bridge.contract.Transact(opts, "registerToken", _token, _cToken)
  1380  }
  1381  
  1382  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
  1383  //
  1384  // Solidity: function registerToken(address _token, address _cToken) returns()
  1385  func (_Bridge *BridgeSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) {
  1386  	return _Bridge.Contract.RegisterToken(&_Bridge.TransactOpts, _token, _cToken)
  1387  }
  1388  
  1389  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
  1390  //
  1391  // Solidity: function registerToken(address _token, address _cToken) returns()
  1392  func (_Bridge *BridgeTransactorSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) {
  1393  	return _Bridge.Contract.RegisterToken(&_Bridge.TransactOpts, _token, _cToken)
  1394  }
  1395  
  1396  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  1397  //
  1398  // Solidity: function renounceOwnership() returns()
  1399  func (_Bridge *BridgeTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  1400  	return _Bridge.contract.Transact(opts, "renounceOwnership")
  1401  }
  1402  
  1403  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  1404  //
  1405  // Solidity: function renounceOwnership() returns()
  1406  func (_Bridge *BridgeSession) RenounceOwnership() (*types.Transaction, error) {
  1407  	return _Bridge.Contract.RenounceOwnership(&_Bridge.TransactOpts)
  1408  }
  1409  
  1410  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  1411  //
  1412  // Solidity: function renounceOwnership() returns()
  1413  func (_Bridge *BridgeTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  1414  	return _Bridge.Contract.RenounceOwnership(&_Bridge.TransactOpts)
  1415  }
  1416  
  1417  // RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54.
  1418  //
  1419  // Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
  1420  func (_Bridge *BridgeTransactor) RequestERC20Transfer(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  1421  	return _Bridge.contract.Transact(opts, "requestERC20Transfer", _tokenAddress, _to, _value, _feeLimit, _extraData)
  1422  }
  1423  
  1424  // RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54.
  1425  //
  1426  // Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
  1427  func (_Bridge *BridgeSession) RequestERC20Transfer(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  1428  	return _Bridge.Contract.RequestERC20Transfer(&_Bridge.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _extraData)
  1429  }
  1430  
  1431  // RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54.
  1432  //
  1433  // Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
  1434  func (_Bridge *BridgeTransactorSession) RequestERC20Transfer(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  1435  	return _Bridge.Contract.RequestERC20Transfer(&_Bridge.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _extraData)
  1436  }
  1437  
  1438  // RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742.
  1439  //
  1440  // Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns()
  1441  func (_Bridge *BridgeTransactor) RequestERC721Transfer(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) {
  1442  	return _Bridge.contract.Transact(opts, "requestERC721Transfer", _tokenAddress, _to, _tokenId, _extraData)
  1443  }
  1444  
  1445  // RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742.
  1446  //
  1447  // Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns()
  1448  func (_Bridge *BridgeSession) RequestERC721Transfer(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) {
  1449  	return _Bridge.Contract.RequestERC721Transfer(&_Bridge.TransactOpts, _tokenAddress, _to, _tokenId, _extraData)
  1450  }
  1451  
  1452  // RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742.
  1453  //
  1454  // Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns()
  1455  func (_Bridge *BridgeTransactorSession) RequestERC721Transfer(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) {
  1456  	return _Bridge.Contract.RequestERC721Transfer(&_Bridge.TransactOpts, _tokenAddress, _to, _tokenId, _extraData)
  1457  }
  1458  
  1459  // RequestKLAYTransfer is a paid mutator transaction binding the contract method 0x75ebdc09.
  1460  //
  1461  // Solidity: function requestKLAYTransfer(address _to, uint256 _value, bytes _extraData) payable returns()
  1462  func (_Bridge *BridgeTransactor) RequestKLAYTransfer(opts *bind.TransactOpts, _to common.Address, _value *big.Int, _extraData []byte) (*types.Transaction, error) {
  1463  	return _Bridge.contract.Transact(opts, "requestKLAYTransfer", _to, _value, _extraData)
  1464  }
  1465  
  1466  // RequestKLAYTransfer is a paid mutator transaction binding the contract method 0x75ebdc09.
  1467  //
  1468  // Solidity: function requestKLAYTransfer(address _to, uint256 _value, bytes _extraData) payable returns()
  1469  func (_Bridge *BridgeSession) RequestKLAYTransfer(_to common.Address, _value *big.Int, _extraData []byte) (*types.Transaction, error) {
  1470  	return _Bridge.Contract.RequestKLAYTransfer(&_Bridge.TransactOpts, _to, _value, _extraData)
  1471  }
  1472  
  1473  // RequestKLAYTransfer is a paid mutator transaction binding the contract method 0x75ebdc09.
  1474  //
  1475  // Solidity: function requestKLAYTransfer(address _to, uint256 _value, bytes _extraData) payable returns()
  1476  func (_Bridge *BridgeTransactorSession) RequestKLAYTransfer(_to common.Address, _value *big.Int, _extraData []byte) (*types.Transaction, error) {
  1477  	return _Bridge.Contract.RequestKLAYTransfer(&_Bridge.TransactOpts, _to, _value, _extraData)
  1478  }
  1479  
  1480  // SetCounterPartBridge is a paid mutator transaction binding the contract method 0x87b04c55.
  1481  //
  1482  // Solidity: function setCounterPartBridge(address _bridge) returns()
  1483  func (_Bridge *BridgeTransactor) SetCounterPartBridge(opts *bind.TransactOpts, _bridge common.Address) (*types.Transaction, error) {
  1484  	return _Bridge.contract.Transact(opts, "setCounterPartBridge", _bridge)
  1485  }
  1486  
  1487  // SetCounterPartBridge is a paid mutator transaction binding the contract method 0x87b04c55.
  1488  //
  1489  // Solidity: function setCounterPartBridge(address _bridge) returns()
  1490  func (_Bridge *BridgeSession) SetCounterPartBridge(_bridge common.Address) (*types.Transaction, error) {
  1491  	return _Bridge.Contract.SetCounterPartBridge(&_Bridge.TransactOpts, _bridge)
  1492  }
  1493  
  1494  // SetCounterPartBridge is a paid mutator transaction binding the contract method 0x87b04c55.
  1495  //
  1496  // Solidity: function setCounterPartBridge(address _bridge) returns()
  1497  func (_Bridge *BridgeTransactorSession) SetCounterPartBridge(_bridge common.Address) (*types.Transaction, error) {
  1498  	return _Bridge.Contract.SetCounterPartBridge(&_Bridge.TransactOpts, _bridge)
  1499  }
  1500  
  1501  // SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c.
  1502  //
  1503  // Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns()
  1504  func (_Bridge *BridgeTransactor) SetERC20Fee(opts *bind.TransactOpts, _token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) {
  1505  	return _Bridge.contract.Transact(opts, "setERC20Fee", _token, _fee, _requestNonce)
  1506  }
  1507  
  1508  // SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c.
  1509  //
  1510  // Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns()
  1511  func (_Bridge *BridgeSession) SetERC20Fee(_token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) {
  1512  	return _Bridge.Contract.SetERC20Fee(&_Bridge.TransactOpts, _token, _fee, _requestNonce)
  1513  }
  1514  
  1515  // SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c.
  1516  //
  1517  // Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns()
  1518  func (_Bridge *BridgeTransactorSession) SetERC20Fee(_token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) {
  1519  	return _Bridge.Contract.SetERC20Fee(&_Bridge.TransactOpts, _token, _fee, _requestNonce)
  1520  }
  1521  
  1522  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
  1523  //
  1524  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
  1525  func (_Bridge *BridgeTransactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) {
  1526  	return _Bridge.contract.Transact(opts, "setFeeReceiver", _feeReceiver)
  1527  }
  1528  
  1529  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
  1530  //
  1531  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
  1532  func (_Bridge *BridgeSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) {
  1533  	return _Bridge.Contract.SetFeeReceiver(&_Bridge.TransactOpts, _feeReceiver)
  1534  }
  1535  
  1536  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
  1537  //
  1538  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
  1539  func (_Bridge *BridgeTransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) {
  1540  	return _Bridge.Contract.SetFeeReceiver(&_Bridge.TransactOpts, _feeReceiver)
  1541  }
  1542  
  1543  // SetKLAYFee is a paid mutator transaction binding the contract method 0x1a2ae53e.
  1544  //
  1545  // Solidity: function setKLAYFee(uint256 _fee, uint64 _requestNonce) returns()
  1546  func (_Bridge *BridgeTransactor) SetKLAYFee(opts *bind.TransactOpts, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) {
  1547  	return _Bridge.contract.Transact(opts, "setKLAYFee", _fee, _requestNonce)
  1548  }
  1549  
  1550  // SetKLAYFee is a paid mutator transaction binding the contract method 0x1a2ae53e.
  1551  //
  1552  // Solidity: function setKLAYFee(uint256 _fee, uint64 _requestNonce) returns()
  1553  func (_Bridge *BridgeSession) SetKLAYFee(_fee *big.Int, _requestNonce uint64) (*types.Transaction, error) {
  1554  	return _Bridge.Contract.SetKLAYFee(&_Bridge.TransactOpts, _fee, _requestNonce)
  1555  }
  1556  
  1557  // SetKLAYFee is a paid mutator transaction binding the contract method 0x1a2ae53e.
  1558  //
  1559  // Solidity: function setKLAYFee(uint256 _fee, uint64 _requestNonce) returns()
  1560  func (_Bridge *BridgeTransactorSession) SetKLAYFee(_fee *big.Int, _requestNonce uint64) (*types.Transaction, error) {
  1561  	return _Bridge.Contract.SetKLAYFee(&_Bridge.TransactOpts, _fee, _requestNonce)
  1562  }
  1563  
  1564  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  1565  //
  1566  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  1567  func (_Bridge *BridgeTransactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) {
  1568  	return _Bridge.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold)
  1569  }
  1570  
  1571  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  1572  //
  1573  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  1574  func (_Bridge *BridgeSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) {
  1575  	return _Bridge.Contract.SetOperatorThreshold(&_Bridge.TransactOpts, _voteType, _threshold)
  1576  }
  1577  
  1578  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  1579  //
  1580  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  1581  func (_Bridge *BridgeTransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) {
  1582  	return _Bridge.Contract.SetOperatorThreshold(&_Bridge.TransactOpts, _voteType, _threshold)
  1583  }
  1584  
  1585  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
  1586  //
  1587  // Solidity: function start(bool _status) returns()
  1588  func (_Bridge *BridgeTransactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) {
  1589  	return _Bridge.contract.Transact(opts, "start", _status)
  1590  }
  1591  
  1592  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
  1593  //
  1594  // Solidity: function start(bool _status) returns()
  1595  func (_Bridge *BridgeSession) Start(_status bool) (*types.Transaction, error) {
  1596  	return _Bridge.Contract.Start(&_Bridge.TransactOpts, _status)
  1597  }
  1598  
  1599  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
  1600  //
  1601  // Solidity: function start(bool _status) returns()
  1602  func (_Bridge *BridgeTransactorSession) Start(_status bool) (*types.Transaction, error) {
  1603  	return _Bridge.Contract.Start(&_Bridge.TransactOpts, _status)
  1604  }
  1605  
  1606  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  1607  //
  1608  // Solidity: function transferOwnership(address newOwner) returns()
  1609  func (_Bridge *BridgeTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  1610  	return _Bridge.contract.Transact(opts, "transferOwnership", newOwner)
  1611  }
  1612  
  1613  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  1614  //
  1615  // Solidity: function transferOwnership(address newOwner) returns()
  1616  func (_Bridge *BridgeSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  1617  	return _Bridge.Contract.TransferOwnership(&_Bridge.TransactOpts, newOwner)
  1618  }
  1619  
  1620  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  1621  //
  1622  // Solidity: function transferOwnership(address newOwner) returns()
  1623  func (_Bridge *BridgeTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  1624  	return _Bridge.Contract.TransferOwnership(&_Bridge.TransactOpts, newOwner)
  1625  }
  1626  
  1627  // UnlockKLAY is a paid mutator transaction binding the contract method 0x1ebdca38.
  1628  //
  1629  // Solidity: function unlockKLAY() returns()
  1630  func (_Bridge *BridgeTransactor) UnlockKLAY(opts *bind.TransactOpts) (*types.Transaction, error) {
  1631  	return _Bridge.contract.Transact(opts, "unlockKLAY")
  1632  }
  1633  
  1634  // UnlockKLAY is a paid mutator transaction binding the contract method 0x1ebdca38.
  1635  //
  1636  // Solidity: function unlockKLAY() returns()
  1637  func (_Bridge *BridgeSession) UnlockKLAY() (*types.Transaction, error) {
  1638  	return _Bridge.Contract.UnlockKLAY(&_Bridge.TransactOpts)
  1639  }
  1640  
  1641  // UnlockKLAY is a paid mutator transaction binding the contract method 0x1ebdca38.
  1642  //
  1643  // Solidity: function unlockKLAY() returns()
  1644  func (_Bridge *BridgeTransactorSession) UnlockKLAY() (*types.Transaction, error) {
  1645  	return _Bridge.Contract.UnlockKLAY(&_Bridge.TransactOpts)
  1646  }
  1647  
  1648  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
  1649  //
  1650  // Solidity: function unlockToken(address _token) returns()
  1651  func (_Bridge *BridgeTransactor) UnlockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
  1652  	return _Bridge.contract.Transact(opts, "unlockToken", _token)
  1653  }
  1654  
  1655  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
  1656  //
  1657  // Solidity: function unlockToken(address _token) returns()
  1658  func (_Bridge *BridgeSession) UnlockToken(_token common.Address) (*types.Transaction, error) {
  1659  	return _Bridge.Contract.UnlockToken(&_Bridge.TransactOpts, _token)
  1660  }
  1661  
  1662  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
  1663  //
  1664  // Solidity: function unlockToken(address _token) returns()
  1665  func (_Bridge *BridgeTransactorSession) UnlockToken(_token common.Address) (*types.Transaction, error) {
  1666  	return _Bridge.Contract.UnlockToken(&_Bridge.TransactOpts, _token)
  1667  }
  1668  
  1669  // Fallback is a paid mutator transaction binding the contract fallback function.
  1670  //
  1671  // Solidity: fallback() payable returns()
  1672  func (_Bridge *BridgeTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) {
  1673  	return _Bridge.contract.RawTransact(opts, calldata)
  1674  }
  1675  
  1676  // Fallback is a paid mutator transaction binding the contract fallback function.
  1677  //
  1678  // Solidity: fallback() payable returns()
  1679  func (_Bridge *BridgeSession) Fallback(calldata []byte) (*types.Transaction, error) {
  1680  	return _Bridge.Contract.Fallback(&_Bridge.TransactOpts, calldata)
  1681  }
  1682  
  1683  // Fallback is a paid mutator transaction binding the contract fallback function.
  1684  //
  1685  // Solidity: fallback() payable returns()
  1686  func (_Bridge *BridgeTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) {
  1687  	return _Bridge.Contract.Fallback(&_Bridge.TransactOpts, calldata)
  1688  }
  1689  
  1690  // BridgeERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the Bridge contract.
  1691  type BridgeERC20FeeChangedIterator struct {
  1692  	Event *BridgeERC20FeeChanged // Event containing the contract specifics and raw log
  1693  
  1694  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1695  	event    string              // Event name to use for unpacking event data
  1696  
  1697  	logs chan types.Log      // Log channel receiving the found contract events
  1698  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  1699  	done bool                // Whether the subscription completed delivering logs
  1700  	fail error               // Occurred error to stop iteration
  1701  }
  1702  
  1703  // Next advances the iterator to the subsequent event, returning whether there
  1704  // are any more events found. In case of a retrieval or parsing error, false is
  1705  // returned and Error() can be queried for the exact failure.
  1706  func (it *BridgeERC20FeeChangedIterator) Next() bool {
  1707  	// If the iterator failed, stop iterating
  1708  	if it.fail != nil {
  1709  		return false
  1710  	}
  1711  	// If the iterator completed, deliver directly whatever's available
  1712  	if it.done {
  1713  		select {
  1714  		case log := <-it.logs:
  1715  			it.Event = new(BridgeERC20FeeChanged)
  1716  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1717  				it.fail = err
  1718  				return false
  1719  			}
  1720  			it.Event.Raw = log
  1721  			return true
  1722  
  1723  		default:
  1724  			return false
  1725  		}
  1726  	}
  1727  	// Iterator still in progress, wait for either a data or an error event
  1728  	select {
  1729  	case log := <-it.logs:
  1730  		it.Event = new(BridgeERC20FeeChanged)
  1731  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1732  			it.fail = err
  1733  			return false
  1734  		}
  1735  		it.Event.Raw = log
  1736  		return true
  1737  
  1738  	case err := <-it.sub.Err():
  1739  		it.done = true
  1740  		it.fail = err
  1741  		return it.Next()
  1742  	}
  1743  }
  1744  
  1745  // Error returns any retrieval or parsing error occurred during filtering.
  1746  func (it *BridgeERC20FeeChangedIterator) Error() error {
  1747  	return it.fail
  1748  }
  1749  
  1750  // Close terminates the iteration process, releasing any pending underlying
  1751  // resources.
  1752  func (it *BridgeERC20FeeChangedIterator) Close() error {
  1753  	it.sub.Unsubscribe()
  1754  	return nil
  1755  }
  1756  
  1757  // BridgeERC20FeeChanged represents a ERC20FeeChanged event raised by the Bridge contract.
  1758  type BridgeERC20FeeChanged struct {
  1759  	Token common.Address
  1760  	Fee   *big.Int
  1761  	Raw   types.Log // Blockchain specific contextual infos
  1762  }
  1763  
  1764  // FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
  1765  //
  1766  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
  1767  func (_Bridge *BridgeFilterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeERC20FeeChangedIterator, error) {
  1768  
  1769  	var tokenRule []interface{}
  1770  	for _, tokenItem := range token {
  1771  		tokenRule = append(tokenRule, tokenItem)
  1772  	}
  1773  	var feeRule []interface{}
  1774  	for _, feeItem := range fee {
  1775  		feeRule = append(feeRule, feeItem)
  1776  	}
  1777  
  1778  	logs, sub, err := _Bridge.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule)
  1779  	if err != nil {
  1780  		return nil, err
  1781  	}
  1782  	return &BridgeERC20FeeChangedIterator{contract: _Bridge.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil
  1783  }
  1784  
  1785  // WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
  1786  //
  1787  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
  1788  func (_Bridge *BridgeFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) {
  1789  
  1790  	var tokenRule []interface{}
  1791  	for _, tokenItem := range token {
  1792  		tokenRule = append(tokenRule, tokenItem)
  1793  	}
  1794  	var feeRule []interface{}
  1795  	for _, feeItem := range fee {
  1796  		feeRule = append(feeRule, feeItem)
  1797  	}
  1798  
  1799  	logs, sub, err := _Bridge.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule)
  1800  	if err != nil {
  1801  		return nil, err
  1802  	}
  1803  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1804  		defer sub.Unsubscribe()
  1805  		for {
  1806  			select {
  1807  			case log := <-logs:
  1808  				// New log arrived, parse the event and forward to the user
  1809  				event := new(BridgeERC20FeeChanged)
  1810  				if err := _Bridge.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil {
  1811  					return err
  1812  				}
  1813  				event.Raw = log
  1814  
  1815  				select {
  1816  				case sink <- event:
  1817  				case err := <-sub.Err():
  1818  					return err
  1819  				case <-quit:
  1820  					return nil
  1821  				}
  1822  			case err := <-sub.Err():
  1823  				return err
  1824  			case <-quit:
  1825  				return nil
  1826  			}
  1827  		}
  1828  	}), nil
  1829  }
  1830  
  1831  // ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
  1832  //
  1833  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
  1834  func (_Bridge *BridgeFilterer) ParseERC20FeeChanged(log types.Log) (*BridgeERC20FeeChanged, error) {
  1835  	event := new(BridgeERC20FeeChanged)
  1836  	if err := _Bridge.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil {
  1837  		return nil, err
  1838  	}
  1839  	return event, nil
  1840  }
  1841  
  1842  // BridgeFeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the Bridge contract.
  1843  type BridgeFeeReceiverChangedIterator struct {
  1844  	Event *BridgeFeeReceiverChanged // Event containing the contract specifics and raw log
  1845  
  1846  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1847  	event    string              // Event name to use for unpacking event data
  1848  
  1849  	logs chan types.Log      // Log channel receiving the found contract events
  1850  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  1851  	done bool                // Whether the subscription completed delivering logs
  1852  	fail error               // Occurred error to stop iteration
  1853  }
  1854  
  1855  // Next advances the iterator to the subsequent event, returning whether there
  1856  // are any more events found. In case of a retrieval or parsing error, false is
  1857  // returned and Error() can be queried for the exact failure.
  1858  func (it *BridgeFeeReceiverChangedIterator) Next() bool {
  1859  	// If the iterator failed, stop iterating
  1860  	if it.fail != nil {
  1861  		return false
  1862  	}
  1863  	// If the iterator completed, deliver directly whatever's available
  1864  	if it.done {
  1865  		select {
  1866  		case log := <-it.logs:
  1867  			it.Event = new(BridgeFeeReceiverChanged)
  1868  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1869  				it.fail = err
  1870  				return false
  1871  			}
  1872  			it.Event.Raw = log
  1873  			return true
  1874  
  1875  		default:
  1876  			return false
  1877  		}
  1878  	}
  1879  	// Iterator still in progress, wait for either a data or an error event
  1880  	select {
  1881  	case log := <-it.logs:
  1882  		it.Event = new(BridgeFeeReceiverChanged)
  1883  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1884  			it.fail = err
  1885  			return false
  1886  		}
  1887  		it.Event.Raw = log
  1888  		return true
  1889  
  1890  	case err := <-it.sub.Err():
  1891  		it.done = true
  1892  		it.fail = err
  1893  		return it.Next()
  1894  	}
  1895  }
  1896  
  1897  // Error returns any retrieval or parsing error occurred during filtering.
  1898  func (it *BridgeFeeReceiverChangedIterator) Error() error {
  1899  	return it.fail
  1900  }
  1901  
  1902  // Close terminates the iteration process, releasing any pending underlying
  1903  // resources.
  1904  func (it *BridgeFeeReceiverChangedIterator) Close() error {
  1905  	it.sub.Unsubscribe()
  1906  	return nil
  1907  }
  1908  
  1909  // BridgeFeeReceiverChanged represents a FeeReceiverChanged event raised by the Bridge contract.
  1910  type BridgeFeeReceiverChanged struct {
  1911  	FeeReceiver common.Address
  1912  	Raw         types.Log // Blockchain specific contextual infos
  1913  }
  1914  
  1915  // FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
  1916  //
  1917  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
  1918  func (_Bridge *BridgeFilterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeFeeReceiverChangedIterator, error) {
  1919  
  1920  	var feeReceiverRule []interface{}
  1921  	for _, feeReceiverItem := range feeReceiver {
  1922  		feeReceiverRule = append(feeReceiverRule, feeReceiverItem)
  1923  	}
  1924  
  1925  	logs, sub, err := _Bridge.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule)
  1926  	if err != nil {
  1927  		return nil, err
  1928  	}
  1929  	return &BridgeFeeReceiverChangedIterator{contract: _Bridge.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil
  1930  }
  1931  
  1932  // WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
  1933  //
  1934  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
  1935  func (_Bridge *BridgeFilterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeFeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) {
  1936  
  1937  	var feeReceiverRule []interface{}
  1938  	for _, feeReceiverItem := range feeReceiver {
  1939  		feeReceiverRule = append(feeReceiverRule, feeReceiverItem)
  1940  	}
  1941  
  1942  	logs, sub, err := _Bridge.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule)
  1943  	if err != nil {
  1944  		return nil, err
  1945  	}
  1946  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1947  		defer sub.Unsubscribe()
  1948  		for {
  1949  			select {
  1950  			case log := <-logs:
  1951  				// New log arrived, parse the event and forward to the user
  1952  				event := new(BridgeFeeReceiverChanged)
  1953  				if err := _Bridge.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil {
  1954  					return err
  1955  				}
  1956  				event.Raw = log
  1957  
  1958  				select {
  1959  				case sink <- event:
  1960  				case err := <-sub.Err():
  1961  					return err
  1962  				case <-quit:
  1963  					return nil
  1964  				}
  1965  			case err := <-sub.Err():
  1966  				return err
  1967  			case <-quit:
  1968  				return nil
  1969  			}
  1970  		}
  1971  	}), nil
  1972  }
  1973  
  1974  // ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
  1975  //
  1976  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
  1977  func (_Bridge *BridgeFilterer) ParseFeeReceiverChanged(log types.Log) (*BridgeFeeReceiverChanged, error) {
  1978  	event := new(BridgeFeeReceiverChanged)
  1979  	if err := _Bridge.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil {
  1980  		return nil, err
  1981  	}
  1982  	return event, nil
  1983  }
  1984  
  1985  // BridgeHandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the Bridge contract.
  1986  type BridgeHandleValueTransferIterator struct {
  1987  	Event *BridgeHandleValueTransfer // Event containing the contract specifics and raw log
  1988  
  1989  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1990  	event    string              // Event name to use for unpacking event data
  1991  
  1992  	logs chan types.Log      // Log channel receiving the found contract events
  1993  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  1994  	done bool                // Whether the subscription completed delivering logs
  1995  	fail error               // Occurred error to stop iteration
  1996  }
  1997  
  1998  // Next advances the iterator to the subsequent event, returning whether there
  1999  // are any more events found. In case of a retrieval or parsing error, false is
  2000  // returned and Error() can be queried for the exact failure.
  2001  func (it *BridgeHandleValueTransferIterator) Next() bool {
  2002  	// If the iterator failed, stop iterating
  2003  	if it.fail != nil {
  2004  		return false
  2005  	}
  2006  	// If the iterator completed, deliver directly whatever's available
  2007  	if it.done {
  2008  		select {
  2009  		case log := <-it.logs:
  2010  			it.Event = new(BridgeHandleValueTransfer)
  2011  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2012  				it.fail = err
  2013  				return false
  2014  			}
  2015  			it.Event.Raw = log
  2016  			return true
  2017  
  2018  		default:
  2019  			return false
  2020  		}
  2021  	}
  2022  	// Iterator still in progress, wait for either a data or an error event
  2023  	select {
  2024  	case log := <-it.logs:
  2025  		it.Event = new(BridgeHandleValueTransfer)
  2026  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2027  			it.fail = err
  2028  			return false
  2029  		}
  2030  		it.Event.Raw = log
  2031  		return true
  2032  
  2033  	case err := <-it.sub.Err():
  2034  		it.done = true
  2035  		it.fail = err
  2036  		return it.Next()
  2037  	}
  2038  }
  2039  
  2040  // Error returns any retrieval or parsing error occurred during filtering.
  2041  func (it *BridgeHandleValueTransferIterator) Error() error {
  2042  	return it.fail
  2043  }
  2044  
  2045  // Close terminates the iteration process, releasing any pending underlying
  2046  // resources.
  2047  func (it *BridgeHandleValueTransferIterator) Close() error {
  2048  	it.sub.Unsubscribe()
  2049  	return nil
  2050  }
  2051  
  2052  // BridgeHandleValueTransfer represents a HandleValueTransfer event raised by the Bridge contract.
  2053  type BridgeHandleValueTransfer struct {
  2054  	RequestTxHash    [32]byte
  2055  	TokenType        uint8
  2056  	From             common.Address
  2057  	To               common.Address
  2058  	TokenAddress     common.Address
  2059  	ValueOrTokenId   *big.Int
  2060  	HandleNonce      uint64
  2061  	LowerHandleNonce uint64
  2062  	ExtraData        []byte
  2063  	Raw              types.Log // Blockchain specific contextual infos
  2064  }
  2065  
  2066  // FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
  2067  //
  2068  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
  2069  func (_Bridge *BridgeFilterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeHandleValueTransferIterator, error) {
  2070  
  2071  	var fromRule []interface{}
  2072  	for _, fromItem := range from {
  2073  		fromRule = append(fromRule, fromItem)
  2074  	}
  2075  	var toRule []interface{}
  2076  	for _, toItem := range to {
  2077  		toRule = append(toRule, toItem)
  2078  	}
  2079  	var tokenAddressRule []interface{}
  2080  	for _, tokenAddressItem := range tokenAddress {
  2081  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  2082  	}
  2083  
  2084  	logs, sub, err := _Bridge.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule)
  2085  	if err != nil {
  2086  		return nil, err
  2087  	}
  2088  	return &BridgeHandleValueTransferIterator{contract: _Bridge.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil
  2089  }
  2090  
  2091  // WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
  2092  //
  2093  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
  2094  func (_Bridge *BridgeFilterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeHandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
  2095  
  2096  	var fromRule []interface{}
  2097  	for _, fromItem := range from {
  2098  		fromRule = append(fromRule, fromItem)
  2099  	}
  2100  	var toRule []interface{}
  2101  	for _, toItem := range to {
  2102  		toRule = append(toRule, toItem)
  2103  	}
  2104  	var tokenAddressRule []interface{}
  2105  	for _, tokenAddressItem := range tokenAddress {
  2106  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  2107  	}
  2108  
  2109  	logs, sub, err := _Bridge.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule)
  2110  	if err != nil {
  2111  		return nil, err
  2112  	}
  2113  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2114  		defer sub.Unsubscribe()
  2115  		for {
  2116  			select {
  2117  			case log := <-logs:
  2118  				// New log arrived, parse the event and forward to the user
  2119  				event := new(BridgeHandleValueTransfer)
  2120  				if err := _Bridge.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil {
  2121  					return err
  2122  				}
  2123  				event.Raw = log
  2124  
  2125  				select {
  2126  				case sink <- event:
  2127  				case err := <-sub.Err():
  2128  					return err
  2129  				case <-quit:
  2130  					return nil
  2131  				}
  2132  			case err := <-sub.Err():
  2133  				return err
  2134  			case <-quit:
  2135  				return nil
  2136  			}
  2137  		}
  2138  	}), nil
  2139  }
  2140  
  2141  // ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
  2142  //
  2143  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
  2144  func (_Bridge *BridgeFilterer) ParseHandleValueTransfer(log types.Log) (*BridgeHandleValueTransfer, error) {
  2145  	event := new(BridgeHandleValueTransfer)
  2146  	if err := _Bridge.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil {
  2147  		return nil, err
  2148  	}
  2149  	return event, nil
  2150  }
  2151  
  2152  // BridgeKLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the Bridge contract.
  2153  type BridgeKLAYFeeChangedIterator struct {
  2154  	Event *BridgeKLAYFeeChanged // Event containing the contract specifics and raw log
  2155  
  2156  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2157  	event    string              // Event name to use for unpacking event data
  2158  
  2159  	logs chan types.Log      // Log channel receiving the found contract events
  2160  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2161  	done bool                // Whether the subscription completed delivering logs
  2162  	fail error               // Occurred error to stop iteration
  2163  }
  2164  
  2165  // Next advances the iterator to the subsequent event, returning whether there
  2166  // are any more events found. In case of a retrieval or parsing error, false is
  2167  // returned and Error() can be queried for the exact failure.
  2168  func (it *BridgeKLAYFeeChangedIterator) Next() bool {
  2169  	// If the iterator failed, stop iterating
  2170  	if it.fail != nil {
  2171  		return false
  2172  	}
  2173  	// If the iterator completed, deliver directly whatever's available
  2174  	if it.done {
  2175  		select {
  2176  		case log := <-it.logs:
  2177  			it.Event = new(BridgeKLAYFeeChanged)
  2178  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2179  				it.fail = err
  2180  				return false
  2181  			}
  2182  			it.Event.Raw = log
  2183  			return true
  2184  
  2185  		default:
  2186  			return false
  2187  		}
  2188  	}
  2189  	// Iterator still in progress, wait for either a data or an error event
  2190  	select {
  2191  	case log := <-it.logs:
  2192  		it.Event = new(BridgeKLAYFeeChanged)
  2193  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2194  			it.fail = err
  2195  			return false
  2196  		}
  2197  		it.Event.Raw = log
  2198  		return true
  2199  
  2200  	case err := <-it.sub.Err():
  2201  		it.done = true
  2202  		it.fail = err
  2203  		return it.Next()
  2204  	}
  2205  }
  2206  
  2207  // Error returns any retrieval or parsing error occurred during filtering.
  2208  func (it *BridgeKLAYFeeChangedIterator) Error() error {
  2209  	return it.fail
  2210  }
  2211  
  2212  // Close terminates the iteration process, releasing any pending underlying
  2213  // resources.
  2214  func (it *BridgeKLAYFeeChangedIterator) Close() error {
  2215  	it.sub.Unsubscribe()
  2216  	return nil
  2217  }
  2218  
  2219  // BridgeKLAYFeeChanged represents a KLAYFeeChanged event raised by the Bridge contract.
  2220  type BridgeKLAYFeeChanged struct {
  2221  	Fee *big.Int
  2222  	Raw types.Log // Blockchain specific contextual infos
  2223  }
  2224  
  2225  // FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
  2226  //
  2227  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
  2228  func (_Bridge *BridgeFilterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeKLAYFeeChangedIterator, error) {
  2229  
  2230  	var feeRule []interface{}
  2231  	for _, feeItem := range fee {
  2232  		feeRule = append(feeRule, feeItem)
  2233  	}
  2234  
  2235  	logs, sub, err := _Bridge.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule)
  2236  	if err != nil {
  2237  		return nil, err
  2238  	}
  2239  	return &BridgeKLAYFeeChangedIterator{contract: _Bridge.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil
  2240  }
  2241  
  2242  // WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
  2243  //
  2244  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
  2245  func (_Bridge *BridgeFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeKLAYFeeChanged, fee []*big.Int) (event.Subscription, error) {
  2246  
  2247  	var feeRule []interface{}
  2248  	for _, feeItem := range fee {
  2249  		feeRule = append(feeRule, feeItem)
  2250  	}
  2251  
  2252  	logs, sub, err := _Bridge.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule)
  2253  	if err != nil {
  2254  		return nil, err
  2255  	}
  2256  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2257  		defer sub.Unsubscribe()
  2258  		for {
  2259  			select {
  2260  			case log := <-logs:
  2261  				// New log arrived, parse the event and forward to the user
  2262  				event := new(BridgeKLAYFeeChanged)
  2263  				if err := _Bridge.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil {
  2264  					return err
  2265  				}
  2266  				event.Raw = log
  2267  
  2268  				select {
  2269  				case sink <- event:
  2270  				case err := <-sub.Err():
  2271  					return err
  2272  				case <-quit:
  2273  					return nil
  2274  				}
  2275  			case err := <-sub.Err():
  2276  				return err
  2277  			case <-quit:
  2278  				return nil
  2279  			}
  2280  		}
  2281  	}), nil
  2282  }
  2283  
  2284  // ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
  2285  //
  2286  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
  2287  func (_Bridge *BridgeFilterer) ParseKLAYFeeChanged(log types.Log) (*BridgeKLAYFeeChanged, error) {
  2288  	event := new(BridgeKLAYFeeChanged)
  2289  	if err := _Bridge.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil {
  2290  		return nil, err
  2291  	}
  2292  	return event, nil
  2293  }
  2294  
  2295  // BridgeKLAYLockedIterator is returned from FilterKLAYLocked and is used to iterate over the raw logs and unpacked data for KLAYLocked events raised by the Bridge contract.
  2296  type BridgeKLAYLockedIterator struct {
  2297  	Event *BridgeKLAYLocked // Event containing the contract specifics and raw log
  2298  
  2299  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2300  	event    string              // Event name to use for unpacking event data
  2301  
  2302  	logs chan types.Log      // Log channel receiving the found contract events
  2303  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2304  	done bool                // Whether the subscription completed delivering logs
  2305  	fail error               // Occurred error to stop iteration
  2306  }
  2307  
  2308  // Next advances the iterator to the subsequent event, returning whether there
  2309  // are any more events found. In case of a retrieval or parsing error, false is
  2310  // returned and Error() can be queried for the exact failure.
  2311  func (it *BridgeKLAYLockedIterator) Next() bool {
  2312  	// If the iterator failed, stop iterating
  2313  	if it.fail != nil {
  2314  		return false
  2315  	}
  2316  	// If the iterator completed, deliver directly whatever's available
  2317  	if it.done {
  2318  		select {
  2319  		case log := <-it.logs:
  2320  			it.Event = new(BridgeKLAYLocked)
  2321  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2322  				it.fail = err
  2323  				return false
  2324  			}
  2325  			it.Event.Raw = log
  2326  			return true
  2327  
  2328  		default:
  2329  			return false
  2330  		}
  2331  	}
  2332  	// Iterator still in progress, wait for either a data or an error event
  2333  	select {
  2334  	case log := <-it.logs:
  2335  		it.Event = new(BridgeKLAYLocked)
  2336  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2337  			it.fail = err
  2338  			return false
  2339  		}
  2340  		it.Event.Raw = log
  2341  		return true
  2342  
  2343  	case err := <-it.sub.Err():
  2344  		it.done = true
  2345  		it.fail = err
  2346  		return it.Next()
  2347  	}
  2348  }
  2349  
  2350  // Error returns any retrieval or parsing error occurred during filtering.
  2351  func (it *BridgeKLAYLockedIterator) Error() error {
  2352  	return it.fail
  2353  }
  2354  
  2355  // Close terminates the iteration process, releasing any pending underlying
  2356  // resources.
  2357  func (it *BridgeKLAYLockedIterator) Close() error {
  2358  	it.sub.Unsubscribe()
  2359  	return nil
  2360  }
  2361  
  2362  // BridgeKLAYLocked represents a KLAYLocked event raised by the Bridge contract.
  2363  type BridgeKLAYLocked struct {
  2364  	Raw types.Log // Blockchain specific contextual infos
  2365  }
  2366  
  2367  // FilterKLAYLocked is a free log retrieval operation binding the contract event 0x915f3053cbc6842207cd97b68c0b585109b4f2fe61c5dbeb25d7678bfdfb8dfa.
  2368  //
  2369  // Solidity: event KLAYLocked()
  2370  func (_Bridge *BridgeFilterer) FilterKLAYLocked(opts *bind.FilterOpts) (*BridgeKLAYLockedIterator, error) {
  2371  
  2372  	logs, sub, err := _Bridge.contract.FilterLogs(opts, "KLAYLocked")
  2373  	if err != nil {
  2374  		return nil, err
  2375  	}
  2376  	return &BridgeKLAYLockedIterator{contract: _Bridge.contract, event: "KLAYLocked", logs: logs, sub: sub}, nil
  2377  }
  2378  
  2379  // WatchKLAYLocked is a free log subscription operation binding the contract event 0x915f3053cbc6842207cd97b68c0b585109b4f2fe61c5dbeb25d7678bfdfb8dfa.
  2380  //
  2381  // Solidity: event KLAYLocked()
  2382  func (_Bridge *BridgeFilterer) WatchKLAYLocked(opts *bind.WatchOpts, sink chan<- *BridgeKLAYLocked) (event.Subscription, error) {
  2383  
  2384  	logs, sub, err := _Bridge.contract.WatchLogs(opts, "KLAYLocked")
  2385  	if err != nil {
  2386  		return nil, err
  2387  	}
  2388  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2389  		defer sub.Unsubscribe()
  2390  		for {
  2391  			select {
  2392  			case log := <-logs:
  2393  				// New log arrived, parse the event and forward to the user
  2394  				event := new(BridgeKLAYLocked)
  2395  				if err := _Bridge.contract.UnpackLog(event, "KLAYLocked", log); err != nil {
  2396  					return err
  2397  				}
  2398  				event.Raw = log
  2399  
  2400  				select {
  2401  				case sink <- event:
  2402  				case err := <-sub.Err():
  2403  					return err
  2404  				case <-quit:
  2405  					return nil
  2406  				}
  2407  			case err := <-sub.Err():
  2408  				return err
  2409  			case <-quit:
  2410  				return nil
  2411  			}
  2412  		}
  2413  	}), nil
  2414  }
  2415  
  2416  // ParseKLAYLocked is a log parse operation binding the contract event 0x915f3053cbc6842207cd97b68c0b585109b4f2fe61c5dbeb25d7678bfdfb8dfa.
  2417  //
  2418  // Solidity: event KLAYLocked()
  2419  func (_Bridge *BridgeFilterer) ParseKLAYLocked(log types.Log) (*BridgeKLAYLocked, error) {
  2420  	event := new(BridgeKLAYLocked)
  2421  	if err := _Bridge.contract.UnpackLog(event, "KLAYLocked", log); err != nil {
  2422  		return nil, err
  2423  	}
  2424  	return event, nil
  2425  }
  2426  
  2427  // BridgeKLAYUnlockedIterator is returned from FilterKLAYUnlocked and is used to iterate over the raw logs and unpacked data for KLAYUnlocked events raised by the Bridge contract.
  2428  type BridgeKLAYUnlockedIterator struct {
  2429  	Event *BridgeKLAYUnlocked // Event containing the contract specifics and raw log
  2430  
  2431  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2432  	event    string              // Event name to use for unpacking event data
  2433  
  2434  	logs chan types.Log      // Log channel receiving the found contract events
  2435  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2436  	done bool                // Whether the subscription completed delivering logs
  2437  	fail error               // Occurred error to stop iteration
  2438  }
  2439  
  2440  // Next advances the iterator to the subsequent event, returning whether there
  2441  // are any more events found. In case of a retrieval or parsing error, false is
  2442  // returned and Error() can be queried for the exact failure.
  2443  func (it *BridgeKLAYUnlockedIterator) Next() bool {
  2444  	// If the iterator failed, stop iterating
  2445  	if it.fail != nil {
  2446  		return false
  2447  	}
  2448  	// If the iterator completed, deliver directly whatever's available
  2449  	if it.done {
  2450  		select {
  2451  		case log := <-it.logs:
  2452  			it.Event = new(BridgeKLAYUnlocked)
  2453  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2454  				it.fail = err
  2455  				return false
  2456  			}
  2457  			it.Event.Raw = log
  2458  			return true
  2459  
  2460  		default:
  2461  			return false
  2462  		}
  2463  	}
  2464  	// Iterator still in progress, wait for either a data or an error event
  2465  	select {
  2466  	case log := <-it.logs:
  2467  		it.Event = new(BridgeKLAYUnlocked)
  2468  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2469  			it.fail = err
  2470  			return false
  2471  		}
  2472  		it.Event.Raw = log
  2473  		return true
  2474  
  2475  	case err := <-it.sub.Err():
  2476  		it.done = true
  2477  		it.fail = err
  2478  		return it.Next()
  2479  	}
  2480  }
  2481  
  2482  // Error returns any retrieval or parsing error occurred during filtering.
  2483  func (it *BridgeKLAYUnlockedIterator) Error() error {
  2484  	return it.fail
  2485  }
  2486  
  2487  // Close terminates the iteration process, releasing any pending underlying
  2488  // resources.
  2489  func (it *BridgeKLAYUnlockedIterator) Close() error {
  2490  	it.sub.Unsubscribe()
  2491  	return nil
  2492  }
  2493  
  2494  // BridgeKLAYUnlocked represents a KLAYUnlocked event raised by the Bridge contract.
  2495  type BridgeKLAYUnlocked struct {
  2496  	Raw types.Log // Blockchain specific contextual infos
  2497  }
  2498  
  2499  // FilterKLAYUnlocked is a free log retrieval operation binding the contract event 0xd20610c9b78a6903ef134539e3deb5d243be461de6ef12d4c29536bb9b54fa1b.
  2500  //
  2501  // Solidity: event KLAYUnlocked()
  2502  func (_Bridge *BridgeFilterer) FilterKLAYUnlocked(opts *bind.FilterOpts) (*BridgeKLAYUnlockedIterator, error) {
  2503  
  2504  	logs, sub, err := _Bridge.contract.FilterLogs(opts, "KLAYUnlocked")
  2505  	if err != nil {
  2506  		return nil, err
  2507  	}
  2508  	return &BridgeKLAYUnlockedIterator{contract: _Bridge.contract, event: "KLAYUnlocked", logs: logs, sub: sub}, nil
  2509  }
  2510  
  2511  // WatchKLAYUnlocked is a free log subscription operation binding the contract event 0xd20610c9b78a6903ef134539e3deb5d243be461de6ef12d4c29536bb9b54fa1b.
  2512  //
  2513  // Solidity: event KLAYUnlocked()
  2514  func (_Bridge *BridgeFilterer) WatchKLAYUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeKLAYUnlocked) (event.Subscription, error) {
  2515  
  2516  	logs, sub, err := _Bridge.contract.WatchLogs(opts, "KLAYUnlocked")
  2517  	if err != nil {
  2518  		return nil, err
  2519  	}
  2520  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2521  		defer sub.Unsubscribe()
  2522  		for {
  2523  			select {
  2524  			case log := <-logs:
  2525  				// New log arrived, parse the event and forward to the user
  2526  				event := new(BridgeKLAYUnlocked)
  2527  				if err := _Bridge.contract.UnpackLog(event, "KLAYUnlocked", log); err != nil {
  2528  					return err
  2529  				}
  2530  				event.Raw = log
  2531  
  2532  				select {
  2533  				case sink <- event:
  2534  				case err := <-sub.Err():
  2535  					return err
  2536  				case <-quit:
  2537  					return nil
  2538  				}
  2539  			case err := <-sub.Err():
  2540  				return err
  2541  			case <-quit:
  2542  				return nil
  2543  			}
  2544  		}
  2545  	}), nil
  2546  }
  2547  
  2548  // ParseKLAYUnlocked is a log parse operation binding the contract event 0xd20610c9b78a6903ef134539e3deb5d243be461de6ef12d4c29536bb9b54fa1b.
  2549  //
  2550  // Solidity: event KLAYUnlocked()
  2551  func (_Bridge *BridgeFilterer) ParseKLAYUnlocked(log types.Log) (*BridgeKLAYUnlocked, error) {
  2552  	event := new(BridgeKLAYUnlocked)
  2553  	if err := _Bridge.contract.UnpackLog(event, "KLAYUnlocked", log); err != nil {
  2554  		return nil, err
  2555  	}
  2556  	return event, nil
  2557  }
  2558  
  2559  // BridgeOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Bridge contract.
  2560  type BridgeOwnershipTransferredIterator struct {
  2561  	Event *BridgeOwnershipTransferred // Event containing the contract specifics and raw log
  2562  
  2563  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2564  	event    string              // Event name to use for unpacking event data
  2565  
  2566  	logs chan types.Log      // Log channel receiving the found contract events
  2567  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2568  	done bool                // Whether the subscription completed delivering logs
  2569  	fail error               // Occurred error to stop iteration
  2570  }
  2571  
  2572  // Next advances the iterator to the subsequent event, returning whether there
  2573  // are any more events found. In case of a retrieval or parsing error, false is
  2574  // returned and Error() can be queried for the exact failure.
  2575  func (it *BridgeOwnershipTransferredIterator) Next() bool {
  2576  	// If the iterator failed, stop iterating
  2577  	if it.fail != nil {
  2578  		return false
  2579  	}
  2580  	// If the iterator completed, deliver directly whatever's available
  2581  	if it.done {
  2582  		select {
  2583  		case log := <-it.logs:
  2584  			it.Event = new(BridgeOwnershipTransferred)
  2585  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2586  				it.fail = err
  2587  				return false
  2588  			}
  2589  			it.Event.Raw = log
  2590  			return true
  2591  
  2592  		default:
  2593  			return false
  2594  		}
  2595  	}
  2596  	// Iterator still in progress, wait for either a data or an error event
  2597  	select {
  2598  	case log := <-it.logs:
  2599  		it.Event = new(BridgeOwnershipTransferred)
  2600  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2601  			it.fail = err
  2602  			return false
  2603  		}
  2604  		it.Event.Raw = log
  2605  		return true
  2606  
  2607  	case err := <-it.sub.Err():
  2608  		it.done = true
  2609  		it.fail = err
  2610  		return it.Next()
  2611  	}
  2612  }
  2613  
  2614  // Error returns any retrieval or parsing error occurred during filtering.
  2615  func (it *BridgeOwnershipTransferredIterator) Error() error {
  2616  	return it.fail
  2617  }
  2618  
  2619  // Close terminates the iteration process, releasing any pending underlying
  2620  // resources.
  2621  func (it *BridgeOwnershipTransferredIterator) Close() error {
  2622  	it.sub.Unsubscribe()
  2623  	return nil
  2624  }
  2625  
  2626  // BridgeOwnershipTransferred represents a OwnershipTransferred event raised by the Bridge contract.
  2627  type BridgeOwnershipTransferred struct {
  2628  	PreviousOwner common.Address
  2629  	NewOwner      common.Address
  2630  	Raw           types.Log // Blockchain specific contextual infos
  2631  }
  2632  
  2633  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  2634  //
  2635  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  2636  func (_Bridge *BridgeFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeOwnershipTransferredIterator, error) {
  2637  
  2638  	var previousOwnerRule []interface{}
  2639  	for _, previousOwnerItem := range previousOwner {
  2640  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  2641  	}
  2642  	var newOwnerRule []interface{}
  2643  	for _, newOwnerItem := range newOwner {
  2644  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  2645  	}
  2646  
  2647  	logs, sub, err := _Bridge.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  2648  	if err != nil {
  2649  		return nil, err
  2650  	}
  2651  	return &BridgeOwnershipTransferredIterator{contract: _Bridge.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  2652  }
  2653  
  2654  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  2655  //
  2656  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  2657  func (_Bridge *BridgeFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  2658  
  2659  	var previousOwnerRule []interface{}
  2660  	for _, previousOwnerItem := range previousOwner {
  2661  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  2662  	}
  2663  	var newOwnerRule []interface{}
  2664  	for _, newOwnerItem := range newOwner {
  2665  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  2666  	}
  2667  
  2668  	logs, sub, err := _Bridge.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  2669  	if err != nil {
  2670  		return nil, err
  2671  	}
  2672  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2673  		defer sub.Unsubscribe()
  2674  		for {
  2675  			select {
  2676  			case log := <-logs:
  2677  				// New log arrived, parse the event and forward to the user
  2678  				event := new(BridgeOwnershipTransferred)
  2679  				if err := _Bridge.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  2680  					return err
  2681  				}
  2682  				event.Raw = log
  2683  
  2684  				select {
  2685  				case sink <- event:
  2686  				case err := <-sub.Err():
  2687  					return err
  2688  				case <-quit:
  2689  					return nil
  2690  				}
  2691  			case err := <-sub.Err():
  2692  				return err
  2693  			case <-quit:
  2694  				return nil
  2695  			}
  2696  		}
  2697  	}), nil
  2698  }
  2699  
  2700  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  2701  //
  2702  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  2703  func (_Bridge *BridgeFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeOwnershipTransferred, error) {
  2704  	event := new(BridgeOwnershipTransferred)
  2705  	if err := _Bridge.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  2706  		return nil, err
  2707  	}
  2708  	return event, nil
  2709  }
  2710  
  2711  // BridgeRequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the Bridge contract.
  2712  type BridgeRequestValueTransferIterator struct {
  2713  	Event *BridgeRequestValueTransfer // Event containing the contract specifics and raw log
  2714  
  2715  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2716  	event    string              // Event name to use for unpacking event data
  2717  
  2718  	logs chan types.Log      // Log channel receiving the found contract events
  2719  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2720  	done bool                // Whether the subscription completed delivering logs
  2721  	fail error               // Occurred error to stop iteration
  2722  }
  2723  
  2724  // Next advances the iterator to the subsequent event, returning whether there
  2725  // are any more events found. In case of a retrieval or parsing error, false is
  2726  // returned and Error() can be queried for the exact failure.
  2727  func (it *BridgeRequestValueTransferIterator) Next() bool {
  2728  	// If the iterator failed, stop iterating
  2729  	if it.fail != nil {
  2730  		return false
  2731  	}
  2732  	// If the iterator completed, deliver directly whatever's available
  2733  	if it.done {
  2734  		select {
  2735  		case log := <-it.logs:
  2736  			it.Event = new(BridgeRequestValueTransfer)
  2737  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2738  				it.fail = err
  2739  				return false
  2740  			}
  2741  			it.Event.Raw = log
  2742  			return true
  2743  
  2744  		default:
  2745  			return false
  2746  		}
  2747  	}
  2748  	// Iterator still in progress, wait for either a data or an error event
  2749  	select {
  2750  	case log := <-it.logs:
  2751  		it.Event = new(BridgeRequestValueTransfer)
  2752  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2753  			it.fail = err
  2754  			return false
  2755  		}
  2756  		it.Event.Raw = log
  2757  		return true
  2758  
  2759  	case err := <-it.sub.Err():
  2760  		it.done = true
  2761  		it.fail = err
  2762  		return it.Next()
  2763  	}
  2764  }
  2765  
  2766  // Error returns any retrieval or parsing error occurred during filtering.
  2767  func (it *BridgeRequestValueTransferIterator) Error() error {
  2768  	return it.fail
  2769  }
  2770  
  2771  // Close terminates the iteration process, releasing any pending underlying
  2772  // resources.
  2773  func (it *BridgeRequestValueTransferIterator) Close() error {
  2774  	it.sub.Unsubscribe()
  2775  	return nil
  2776  }
  2777  
  2778  // BridgeRequestValueTransfer represents a RequestValueTransfer event raised by the Bridge contract.
  2779  type BridgeRequestValueTransfer struct {
  2780  	TokenType      uint8
  2781  	From           common.Address
  2782  	To             common.Address
  2783  	TokenAddress   common.Address
  2784  	ValueOrTokenId *big.Int
  2785  	RequestNonce   uint64
  2786  	Fee            *big.Int
  2787  	ExtraData      []byte
  2788  	Raw            types.Log // Blockchain specific contextual infos
  2789  }
  2790  
  2791  // FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
  2792  //
  2793  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
  2794  func (_Bridge *BridgeFilterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeRequestValueTransferIterator, error) {
  2795  
  2796  	var fromRule []interface{}
  2797  	for _, fromItem := range from {
  2798  		fromRule = append(fromRule, fromItem)
  2799  	}
  2800  	var toRule []interface{}
  2801  	for _, toItem := range to {
  2802  		toRule = append(toRule, toItem)
  2803  	}
  2804  	var tokenAddressRule []interface{}
  2805  	for _, tokenAddressItem := range tokenAddress {
  2806  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  2807  	}
  2808  
  2809  	logs, sub, err := _Bridge.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule)
  2810  	if err != nil {
  2811  		return nil, err
  2812  	}
  2813  	return &BridgeRequestValueTransferIterator{contract: _Bridge.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil
  2814  }
  2815  
  2816  // WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
  2817  //
  2818  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
  2819  func (_Bridge *BridgeFilterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeRequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
  2820  
  2821  	var fromRule []interface{}
  2822  	for _, fromItem := range from {
  2823  		fromRule = append(fromRule, fromItem)
  2824  	}
  2825  	var toRule []interface{}
  2826  	for _, toItem := range to {
  2827  		toRule = append(toRule, toItem)
  2828  	}
  2829  	var tokenAddressRule []interface{}
  2830  	for _, tokenAddressItem := range tokenAddress {
  2831  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  2832  	}
  2833  
  2834  	logs, sub, err := _Bridge.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule)
  2835  	if err != nil {
  2836  		return nil, err
  2837  	}
  2838  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2839  		defer sub.Unsubscribe()
  2840  		for {
  2841  			select {
  2842  			case log := <-logs:
  2843  				// New log arrived, parse the event and forward to the user
  2844  				event := new(BridgeRequestValueTransfer)
  2845  				if err := _Bridge.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil {
  2846  					return err
  2847  				}
  2848  				event.Raw = log
  2849  
  2850  				select {
  2851  				case sink <- event:
  2852  				case err := <-sub.Err():
  2853  					return err
  2854  				case <-quit:
  2855  					return nil
  2856  				}
  2857  			case err := <-sub.Err():
  2858  				return err
  2859  			case <-quit:
  2860  				return nil
  2861  			}
  2862  		}
  2863  	}), nil
  2864  }
  2865  
  2866  // ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
  2867  //
  2868  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
  2869  func (_Bridge *BridgeFilterer) ParseRequestValueTransfer(log types.Log) (*BridgeRequestValueTransfer, error) {
  2870  	event := new(BridgeRequestValueTransfer)
  2871  	if err := _Bridge.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil {
  2872  		return nil, err
  2873  	}
  2874  	return event, nil
  2875  }
  2876  
  2877  // BridgeRequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the Bridge contract.
  2878  type BridgeRequestValueTransferEncodedIterator struct {
  2879  	Event *BridgeRequestValueTransferEncoded // Event containing the contract specifics and raw log
  2880  
  2881  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2882  	event    string              // Event name to use for unpacking event data
  2883  
  2884  	logs chan types.Log      // Log channel receiving the found contract events
  2885  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2886  	done bool                // Whether the subscription completed delivering logs
  2887  	fail error               // Occurred error to stop iteration
  2888  }
  2889  
  2890  // Next advances the iterator to the subsequent event, returning whether there
  2891  // are any more events found. In case of a retrieval or parsing error, false is
  2892  // returned and Error() can be queried for the exact failure.
  2893  func (it *BridgeRequestValueTransferEncodedIterator) Next() bool {
  2894  	// If the iterator failed, stop iterating
  2895  	if it.fail != nil {
  2896  		return false
  2897  	}
  2898  	// If the iterator completed, deliver directly whatever's available
  2899  	if it.done {
  2900  		select {
  2901  		case log := <-it.logs:
  2902  			it.Event = new(BridgeRequestValueTransferEncoded)
  2903  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2904  				it.fail = err
  2905  				return false
  2906  			}
  2907  			it.Event.Raw = log
  2908  			return true
  2909  
  2910  		default:
  2911  			return false
  2912  		}
  2913  	}
  2914  	// Iterator still in progress, wait for either a data or an error event
  2915  	select {
  2916  	case log := <-it.logs:
  2917  		it.Event = new(BridgeRequestValueTransferEncoded)
  2918  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2919  			it.fail = err
  2920  			return false
  2921  		}
  2922  		it.Event.Raw = log
  2923  		return true
  2924  
  2925  	case err := <-it.sub.Err():
  2926  		it.done = true
  2927  		it.fail = err
  2928  		return it.Next()
  2929  	}
  2930  }
  2931  
  2932  // Error returns any retrieval or parsing error occurred during filtering.
  2933  func (it *BridgeRequestValueTransferEncodedIterator) Error() error {
  2934  	return it.fail
  2935  }
  2936  
  2937  // Close terminates the iteration process, releasing any pending underlying
  2938  // resources.
  2939  func (it *BridgeRequestValueTransferEncodedIterator) Close() error {
  2940  	it.sub.Unsubscribe()
  2941  	return nil
  2942  }
  2943  
  2944  // BridgeRequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the Bridge contract.
  2945  type BridgeRequestValueTransferEncoded struct {
  2946  	TokenType      uint8
  2947  	From           common.Address
  2948  	To             common.Address
  2949  	TokenAddress   common.Address
  2950  	ValueOrTokenId *big.Int
  2951  	RequestNonce   uint64
  2952  	Fee            *big.Int
  2953  	ExtraData      []byte
  2954  	EncodingVer    uint8
  2955  	EncodedData    []byte
  2956  	Raw            types.Log // Blockchain specific contextual infos
  2957  }
  2958  
  2959  // FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
  2960  //
  2961  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
  2962  func (_Bridge *BridgeFilterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeRequestValueTransferEncodedIterator, error) {
  2963  
  2964  	var fromRule []interface{}
  2965  	for _, fromItem := range from {
  2966  		fromRule = append(fromRule, fromItem)
  2967  	}
  2968  	var toRule []interface{}
  2969  	for _, toItem := range to {
  2970  		toRule = append(toRule, toItem)
  2971  	}
  2972  	var tokenAddressRule []interface{}
  2973  	for _, tokenAddressItem := range tokenAddress {
  2974  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  2975  	}
  2976  
  2977  	logs, sub, err := _Bridge.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule)
  2978  	if err != nil {
  2979  		return nil, err
  2980  	}
  2981  	return &BridgeRequestValueTransferEncodedIterator{contract: _Bridge.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil
  2982  }
  2983  
  2984  // WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
  2985  //
  2986  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
  2987  func (_Bridge *BridgeFilterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeRequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
  2988  
  2989  	var fromRule []interface{}
  2990  	for _, fromItem := range from {
  2991  		fromRule = append(fromRule, fromItem)
  2992  	}
  2993  	var toRule []interface{}
  2994  	for _, toItem := range to {
  2995  		toRule = append(toRule, toItem)
  2996  	}
  2997  	var tokenAddressRule []interface{}
  2998  	for _, tokenAddressItem := range tokenAddress {
  2999  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  3000  	}
  3001  
  3002  	logs, sub, err := _Bridge.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule)
  3003  	if err != nil {
  3004  		return nil, err
  3005  	}
  3006  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3007  		defer sub.Unsubscribe()
  3008  		for {
  3009  			select {
  3010  			case log := <-logs:
  3011  				// New log arrived, parse the event and forward to the user
  3012  				event := new(BridgeRequestValueTransferEncoded)
  3013  				if err := _Bridge.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil {
  3014  					return err
  3015  				}
  3016  				event.Raw = log
  3017  
  3018  				select {
  3019  				case sink <- event:
  3020  				case err := <-sub.Err():
  3021  					return err
  3022  				case <-quit:
  3023  					return nil
  3024  				}
  3025  			case err := <-sub.Err():
  3026  				return err
  3027  			case <-quit:
  3028  				return nil
  3029  			}
  3030  		}
  3031  	}), nil
  3032  }
  3033  
  3034  // ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
  3035  //
  3036  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
  3037  func (_Bridge *BridgeFilterer) ParseRequestValueTransferEncoded(log types.Log) (*BridgeRequestValueTransferEncoded, error) {
  3038  	event := new(BridgeRequestValueTransferEncoded)
  3039  	if err := _Bridge.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil {
  3040  		return nil, err
  3041  	}
  3042  	return event, nil
  3043  }
  3044  
  3045  // BridgeTokenDeregisteredIterator is returned from FilterTokenDeregistered and is used to iterate over the raw logs and unpacked data for TokenDeregistered events raised by the Bridge contract.
  3046  type BridgeTokenDeregisteredIterator struct {
  3047  	Event *BridgeTokenDeregistered // Event containing the contract specifics and raw log
  3048  
  3049  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3050  	event    string              // Event name to use for unpacking event data
  3051  
  3052  	logs chan types.Log      // Log channel receiving the found contract events
  3053  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  3054  	done bool                // Whether the subscription completed delivering logs
  3055  	fail error               // Occurred error to stop iteration
  3056  }
  3057  
  3058  // Next advances the iterator to the subsequent event, returning whether there
  3059  // are any more events found. In case of a retrieval or parsing error, false is
  3060  // returned and Error() can be queried for the exact failure.
  3061  func (it *BridgeTokenDeregisteredIterator) Next() bool {
  3062  	// If the iterator failed, stop iterating
  3063  	if it.fail != nil {
  3064  		return false
  3065  	}
  3066  	// If the iterator completed, deliver directly whatever's available
  3067  	if it.done {
  3068  		select {
  3069  		case log := <-it.logs:
  3070  			it.Event = new(BridgeTokenDeregistered)
  3071  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3072  				it.fail = err
  3073  				return false
  3074  			}
  3075  			it.Event.Raw = log
  3076  			return true
  3077  
  3078  		default:
  3079  			return false
  3080  		}
  3081  	}
  3082  	// Iterator still in progress, wait for either a data or an error event
  3083  	select {
  3084  	case log := <-it.logs:
  3085  		it.Event = new(BridgeTokenDeregistered)
  3086  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3087  			it.fail = err
  3088  			return false
  3089  		}
  3090  		it.Event.Raw = log
  3091  		return true
  3092  
  3093  	case err := <-it.sub.Err():
  3094  		it.done = true
  3095  		it.fail = err
  3096  		return it.Next()
  3097  	}
  3098  }
  3099  
  3100  // Error returns any retrieval or parsing error occurred during filtering.
  3101  func (it *BridgeTokenDeregisteredIterator) Error() error {
  3102  	return it.fail
  3103  }
  3104  
  3105  // Close terminates the iteration process, releasing any pending underlying
  3106  // resources.
  3107  func (it *BridgeTokenDeregisteredIterator) Close() error {
  3108  	it.sub.Unsubscribe()
  3109  	return nil
  3110  }
  3111  
  3112  // BridgeTokenDeregistered represents a TokenDeregistered event raised by the Bridge contract.
  3113  type BridgeTokenDeregistered struct {
  3114  	Token common.Address
  3115  	Raw   types.Log // Blockchain specific contextual infos
  3116  }
  3117  
  3118  // FilterTokenDeregistered is a free log retrieval operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
  3119  //
  3120  // Solidity: event TokenDeregistered(address indexed token)
  3121  func (_Bridge *BridgeFilterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTokenDeregisteredIterator, error) {
  3122  
  3123  	var tokenRule []interface{}
  3124  	for _, tokenItem := range token {
  3125  		tokenRule = append(tokenRule, tokenItem)
  3126  	}
  3127  
  3128  	logs, sub, err := _Bridge.contract.FilterLogs(opts, "TokenDeregistered", tokenRule)
  3129  	if err != nil {
  3130  		return nil, err
  3131  	}
  3132  	return &BridgeTokenDeregisteredIterator{contract: _Bridge.contract, event: "TokenDeregistered", logs: logs, sub: sub}, nil
  3133  }
  3134  
  3135  // WatchTokenDeregistered is a free log subscription operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
  3136  //
  3137  // Solidity: event TokenDeregistered(address indexed token)
  3138  func (_Bridge *BridgeFilterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTokenDeregistered, token []common.Address) (event.Subscription, error) {
  3139  
  3140  	var tokenRule []interface{}
  3141  	for _, tokenItem := range token {
  3142  		tokenRule = append(tokenRule, tokenItem)
  3143  	}
  3144  
  3145  	logs, sub, err := _Bridge.contract.WatchLogs(opts, "TokenDeregistered", tokenRule)
  3146  	if err != nil {
  3147  		return nil, err
  3148  	}
  3149  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3150  		defer sub.Unsubscribe()
  3151  		for {
  3152  			select {
  3153  			case log := <-logs:
  3154  				// New log arrived, parse the event and forward to the user
  3155  				event := new(BridgeTokenDeregistered)
  3156  				if err := _Bridge.contract.UnpackLog(event, "TokenDeregistered", log); err != nil {
  3157  					return err
  3158  				}
  3159  				event.Raw = log
  3160  
  3161  				select {
  3162  				case sink <- event:
  3163  				case err := <-sub.Err():
  3164  					return err
  3165  				case <-quit:
  3166  					return nil
  3167  				}
  3168  			case err := <-sub.Err():
  3169  				return err
  3170  			case <-quit:
  3171  				return nil
  3172  			}
  3173  		}
  3174  	}), nil
  3175  }
  3176  
  3177  // ParseTokenDeregistered is a log parse operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
  3178  //
  3179  // Solidity: event TokenDeregistered(address indexed token)
  3180  func (_Bridge *BridgeFilterer) ParseTokenDeregistered(log types.Log) (*BridgeTokenDeregistered, error) {
  3181  	event := new(BridgeTokenDeregistered)
  3182  	if err := _Bridge.contract.UnpackLog(event, "TokenDeregistered", log); err != nil {
  3183  		return nil, err
  3184  	}
  3185  	return event, nil
  3186  }
  3187  
  3188  // BridgeTokenLockedIterator is returned from FilterTokenLocked and is used to iterate over the raw logs and unpacked data for TokenLocked events raised by the Bridge contract.
  3189  type BridgeTokenLockedIterator struct {
  3190  	Event *BridgeTokenLocked // Event containing the contract specifics and raw log
  3191  
  3192  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3193  	event    string              // Event name to use for unpacking event data
  3194  
  3195  	logs chan types.Log      // Log channel receiving the found contract events
  3196  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  3197  	done bool                // Whether the subscription completed delivering logs
  3198  	fail error               // Occurred error to stop iteration
  3199  }
  3200  
  3201  // Next advances the iterator to the subsequent event, returning whether there
  3202  // are any more events found. In case of a retrieval or parsing error, false is
  3203  // returned and Error() can be queried for the exact failure.
  3204  func (it *BridgeTokenLockedIterator) Next() bool {
  3205  	// If the iterator failed, stop iterating
  3206  	if it.fail != nil {
  3207  		return false
  3208  	}
  3209  	// If the iterator completed, deliver directly whatever's available
  3210  	if it.done {
  3211  		select {
  3212  		case log := <-it.logs:
  3213  			it.Event = new(BridgeTokenLocked)
  3214  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3215  				it.fail = err
  3216  				return false
  3217  			}
  3218  			it.Event.Raw = log
  3219  			return true
  3220  
  3221  		default:
  3222  			return false
  3223  		}
  3224  	}
  3225  	// Iterator still in progress, wait for either a data or an error event
  3226  	select {
  3227  	case log := <-it.logs:
  3228  		it.Event = new(BridgeTokenLocked)
  3229  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3230  			it.fail = err
  3231  			return false
  3232  		}
  3233  		it.Event.Raw = log
  3234  		return true
  3235  
  3236  	case err := <-it.sub.Err():
  3237  		it.done = true
  3238  		it.fail = err
  3239  		return it.Next()
  3240  	}
  3241  }
  3242  
  3243  // Error returns any retrieval or parsing error occurred during filtering.
  3244  func (it *BridgeTokenLockedIterator) Error() error {
  3245  	return it.fail
  3246  }
  3247  
  3248  // Close terminates the iteration process, releasing any pending underlying
  3249  // resources.
  3250  func (it *BridgeTokenLockedIterator) Close() error {
  3251  	it.sub.Unsubscribe()
  3252  	return nil
  3253  }
  3254  
  3255  // BridgeTokenLocked represents a TokenLocked event raised by the Bridge contract.
  3256  type BridgeTokenLocked struct {
  3257  	Token common.Address
  3258  	Raw   types.Log // Blockchain specific contextual infos
  3259  }
  3260  
  3261  // FilterTokenLocked is a free log retrieval operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
  3262  //
  3263  // Solidity: event TokenLocked(address indexed token)
  3264  func (_Bridge *BridgeFilterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTokenLockedIterator, error) {
  3265  
  3266  	var tokenRule []interface{}
  3267  	for _, tokenItem := range token {
  3268  		tokenRule = append(tokenRule, tokenItem)
  3269  	}
  3270  
  3271  	logs, sub, err := _Bridge.contract.FilterLogs(opts, "TokenLocked", tokenRule)
  3272  	if err != nil {
  3273  		return nil, err
  3274  	}
  3275  	return &BridgeTokenLockedIterator{contract: _Bridge.contract, event: "TokenLocked", logs: logs, sub: sub}, nil
  3276  }
  3277  
  3278  // WatchTokenLocked is a free log subscription operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
  3279  //
  3280  // Solidity: event TokenLocked(address indexed token)
  3281  func (_Bridge *BridgeFilterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *BridgeTokenLocked, token []common.Address) (event.Subscription, error) {
  3282  
  3283  	var tokenRule []interface{}
  3284  	for _, tokenItem := range token {
  3285  		tokenRule = append(tokenRule, tokenItem)
  3286  	}
  3287  
  3288  	logs, sub, err := _Bridge.contract.WatchLogs(opts, "TokenLocked", tokenRule)
  3289  	if err != nil {
  3290  		return nil, err
  3291  	}
  3292  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3293  		defer sub.Unsubscribe()
  3294  		for {
  3295  			select {
  3296  			case log := <-logs:
  3297  				// New log arrived, parse the event and forward to the user
  3298  				event := new(BridgeTokenLocked)
  3299  				if err := _Bridge.contract.UnpackLog(event, "TokenLocked", log); err != nil {
  3300  					return err
  3301  				}
  3302  				event.Raw = log
  3303  
  3304  				select {
  3305  				case sink <- event:
  3306  				case err := <-sub.Err():
  3307  					return err
  3308  				case <-quit:
  3309  					return nil
  3310  				}
  3311  			case err := <-sub.Err():
  3312  				return err
  3313  			case <-quit:
  3314  				return nil
  3315  			}
  3316  		}
  3317  	}), nil
  3318  }
  3319  
  3320  // ParseTokenLocked is a log parse operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
  3321  //
  3322  // Solidity: event TokenLocked(address indexed token)
  3323  func (_Bridge *BridgeFilterer) ParseTokenLocked(log types.Log) (*BridgeTokenLocked, error) {
  3324  	event := new(BridgeTokenLocked)
  3325  	if err := _Bridge.contract.UnpackLog(event, "TokenLocked", log); err != nil {
  3326  		return nil, err
  3327  	}
  3328  	return event, nil
  3329  }
  3330  
  3331  // BridgeTokenRegisteredIterator is returned from FilterTokenRegistered and is used to iterate over the raw logs and unpacked data for TokenRegistered events raised by the Bridge contract.
  3332  type BridgeTokenRegisteredIterator struct {
  3333  	Event *BridgeTokenRegistered // Event containing the contract specifics and raw log
  3334  
  3335  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3336  	event    string              // Event name to use for unpacking event data
  3337  
  3338  	logs chan types.Log      // Log channel receiving the found contract events
  3339  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  3340  	done bool                // Whether the subscription completed delivering logs
  3341  	fail error               // Occurred error to stop iteration
  3342  }
  3343  
  3344  // Next advances the iterator to the subsequent event, returning whether there
  3345  // are any more events found. In case of a retrieval or parsing error, false is
  3346  // returned and Error() can be queried for the exact failure.
  3347  func (it *BridgeTokenRegisteredIterator) Next() bool {
  3348  	// If the iterator failed, stop iterating
  3349  	if it.fail != nil {
  3350  		return false
  3351  	}
  3352  	// If the iterator completed, deliver directly whatever's available
  3353  	if it.done {
  3354  		select {
  3355  		case log := <-it.logs:
  3356  			it.Event = new(BridgeTokenRegistered)
  3357  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3358  				it.fail = err
  3359  				return false
  3360  			}
  3361  			it.Event.Raw = log
  3362  			return true
  3363  
  3364  		default:
  3365  			return false
  3366  		}
  3367  	}
  3368  	// Iterator still in progress, wait for either a data or an error event
  3369  	select {
  3370  	case log := <-it.logs:
  3371  		it.Event = new(BridgeTokenRegistered)
  3372  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3373  			it.fail = err
  3374  			return false
  3375  		}
  3376  		it.Event.Raw = log
  3377  		return true
  3378  
  3379  	case err := <-it.sub.Err():
  3380  		it.done = true
  3381  		it.fail = err
  3382  		return it.Next()
  3383  	}
  3384  }
  3385  
  3386  // Error returns any retrieval or parsing error occurred during filtering.
  3387  func (it *BridgeTokenRegisteredIterator) Error() error {
  3388  	return it.fail
  3389  }
  3390  
  3391  // Close terminates the iteration process, releasing any pending underlying
  3392  // resources.
  3393  func (it *BridgeTokenRegisteredIterator) Close() error {
  3394  	it.sub.Unsubscribe()
  3395  	return nil
  3396  }
  3397  
  3398  // BridgeTokenRegistered represents a TokenRegistered event raised by the Bridge contract.
  3399  type BridgeTokenRegistered struct {
  3400  	Token common.Address
  3401  	Raw   types.Log // Blockchain specific contextual infos
  3402  }
  3403  
  3404  // FilterTokenRegistered is a free log retrieval operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
  3405  //
  3406  // Solidity: event TokenRegistered(address indexed token)
  3407  func (_Bridge *BridgeFilterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTokenRegisteredIterator, error) {
  3408  
  3409  	var tokenRule []interface{}
  3410  	for _, tokenItem := range token {
  3411  		tokenRule = append(tokenRule, tokenItem)
  3412  	}
  3413  
  3414  	logs, sub, err := _Bridge.contract.FilterLogs(opts, "TokenRegistered", tokenRule)
  3415  	if err != nil {
  3416  		return nil, err
  3417  	}
  3418  	return &BridgeTokenRegisteredIterator{contract: _Bridge.contract, event: "TokenRegistered", logs: logs, sub: sub}, nil
  3419  }
  3420  
  3421  // WatchTokenRegistered is a free log subscription operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
  3422  //
  3423  // Solidity: event TokenRegistered(address indexed token)
  3424  func (_Bridge *BridgeFilterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTokenRegistered, token []common.Address) (event.Subscription, error) {
  3425  
  3426  	var tokenRule []interface{}
  3427  	for _, tokenItem := range token {
  3428  		tokenRule = append(tokenRule, tokenItem)
  3429  	}
  3430  
  3431  	logs, sub, err := _Bridge.contract.WatchLogs(opts, "TokenRegistered", tokenRule)
  3432  	if err != nil {
  3433  		return nil, err
  3434  	}
  3435  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3436  		defer sub.Unsubscribe()
  3437  		for {
  3438  			select {
  3439  			case log := <-logs:
  3440  				// New log arrived, parse the event and forward to the user
  3441  				event := new(BridgeTokenRegistered)
  3442  				if err := _Bridge.contract.UnpackLog(event, "TokenRegistered", log); err != nil {
  3443  					return err
  3444  				}
  3445  				event.Raw = log
  3446  
  3447  				select {
  3448  				case sink <- event:
  3449  				case err := <-sub.Err():
  3450  					return err
  3451  				case <-quit:
  3452  					return nil
  3453  				}
  3454  			case err := <-sub.Err():
  3455  				return err
  3456  			case <-quit:
  3457  				return nil
  3458  			}
  3459  		}
  3460  	}), nil
  3461  }
  3462  
  3463  // ParseTokenRegistered is a log parse operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
  3464  //
  3465  // Solidity: event TokenRegistered(address indexed token)
  3466  func (_Bridge *BridgeFilterer) ParseTokenRegistered(log types.Log) (*BridgeTokenRegistered, error) {
  3467  	event := new(BridgeTokenRegistered)
  3468  	if err := _Bridge.contract.UnpackLog(event, "TokenRegistered", log); err != nil {
  3469  		return nil, err
  3470  	}
  3471  	return event, nil
  3472  }
  3473  
  3474  // BridgeTokenUnlockedIterator is returned from FilterTokenUnlocked and is used to iterate over the raw logs and unpacked data for TokenUnlocked events raised by the Bridge contract.
  3475  type BridgeTokenUnlockedIterator struct {
  3476  	Event *BridgeTokenUnlocked // Event containing the contract specifics and raw log
  3477  
  3478  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3479  	event    string              // Event name to use for unpacking event data
  3480  
  3481  	logs chan types.Log      // Log channel receiving the found contract events
  3482  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  3483  	done bool                // Whether the subscription completed delivering logs
  3484  	fail error               // Occurred error to stop iteration
  3485  }
  3486  
  3487  // Next advances the iterator to the subsequent event, returning whether there
  3488  // are any more events found. In case of a retrieval or parsing error, false is
  3489  // returned and Error() can be queried for the exact failure.
  3490  func (it *BridgeTokenUnlockedIterator) Next() bool {
  3491  	// If the iterator failed, stop iterating
  3492  	if it.fail != nil {
  3493  		return false
  3494  	}
  3495  	// If the iterator completed, deliver directly whatever's available
  3496  	if it.done {
  3497  		select {
  3498  		case log := <-it.logs:
  3499  			it.Event = new(BridgeTokenUnlocked)
  3500  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3501  				it.fail = err
  3502  				return false
  3503  			}
  3504  			it.Event.Raw = log
  3505  			return true
  3506  
  3507  		default:
  3508  			return false
  3509  		}
  3510  	}
  3511  	// Iterator still in progress, wait for either a data or an error event
  3512  	select {
  3513  	case log := <-it.logs:
  3514  		it.Event = new(BridgeTokenUnlocked)
  3515  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3516  			it.fail = err
  3517  			return false
  3518  		}
  3519  		it.Event.Raw = log
  3520  		return true
  3521  
  3522  	case err := <-it.sub.Err():
  3523  		it.done = true
  3524  		it.fail = err
  3525  		return it.Next()
  3526  	}
  3527  }
  3528  
  3529  // Error returns any retrieval or parsing error occurred during filtering.
  3530  func (it *BridgeTokenUnlockedIterator) Error() error {
  3531  	return it.fail
  3532  }
  3533  
  3534  // Close terminates the iteration process, releasing any pending underlying
  3535  // resources.
  3536  func (it *BridgeTokenUnlockedIterator) Close() error {
  3537  	it.sub.Unsubscribe()
  3538  	return nil
  3539  }
  3540  
  3541  // BridgeTokenUnlocked represents a TokenUnlocked event raised by the Bridge contract.
  3542  type BridgeTokenUnlocked struct {
  3543  	Token common.Address
  3544  	Raw   types.Log // Blockchain specific contextual infos
  3545  }
  3546  
  3547  // FilterTokenUnlocked is a free log retrieval operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
  3548  //
  3549  // Solidity: event TokenUnlocked(address indexed token)
  3550  func (_Bridge *BridgeFilterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTokenUnlockedIterator, error) {
  3551  
  3552  	var tokenRule []interface{}
  3553  	for _, tokenItem := range token {
  3554  		tokenRule = append(tokenRule, tokenItem)
  3555  	}
  3556  
  3557  	logs, sub, err := _Bridge.contract.FilterLogs(opts, "TokenUnlocked", tokenRule)
  3558  	if err != nil {
  3559  		return nil, err
  3560  	}
  3561  	return &BridgeTokenUnlockedIterator{contract: _Bridge.contract, event: "TokenUnlocked", logs: logs, sub: sub}, nil
  3562  }
  3563  
  3564  // WatchTokenUnlocked is a free log subscription operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
  3565  //
  3566  // Solidity: event TokenUnlocked(address indexed token)
  3567  func (_Bridge *BridgeFilterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTokenUnlocked, token []common.Address) (event.Subscription, error) {
  3568  
  3569  	var tokenRule []interface{}
  3570  	for _, tokenItem := range token {
  3571  		tokenRule = append(tokenRule, tokenItem)
  3572  	}
  3573  
  3574  	logs, sub, err := _Bridge.contract.WatchLogs(opts, "TokenUnlocked", tokenRule)
  3575  	if err != nil {
  3576  		return nil, err
  3577  	}
  3578  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3579  		defer sub.Unsubscribe()
  3580  		for {
  3581  			select {
  3582  			case log := <-logs:
  3583  				// New log arrived, parse the event and forward to the user
  3584  				event := new(BridgeTokenUnlocked)
  3585  				if err := _Bridge.contract.UnpackLog(event, "TokenUnlocked", log); err != nil {
  3586  					return err
  3587  				}
  3588  				event.Raw = log
  3589  
  3590  				select {
  3591  				case sink <- event:
  3592  				case err := <-sub.Err():
  3593  					return err
  3594  				case <-quit:
  3595  					return nil
  3596  				}
  3597  			case err := <-sub.Err():
  3598  				return err
  3599  			case <-quit:
  3600  				return nil
  3601  			}
  3602  		}
  3603  	}), nil
  3604  }
  3605  
  3606  // ParseTokenUnlocked is a log parse operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
  3607  //
  3608  // Solidity: event TokenUnlocked(address indexed token)
  3609  func (_Bridge *BridgeFilterer) ParseTokenUnlocked(log types.Log) (*BridgeTokenUnlocked, error) {
  3610  	event := new(BridgeTokenUnlocked)
  3611  	if err := _Bridge.contract.UnpackLog(event, "TokenUnlocked", log); err != nil {
  3612  		return nil, err
  3613  	}
  3614  	return event, nil
  3615  }
  3616  
  3617  // BridgeCounterPartABI is the input ABI used to generate the binding from.
  3618  const BridgeCounterPartABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"counterpartBridge\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\"}],\"name\":\"setCounterPartBridge\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}]"
  3619  
  3620  // BridgeCounterPartBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  3621  const BridgeCounterPartBinRuntime = `608060405234801561001057600080fd5b50600436106100625760003560e01c80633a34853314610067578063715018a61461008b57806387b04c55146100955780638da5cb5b146100bb5780638f32d59b146100c3578063f2fde38b146100df575b600080fd5b61006f610105565b604080516001600160a01b039092168252519081900360200190f35b610093610114565b005b610093600480360360208110156100ab57600080fd5b50356001600160a01b03166101ba565b61006f610238565b6100cb610247565b604080519115158252519081900360200190f35b610093600480360360208110156100f557600080fd5b50356001600160a01b0316610258565b6001546001600160a01b031681565b61011c610247565b6101705760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6101c2610247565b6102165760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b610260610247565b6102b45760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6102bd816102c0565b50565b6001600160a01b03811661030857604051600160e51b62461bcd0281526004018080602001828103825260268152602001806103646026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a165627a7a72305820d401fc25d58a9a119d69c5b250c7612066d072970920827a7c17ec3391d0227f0029`
  3622  
  3623  // BridgeCounterPartFuncSigs maps the 4-byte function signature to its string representation.
  3624  var BridgeCounterPartFuncSigs = map[string]string{
  3625  	"3a348533": "counterpartBridge()",
  3626  	"8f32d59b": "isOwner()",
  3627  	"8da5cb5b": "owner()",
  3628  	"715018a6": "renounceOwnership()",
  3629  	"87b04c55": "setCounterPartBridge(address)",
  3630  	"f2fde38b": "transferOwnership(address)",
  3631  }
  3632  
  3633  // BridgeCounterPartBin is the compiled bytecode used for deploying new contracts.
  3634  var BridgeCounterPartBin = "0x60806040819052600080546001600160a01b03191633178082556001600160a01b0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36103b5806100576000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80633a34853314610067578063715018a61461008b57806387b04c55146100955780638da5cb5b146100bb5780638f32d59b146100c3578063f2fde38b146100df575b600080fd5b61006f610105565b604080516001600160a01b039092168252519081900360200190f35b610093610114565b005b610093600480360360208110156100ab57600080fd5b50356001600160a01b03166101ba565b61006f610238565b6100cb610247565b604080519115158252519081900360200190f35b610093600480360360208110156100f557600080fd5b50356001600160a01b0316610258565b6001546001600160a01b031681565b61011c610247565b6101705760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6101c2610247565b6102165760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b610260610247565b6102b45760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6102bd816102c0565b50565b6001600160a01b03811661030857604051600160e51b62461bcd0281526004018080602001828103825260268152602001806103646026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a165627a7a72305820d401fc25d58a9a119d69c5b250c7612066d072970920827a7c17ec3391d0227f0029"
  3635  
  3636  // DeployBridgeCounterPart deploys a new Klaytn contract, binding an instance of BridgeCounterPart to it.
  3637  func DeployBridgeCounterPart(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *BridgeCounterPart, error) {
  3638  	parsed, err := abi.JSON(strings.NewReader(BridgeCounterPartABI))
  3639  	if err != nil {
  3640  		return common.Address{}, nil, nil, err
  3641  	}
  3642  
  3643  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(BridgeCounterPartBin), backend)
  3644  	if err != nil {
  3645  		return common.Address{}, nil, nil, err
  3646  	}
  3647  	return address, tx, &BridgeCounterPart{BridgeCounterPartCaller: BridgeCounterPartCaller{contract: contract}, BridgeCounterPartTransactor: BridgeCounterPartTransactor{contract: contract}, BridgeCounterPartFilterer: BridgeCounterPartFilterer{contract: contract}}, nil
  3648  }
  3649  
  3650  // BridgeCounterPart is an auto generated Go binding around a Klaytn contract.
  3651  type BridgeCounterPart struct {
  3652  	BridgeCounterPartCaller     // Read-only binding to the contract
  3653  	BridgeCounterPartTransactor // Write-only binding to the contract
  3654  	BridgeCounterPartFilterer   // Log filterer for contract events
  3655  }
  3656  
  3657  // BridgeCounterPartCaller is an auto generated read-only Go binding around a Klaytn contract.
  3658  type BridgeCounterPartCaller struct {
  3659  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3660  }
  3661  
  3662  // BridgeCounterPartTransactor is an auto generated write-only Go binding around a Klaytn contract.
  3663  type BridgeCounterPartTransactor struct {
  3664  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3665  }
  3666  
  3667  // BridgeCounterPartFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  3668  type BridgeCounterPartFilterer struct {
  3669  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3670  }
  3671  
  3672  // BridgeCounterPartSession is an auto generated Go binding around a Klaytn contract,
  3673  // with pre-set call and transact options.
  3674  type BridgeCounterPartSession struct {
  3675  	Contract     *BridgeCounterPart // Generic contract binding to set the session for
  3676  	CallOpts     bind.CallOpts      // Call options to use throughout this session
  3677  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  3678  }
  3679  
  3680  // BridgeCounterPartCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  3681  // with pre-set call options.
  3682  type BridgeCounterPartCallerSession struct {
  3683  	Contract *BridgeCounterPartCaller // Generic contract caller binding to set the session for
  3684  	CallOpts bind.CallOpts            // Call options to use throughout this session
  3685  }
  3686  
  3687  // BridgeCounterPartTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  3688  // with pre-set transact options.
  3689  type BridgeCounterPartTransactorSession struct {
  3690  	Contract     *BridgeCounterPartTransactor // Generic contract transactor binding to set the session for
  3691  	TransactOpts bind.TransactOpts            // Transaction auth options to use throughout this session
  3692  }
  3693  
  3694  // BridgeCounterPartRaw is an auto generated low-level Go binding around a Klaytn contract.
  3695  type BridgeCounterPartRaw struct {
  3696  	Contract *BridgeCounterPart // Generic contract binding to access the raw methods on
  3697  }
  3698  
  3699  // BridgeCounterPartCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  3700  type BridgeCounterPartCallerRaw struct {
  3701  	Contract *BridgeCounterPartCaller // Generic read-only contract binding to access the raw methods on
  3702  }
  3703  
  3704  // BridgeCounterPartTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  3705  type BridgeCounterPartTransactorRaw struct {
  3706  	Contract *BridgeCounterPartTransactor // Generic write-only contract binding to access the raw methods on
  3707  }
  3708  
  3709  // NewBridgeCounterPart creates a new instance of BridgeCounterPart, bound to a specific deployed contract.
  3710  func NewBridgeCounterPart(address common.Address, backend bind.ContractBackend) (*BridgeCounterPart, error) {
  3711  	contract, err := bindBridgeCounterPart(address, backend, backend, backend)
  3712  	if err != nil {
  3713  		return nil, err
  3714  	}
  3715  	return &BridgeCounterPart{BridgeCounterPartCaller: BridgeCounterPartCaller{contract: contract}, BridgeCounterPartTransactor: BridgeCounterPartTransactor{contract: contract}, BridgeCounterPartFilterer: BridgeCounterPartFilterer{contract: contract}}, nil
  3716  }
  3717  
  3718  // NewBridgeCounterPartCaller creates a new read-only instance of BridgeCounterPart, bound to a specific deployed contract.
  3719  func NewBridgeCounterPartCaller(address common.Address, caller bind.ContractCaller) (*BridgeCounterPartCaller, error) {
  3720  	contract, err := bindBridgeCounterPart(address, caller, nil, nil)
  3721  	if err != nil {
  3722  		return nil, err
  3723  	}
  3724  	return &BridgeCounterPartCaller{contract: contract}, nil
  3725  }
  3726  
  3727  // NewBridgeCounterPartTransactor creates a new write-only instance of BridgeCounterPart, bound to a specific deployed contract.
  3728  func NewBridgeCounterPartTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeCounterPartTransactor, error) {
  3729  	contract, err := bindBridgeCounterPart(address, nil, transactor, nil)
  3730  	if err != nil {
  3731  		return nil, err
  3732  	}
  3733  	return &BridgeCounterPartTransactor{contract: contract}, nil
  3734  }
  3735  
  3736  // NewBridgeCounterPartFilterer creates a new log filterer instance of BridgeCounterPart, bound to a specific deployed contract.
  3737  func NewBridgeCounterPartFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeCounterPartFilterer, error) {
  3738  	contract, err := bindBridgeCounterPart(address, nil, nil, filterer)
  3739  	if err != nil {
  3740  		return nil, err
  3741  	}
  3742  	return &BridgeCounterPartFilterer{contract: contract}, nil
  3743  }
  3744  
  3745  // bindBridgeCounterPart binds a generic wrapper to an already deployed contract.
  3746  func bindBridgeCounterPart(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  3747  	parsed, err := abi.JSON(strings.NewReader(BridgeCounterPartABI))
  3748  	if err != nil {
  3749  		return nil, err
  3750  	}
  3751  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  3752  }
  3753  
  3754  // Call invokes the (constant) contract method with params as input values and
  3755  // sets the output to result. The result type might be a single field for simple
  3756  // returns, a slice of interfaces for anonymous returns and a struct for named
  3757  // returns.
  3758  func (_BridgeCounterPart *BridgeCounterPartRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  3759  	return _BridgeCounterPart.Contract.BridgeCounterPartCaller.contract.Call(opts, result, method, params...)
  3760  }
  3761  
  3762  // Transfer initiates a plain transaction to move funds to the contract, calling
  3763  // its default method if one is available.
  3764  func (_BridgeCounterPart *BridgeCounterPartRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  3765  	return _BridgeCounterPart.Contract.BridgeCounterPartTransactor.contract.Transfer(opts)
  3766  }
  3767  
  3768  // Transact invokes the (paid) contract method with params as input values.
  3769  func (_BridgeCounterPart *BridgeCounterPartRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  3770  	return _BridgeCounterPart.Contract.BridgeCounterPartTransactor.contract.Transact(opts, method, params...)
  3771  }
  3772  
  3773  // Call invokes the (constant) contract method with params as input values and
  3774  // sets the output to result. The result type might be a single field for simple
  3775  // returns, a slice of interfaces for anonymous returns and a struct for named
  3776  // returns.
  3777  func (_BridgeCounterPart *BridgeCounterPartCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  3778  	return _BridgeCounterPart.Contract.contract.Call(opts, result, method, params...)
  3779  }
  3780  
  3781  // Transfer initiates a plain transaction to move funds to the contract, calling
  3782  // its default method if one is available.
  3783  func (_BridgeCounterPart *BridgeCounterPartTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  3784  	return _BridgeCounterPart.Contract.contract.Transfer(opts)
  3785  }
  3786  
  3787  // Transact invokes the (paid) contract method with params as input values.
  3788  func (_BridgeCounterPart *BridgeCounterPartTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  3789  	return _BridgeCounterPart.Contract.contract.Transact(opts, method, params...)
  3790  }
  3791  
  3792  // CounterpartBridge is a free data retrieval call binding the contract method 0x3a348533.
  3793  //
  3794  // Solidity: function counterpartBridge() view returns(address)
  3795  func (_BridgeCounterPart *BridgeCounterPartCaller) CounterpartBridge(opts *bind.CallOpts) (common.Address, error) {
  3796  	var (
  3797  		ret0 = new(common.Address)
  3798  	)
  3799  	out := ret0
  3800  	err := _BridgeCounterPart.contract.Call(opts, out, "counterpartBridge")
  3801  	return *ret0, err
  3802  }
  3803  
  3804  // CounterpartBridge is a free data retrieval call binding the contract method 0x3a348533.
  3805  //
  3806  // Solidity: function counterpartBridge() view returns(address)
  3807  func (_BridgeCounterPart *BridgeCounterPartSession) CounterpartBridge() (common.Address, error) {
  3808  	return _BridgeCounterPart.Contract.CounterpartBridge(&_BridgeCounterPart.CallOpts)
  3809  }
  3810  
  3811  // CounterpartBridge is a free data retrieval call binding the contract method 0x3a348533.
  3812  //
  3813  // Solidity: function counterpartBridge() view returns(address)
  3814  func (_BridgeCounterPart *BridgeCounterPartCallerSession) CounterpartBridge() (common.Address, error) {
  3815  	return _BridgeCounterPart.Contract.CounterpartBridge(&_BridgeCounterPart.CallOpts)
  3816  }
  3817  
  3818  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  3819  //
  3820  // Solidity: function isOwner() view returns(bool)
  3821  func (_BridgeCounterPart *BridgeCounterPartCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
  3822  	var (
  3823  		ret0 = new(bool)
  3824  	)
  3825  	out := ret0
  3826  	err := _BridgeCounterPart.contract.Call(opts, out, "isOwner")
  3827  	return *ret0, err
  3828  }
  3829  
  3830  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  3831  //
  3832  // Solidity: function isOwner() view returns(bool)
  3833  func (_BridgeCounterPart *BridgeCounterPartSession) IsOwner() (bool, error) {
  3834  	return _BridgeCounterPart.Contract.IsOwner(&_BridgeCounterPart.CallOpts)
  3835  }
  3836  
  3837  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  3838  //
  3839  // Solidity: function isOwner() view returns(bool)
  3840  func (_BridgeCounterPart *BridgeCounterPartCallerSession) IsOwner() (bool, error) {
  3841  	return _BridgeCounterPart.Contract.IsOwner(&_BridgeCounterPart.CallOpts)
  3842  }
  3843  
  3844  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  3845  //
  3846  // Solidity: function owner() view returns(address)
  3847  func (_BridgeCounterPart *BridgeCounterPartCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  3848  	var (
  3849  		ret0 = new(common.Address)
  3850  	)
  3851  	out := ret0
  3852  	err := _BridgeCounterPart.contract.Call(opts, out, "owner")
  3853  	return *ret0, err
  3854  }
  3855  
  3856  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  3857  //
  3858  // Solidity: function owner() view returns(address)
  3859  func (_BridgeCounterPart *BridgeCounterPartSession) Owner() (common.Address, error) {
  3860  	return _BridgeCounterPart.Contract.Owner(&_BridgeCounterPart.CallOpts)
  3861  }
  3862  
  3863  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  3864  //
  3865  // Solidity: function owner() view returns(address)
  3866  func (_BridgeCounterPart *BridgeCounterPartCallerSession) Owner() (common.Address, error) {
  3867  	return _BridgeCounterPart.Contract.Owner(&_BridgeCounterPart.CallOpts)
  3868  }
  3869  
  3870  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  3871  //
  3872  // Solidity: function renounceOwnership() returns()
  3873  func (_BridgeCounterPart *BridgeCounterPartTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  3874  	return _BridgeCounterPart.contract.Transact(opts, "renounceOwnership")
  3875  }
  3876  
  3877  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  3878  //
  3879  // Solidity: function renounceOwnership() returns()
  3880  func (_BridgeCounterPart *BridgeCounterPartSession) RenounceOwnership() (*types.Transaction, error) {
  3881  	return _BridgeCounterPart.Contract.RenounceOwnership(&_BridgeCounterPart.TransactOpts)
  3882  }
  3883  
  3884  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  3885  //
  3886  // Solidity: function renounceOwnership() returns()
  3887  func (_BridgeCounterPart *BridgeCounterPartTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  3888  	return _BridgeCounterPart.Contract.RenounceOwnership(&_BridgeCounterPart.TransactOpts)
  3889  }
  3890  
  3891  // SetCounterPartBridge is a paid mutator transaction binding the contract method 0x87b04c55.
  3892  //
  3893  // Solidity: function setCounterPartBridge(address _bridge) returns()
  3894  func (_BridgeCounterPart *BridgeCounterPartTransactor) SetCounterPartBridge(opts *bind.TransactOpts, _bridge common.Address) (*types.Transaction, error) {
  3895  	return _BridgeCounterPart.contract.Transact(opts, "setCounterPartBridge", _bridge)
  3896  }
  3897  
  3898  // SetCounterPartBridge is a paid mutator transaction binding the contract method 0x87b04c55.
  3899  //
  3900  // Solidity: function setCounterPartBridge(address _bridge) returns()
  3901  func (_BridgeCounterPart *BridgeCounterPartSession) SetCounterPartBridge(_bridge common.Address) (*types.Transaction, error) {
  3902  	return _BridgeCounterPart.Contract.SetCounterPartBridge(&_BridgeCounterPart.TransactOpts, _bridge)
  3903  }
  3904  
  3905  // SetCounterPartBridge is a paid mutator transaction binding the contract method 0x87b04c55.
  3906  //
  3907  // Solidity: function setCounterPartBridge(address _bridge) returns()
  3908  func (_BridgeCounterPart *BridgeCounterPartTransactorSession) SetCounterPartBridge(_bridge common.Address) (*types.Transaction, error) {
  3909  	return _BridgeCounterPart.Contract.SetCounterPartBridge(&_BridgeCounterPart.TransactOpts, _bridge)
  3910  }
  3911  
  3912  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  3913  //
  3914  // Solidity: function transferOwnership(address newOwner) returns()
  3915  func (_BridgeCounterPart *BridgeCounterPartTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  3916  	return _BridgeCounterPart.contract.Transact(opts, "transferOwnership", newOwner)
  3917  }
  3918  
  3919  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  3920  //
  3921  // Solidity: function transferOwnership(address newOwner) returns()
  3922  func (_BridgeCounterPart *BridgeCounterPartSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  3923  	return _BridgeCounterPart.Contract.TransferOwnership(&_BridgeCounterPart.TransactOpts, newOwner)
  3924  }
  3925  
  3926  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  3927  //
  3928  // Solidity: function transferOwnership(address newOwner) returns()
  3929  func (_BridgeCounterPart *BridgeCounterPartTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  3930  	return _BridgeCounterPart.Contract.TransferOwnership(&_BridgeCounterPart.TransactOpts, newOwner)
  3931  }
  3932  
  3933  // BridgeCounterPartOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeCounterPart contract.
  3934  type BridgeCounterPartOwnershipTransferredIterator struct {
  3935  	Event *BridgeCounterPartOwnershipTransferred // Event containing the contract specifics and raw log
  3936  
  3937  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3938  	event    string              // Event name to use for unpacking event data
  3939  
  3940  	logs chan types.Log      // Log channel receiving the found contract events
  3941  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  3942  	done bool                // Whether the subscription completed delivering logs
  3943  	fail error               // Occurred error to stop iteration
  3944  }
  3945  
  3946  // Next advances the iterator to the subsequent event, returning whether there
  3947  // are any more events found. In case of a retrieval or parsing error, false is
  3948  // returned and Error() can be queried for the exact failure.
  3949  func (it *BridgeCounterPartOwnershipTransferredIterator) Next() bool {
  3950  	// If the iterator failed, stop iterating
  3951  	if it.fail != nil {
  3952  		return false
  3953  	}
  3954  	// If the iterator completed, deliver directly whatever's available
  3955  	if it.done {
  3956  		select {
  3957  		case log := <-it.logs:
  3958  			it.Event = new(BridgeCounterPartOwnershipTransferred)
  3959  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3960  				it.fail = err
  3961  				return false
  3962  			}
  3963  			it.Event.Raw = log
  3964  			return true
  3965  
  3966  		default:
  3967  			return false
  3968  		}
  3969  	}
  3970  	// Iterator still in progress, wait for either a data or an error event
  3971  	select {
  3972  	case log := <-it.logs:
  3973  		it.Event = new(BridgeCounterPartOwnershipTransferred)
  3974  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3975  			it.fail = err
  3976  			return false
  3977  		}
  3978  		it.Event.Raw = log
  3979  		return true
  3980  
  3981  	case err := <-it.sub.Err():
  3982  		it.done = true
  3983  		it.fail = err
  3984  		return it.Next()
  3985  	}
  3986  }
  3987  
  3988  // Error returns any retrieval or parsing error occurred during filtering.
  3989  func (it *BridgeCounterPartOwnershipTransferredIterator) Error() error {
  3990  	return it.fail
  3991  }
  3992  
  3993  // Close terminates the iteration process, releasing any pending underlying
  3994  // resources.
  3995  func (it *BridgeCounterPartOwnershipTransferredIterator) Close() error {
  3996  	it.sub.Unsubscribe()
  3997  	return nil
  3998  }
  3999  
  4000  // BridgeCounterPartOwnershipTransferred represents a OwnershipTransferred event raised by the BridgeCounterPart contract.
  4001  type BridgeCounterPartOwnershipTransferred struct {
  4002  	PreviousOwner common.Address
  4003  	NewOwner      common.Address
  4004  	Raw           types.Log // Blockchain specific contextual infos
  4005  }
  4006  
  4007  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  4008  //
  4009  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  4010  func (_BridgeCounterPart *BridgeCounterPartFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeCounterPartOwnershipTransferredIterator, error) {
  4011  
  4012  	var previousOwnerRule []interface{}
  4013  	for _, previousOwnerItem := range previousOwner {
  4014  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  4015  	}
  4016  	var newOwnerRule []interface{}
  4017  	for _, newOwnerItem := range newOwner {
  4018  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  4019  	}
  4020  
  4021  	logs, sub, err := _BridgeCounterPart.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  4022  	if err != nil {
  4023  		return nil, err
  4024  	}
  4025  	return &BridgeCounterPartOwnershipTransferredIterator{contract: _BridgeCounterPart.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  4026  }
  4027  
  4028  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  4029  //
  4030  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  4031  func (_BridgeCounterPart *BridgeCounterPartFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeCounterPartOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  4032  
  4033  	var previousOwnerRule []interface{}
  4034  	for _, previousOwnerItem := range previousOwner {
  4035  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  4036  	}
  4037  	var newOwnerRule []interface{}
  4038  	for _, newOwnerItem := range newOwner {
  4039  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  4040  	}
  4041  
  4042  	logs, sub, err := _BridgeCounterPart.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  4043  	if err != nil {
  4044  		return nil, err
  4045  	}
  4046  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4047  		defer sub.Unsubscribe()
  4048  		for {
  4049  			select {
  4050  			case log := <-logs:
  4051  				// New log arrived, parse the event and forward to the user
  4052  				event := new(BridgeCounterPartOwnershipTransferred)
  4053  				if err := _BridgeCounterPart.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  4054  					return err
  4055  				}
  4056  				event.Raw = log
  4057  
  4058  				select {
  4059  				case sink <- event:
  4060  				case err := <-sub.Err():
  4061  					return err
  4062  				case <-quit:
  4063  					return nil
  4064  				}
  4065  			case err := <-sub.Err():
  4066  				return err
  4067  			case <-quit:
  4068  				return nil
  4069  			}
  4070  		}
  4071  	}), nil
  4072  }
  4073  
  4074  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  4075  //
  4076  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  4077  func (_BridgeCounterPart *BridgeCounterPartFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeCounterPartOwnershipTransferred, error) {
  4078  	event := new(BridgeCounterPartOwnershipTransferred)
  4079  	if err := _BridgeCounterPart.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  4080  		return nil, err
  4081  	}
  4082  	return event, nil
  4083  }
  4084  
  4085  // BridgeFeeABI is the input ABI used to generate the binding from.
  4086  const BridgeFeeABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]"
  4087  
  4088  // BridgeFeeBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  4089  const BridgeFeeBinRuntime = ``
  4090  
  4091  // BridgeFeeFuncSigs maps the 4-byte function signature to its string representation.
  4092  var BridgeFeeFuncSigs = map[string]string{
  4093  	"488af871": "feeOfERC20(address)",
  4094  	"c263b5d6": "feeOfKLAY()",
  4095  	"b3f00674": "feeReceiver()",
  4096  }
  4097  
  4098  // BridgeFee is an auto generated Go binding around a Klaytn contract.
  4099  type BridgeFee struct {
  4100  	BridgeFeeCaller     // Read-only binding to the contract
  4101  	BridgeFeeTransactor // Write-only binding to the contract
  4102  	BridgeFeeFilterer   // Log filterer for contract events
  4103  }
  4104  
  4105  // BridgeFeeCaller is an auto generated read-only Go binding around a Klaytn contract.
  4106  type BridgeFeeCaller struct {
  4107  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4108  }
  4109  
  4110  // BridgeFeeTransactor is an auto generated write-only Go binding around a Klaytn contract.
  4111  type BridgeFeeTransactor struct {
  4112  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4113  }
  4114  
  4115  // BridgeFeeFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  4116  type BridgeFeeFilterer struct {
  4117  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4118  }
  4119  
  4120  // BridgeFeeSession is an auto generated Go binding around a Klaytn contract,
  4121  // with pre-set call and transact options.
  4122  type BridgeFeeSession struct {
  4123  	Contract     *BridgeFee        // Generic contract binding to set the session for
  4124  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  4125  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  4126  }
  4127  
  4128  // BridgeFeeCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  4129  // with pre-set call options.
  4130  type BridgeFeeCallerSession struct {
  4131  	Contract *BridgeFeeCaller // Generic contract caller binding to set the session for
  4132  	CallOpts bind.CallOpts    // Call options to use throughout this session
  4133  }
  4134  
  4135  // BridgeFeeTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  4136  // with pre-set transact options.
  4137  type BridgeFeeTransactorSession struct {
  4138  	Contract     *BridgeFeeTransactor // Generic contract transactor binding to set the session for
  4139  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
  4140  }
  4141  
  4142  // BridgeFeeRaw is an auto generated low-level Go binding around a Klaytn contract.
  4143  type BridgeFeeRaw struct {
  4144  	Contract *BridgeFee // Generic contract binding to access the raw methods on
  4145  }
  4146  
  4147  // BridgeFeeCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  4148  type BridgeFeeCallerRaw struct {
  4149  	Contract *BridgeFeeCaller // Generic read-only contract binding to access the raw methods on
  4150  }
  4151  
  4152  // BridgeFeeTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  4153  type BridgeFeeTransactorRaw struct {
  4154  	Contract *BridgeFeeTransactor // Generic write-only contract binding to access the raw methods on
  4155  }
  4156  
  4157  // NewBridgeFee creates a new instance of BridgeFee, bound to a specific deployed contract.
  4158  func NewBridgeFee(address common.Address, backend bind.ContractBackend) (*BridgeFee, error) {
  4159  	contract, err := bindBridgeFee(address, backend, backend, backend)
  4160  	if err != nil {
  4161  		return nil, err
  4162  	}
  4163  	return &BridgeFee{BridgeFeeCaller: BridgeFeeCaller{contract: contract}, BridgeFeeTransactor: BridgeFeeTransactor{contract: contract}, BridgeFeeFilterer: BridgeFeeFilterer{contract: contract}}, nil
  4164  }
  4165  
  4166  // NewBridgeFeeCaller creates a new read-only instance of BridgeFee, bound to a specific deployed contract.
  4167  func NewBridgeFeeCaller(address common.Address, caller bind.ContractCaller) (*BridgeFeeCaller, error) {
  4168  	contract, err := bindBridgeFee(address, caller, nil, nil)
  4169  	if err != nil {
  4170  		return nil, err
  4171  	}
  4172  	return &BridgeFeeCaller{contract: contract}, nil
  4173  }
  4174  
  4175  // NewBridgeFeeTransactor creates a new write-only instance of BridgeFee, bound to a specific deployed contract.
  4176  func NewBridgeFeeTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeFeeTransactor, error) {
  4177  	contract, err := bindBridgeFee(address, nil, transactor, nil)
  4178  	if err != nil {
  4179  		return nil, err
  4180  	}
  4181  	return &BridgeFeeTransactor{contract: contract}, nil
  4182  }
  4183  
  4184  // NewBridgeFeeFilterer creates a new log filterer instance of BridgeFee, bound to a specific deployed contract.
  4185  func NewBridgeFeeFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeFeeFilterer, error) {
  4186  	contract, err := bindBridgeFee(address, nil, nil, filterer)
  4187  	if err != nil {
  4188  		return nil, err
  4189  	}
  4190  	return &BridgeFeeFilterer{contract: contract}, nil
  4191  }
  4192  
  4193  // bindBridgeFee binds a generic wrapper to an already deployed contract.
  4194  func bindBridgeFee(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  4195  	parsed, err := abi.JSON(strings.NewReader(BridgeFeeABI))
  4196  	if err != nil {
  4197  		return nil, err
  4198  	}
  4199  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  4200  }
  4201  
  4202  // Call invokes the (constant) contract method with params as input values and
  4203  // sets the output to result. The result type might be a single field for simple
  4204  // returns, a slice of interfaces for anonymous returns and a struct for named
  4205  // returns.
  4206  func (_BridgeFee *BridgeFeeRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  4207  	return _BridgeFee.Contract.BridgeFeeCaller.contract.Call(opts, result, method, params...)
  4208  }
  4209  
  4210  // Transfer initiates a plain transaction to move funds to the contract, calling
  4211  // its default method if one is available.
  4212  func (_BridgeFee *BridgeFeeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4213  	return _BridgeFee.Contract.BridgeFeeTransactor.contract.Transfer(opts)
  4214  }
  4215  
  4216  // Transact invokes the (paid) contract method with params as input values.
  4217  func (_BridgeFee *BridgeFeeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4218  	return _BridgeFee.Contract.BridgeFeeTransactor.contract.Transact(opts, method, params...)
  4219  }
  4220  
  4221  // Call invokes the (constant) contract method with params as input values and
  4222  // sets the output to result. The result type might be a single field for simple
  4223  // returns, a slice of interfaces for anonymous returns and a struct for named
  4224  // returns.
  4225  func (_BridgeFee *BridgeFeeCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  4226  	return _BridgeFee.Contract.contract.Call(opts, result, method, params...)
  4227  }
  4228  
  4229  // Transfer initiates a plain transaction to move funds to the contract, calling
  4230  // its default method if one is available.
  4231  func (_BridgeFee *BridgeFeeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4232  	return _BridgeFee.Contract.contract.Transfer(opts)
  4233  }
  4234  
  4235  // Transact invokes the (paid) contract method with params as input values.
  4236  func (_BridgeFee *BridgeFeeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4237  	return _BridgeFee.Contract.contract.Transact(opts, method, params...)
  4238  }
  4239  
  4240  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
  4241  //
  4242  // Solidity: function feeOfERC20(address ) view returns(uint256)
  4243  func (_BridgeFee *BridgeFeeCaller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
  4244  	var (
  4245  		ret0 = new(*big.Int)
  4246  	)
  4247  	out := ret0
  4248  	err := _BridgeFee.contract.Call(opts, out, "feeOfERC20", arg0)
  4249  	return *ret0, err
  4250  }
  4251  
  4252  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
  4253  //
  4254  // Solidity: function feeOfERC20(address ) view returns(uint256)
  4255  func (_BridgeFee *BridgeFeeSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) {
  4256  	return _BridgeFee.Contract.FeeOfERC20(&_BridgeFee.CallOpts, arg0)
  4257  }
  4258  
  4259  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
  4260  //
  4261  // Solidity: function feeOfERC20(address ) view returns(uint256)
  4262  func (_BridgeFee *BridgeFeeCallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) {
  4263  	return _BridgeFee.Contract.FeeOfERC20(&_BridgeFee.CallOpts, arg0)
  4264  }
  4265  
  4266  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
  4267  //
  4268  // Solidity: function feeOfKLAY() view returns(uint256)
  4269  func (_BridgeFee *BridgeFeeCaller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) {
  4270  	var (
  4271  		ret0 = new(*big.Int)
  4272  	)
  4273  	out := ret0
  4274  	err := _BridgeFee.contract.Call(opts, out, "feeOfKLAY")
  4275  	return *ret0, err
  4276  }
  4277  
  4278  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
  4279  //
  4280  // Solidity: function feeOfKLAY() view returns(uint256)
  4281  func (_BridgeFee *BridgeFeeSession) FeeOfKLAY() (*big.Int, error) {
  4282  	return _BridgeFee.Contract.FeeOfKLAY(&_BridgeFee.CallOpts)
  4283  }
  4284  
  4285  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
  4286  //
  4287  // Solidity: function feeOfKLAY() view returns(uint256)
  4288  func (_BridgeFee *BridgeFeeCallerSession) FeeOfKLAY() (*big.Int, error) {
  4289  	return _BridgeFee.Contract.FeeOfKLAY(&_BridgeFee.CallOpts)
  4290  }
  4291  
  4292  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
  4293  //
  4294  // Solidity: function feeReceiver() view returns(address)
  4295  func (_BridgeFee *BridgeFeeCaller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) {
  4296  	var (
  4297  		ret0 = new(common.Address)
  4298  	)
  4299  	out := ret0
  4300  	err := _BridgeFee.contract.Call(opts, out, "feeReceiver")
  4301  	return *ret0, err
  4302  }
  4303  
  4304  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
  4305  //
  4306  // Solidity: function feeReceiver() view returns(address)
  4307  func (_BridgeFee *BridgeFeeSession) FeeReceiver() (common.Address, error) {
  4308  	return _BridgeFee.Contract.FeeReceiver(&_BridgeFee.CallOpts)
  4309  }
  4310  
  4311  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
  4312  //
  4313  // Solidity: function feeReceiver() view returns(address)
  4314  func (_BridgeFee *BridgeFeeCallerSession) FeeReceiver() (common.Address, error) {
  4315  	return _BridgeFee.Contract.FeeReceiver(&_BridgeFee.CallOpts)
  4316  }
  4317  
  4318  // BridgeFeeERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeFee contract.
  4319  type BridgeFeeERC20FeeChangedIterator struct {
  4320  	Event *BridgeFeeERC20FeeChanged // Event containing the contract specifics and raw log
  4321  
  4322  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4323  	event    string              // Event name to use for unpacking event data
  4324  
  4325  	logs chan types.Log      // Log channel receiving the found contract events
  4326  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  4327  	done bool                // Whether the subscription completed delivering logs
  4328  	fail error               // Occurred error to stop iteration
  4329  }
  4330  
  4331  // Next advances the iterator to the subsequent event, returning whether there
  4332  // are any more events found. In case of a retrieval or parsing error, false is
  4333  // returned and Error() can be queried for the exact failure.
  4334  func (it *BridgeFeeERC20FeeChangedIterator) Next() bool {
  4335  	// If the iterator failed, stop iterating
  4336  	if it.fail != nil {
  4337  		return false
  4338  	}
  4339  	// If the iterator completed, deliver directly whatever's available
  4340  	if it.done {
  4341  		select {
  4342  		case log := <-it.logs:
  4343  			it.Event = new(BridgeFeeERC20FeeChanged)
  4344  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4345  				it.fail = err
  4346  				return false
  4347  			}
  4348  			it.Event.Raw = log
  4349  			return true
  4350  
  4351  		default:
  4352  			return false
  4353  		}
  4354  	}
  4355  	// Iterator still in progress, wait for either a data or an error event
  4356  	select {
  4357  	case log := <-it.logs:
  4358  		it.Event = new(BridgeFeeERC20FeeChanged)
  4359  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4360  			it.fail = err
  4361  			return false
  4362  		}
  4363  		it.Event.Raw = log
  4364  		return true
  4365  
  4366  	case err := <-it.sub.Err():
  4367  		it.done = true
  4368  		it.fail = err
  4369  		return it.Next()
  4370  	}
  4371  }
  4372  
  4373  // Error returns any retrieval or parsing error occurred during filtering.
  4374  func (it *BridgeFeeERC20FeeChangedIterator) Error() error {
  4375  	return it.fail
  4376  }
  4377  
  4378  // Close terminates the iteration process, releasing any pending underlying
  4379  // resources.
  4380  func (it *BridgeFeeERC20FeeChangedIterator) Close() error {
  4381  	it.sub.Unsubscribe()
  4382  	return nil
  4383  }
  4384  
  4385  // BridgeFeeERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeFee contract.
  4386  type BridgeFeeERC20FeeChanged struct {
  4387  	Token common.Address
  4388  	Fee   *big.Int
  4389  	Raw   types.Log // Blockchain specific contextual infos
  4390  }
  4391  
  4392  // FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
  4393  //
  4394  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
  4395  func (_BridgeFee *BridgeFeeFilterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeFeeERC20FeeChangedIterator, error) {
  4396  
  4397  	var tokenRule []interface{}
  4398  	for _, tokenItem := range token {
  4399  		tokenRule = append(tokenRule, tokenItem)
  4400  	}
  4401  	var feeRule []interface{}
  4402  	for _, feeItem := range fee {
  4403  		feeRule = append(feeRule, feeItem)
  4404  	}
  4405  
  4406  	logs, sub, err := _BridgeFee.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule)
  4407  	if err != nil {
  4408  		return nil, err
  4409  	}
  4410  	return &BridgeFeeERC20FeeChangedIterator{contract: _BridgeFee.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil
  4411  }
  4412  
  4413  // WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
  4414  //
  4415  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
  4416  func (_BridgeFee *BridgeFeeFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeFeeERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) {
  4417  
  4418  	var tokenRule []interface{}
  4419  	for _, tokenItem := range token {
  4420  		tokenRule = append(tokenRule, tokenItem)
  4421  	}
  4422  	var feeRule []interface{}
  4423  	for _, feeItem := range fee {
  4424  		feeRule = append(feeRule, feeItem)
  4425  	}
  4426  
  4427  	logs, sub, err := _BridgeFee.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule)
  4428  	if err != nil {
  4429  		return nil, err
  4430  	}
  4431  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4432  		defer sub.Unsubscribe()
  4433  		for {
  4434  			select {
  4435  			case log := <-logs:
  4436  				// New log arrived, parse the event and forward to the user
  4437  				event := new(BridgeFeeERC20FeeChanged)
  4438  				if err := _BridgeFee.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil {
  4439  					return err
  4440  				}
  4441  				event.Raw = log
  4442  
  4443  				select {
  4444  				case sink <- event:
  4445  				case err := <-sub.Err():
  4446  					return err
  4447  				case <-quit:
  4448  					return nil
  4449  				}
  4450  			case err := <-sub.Err():
  4451  				return err
  4452  			case <-quit:
  4453  				return nil
  4454  			}
  4455  		}
  4456  	}), nil
  4457  }
  4458  
  4459  // ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
  4460  //
  4461  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
  4462  func (_BridgeFee *BridgeFeeFilterer) ParseERC20FeeChanged(log types.Log) (*BridgeFeeERC20FeeChanged, error) {
  4463  	event := new(BridgeFeeERC20FeeChanged)
  4464  	if err := _BridgeFee.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil {
  4465  		return nil, err
  4466  	}
  4467  	return event, nil
  4468  }
  4469  
  4470  // BridgeFeeFeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeFee contract.
  4471  type BridgeFeeFeeReceiverChangedIterator struct {
  4472  	Event *BridgeFeeFeeReceiverChanged // Event containing the contract specifics and raw log
  4473  
  4474  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4475  	event    string              // Event name to use for unpacking event data
  4476  
  4477  	logs chan types.Log      // Log channel receiving the found contract events
  4478  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  4479  	done bool                // Whether the subscription completed delivering logs
  4480  	fail error               // Occurred error to stop iteration
  4481  }
  4482  
  4483  // Next advances the iterator to the subsequent event, returning whether there
  4484  // are any more events found. In case of a retrieval or parsing error, false is
  4485  // returned and Error() can be queried for the exact failure.
  4486  func (it *BridgeFeeFeeReceiverChangedIterator) Next() bool {
  4487  	// If the iterator failed, stop iterating
  4488  	if it.fail != nil {
  4489  		return false
  4490  	}
  4491  	// If the iterator completed, deliver directly whatever's available
  4492  	if it.done {
  4493  		select {
  4494  		case log := <-it.logs:
  4495  			it.Event = new(BridgeFeeFeeReceiverChanged)
  4496  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4497  				it.fail = err
  4498  				return false
  4499  			}
  4500  			it.Event.Raw = log
  4501  			return true
  4502  
  4503  		default:
  4504  			return false
  4505  		}
  4506  	}
  4507  	// Iterator still in progress, wait for either a data or an error event
  4508  	select {
  4509  	case log := <-it.logs:
  4510  		it.Event = new(BridgeFeeFeeReceiverChanged)
  4511  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4512  			it.fail = err
  4513  			return false
  4514  		}
  4515  		it.Event.Raw = log
  4516  		return true
  4517  
  4518  	case err := <-it.sub.Err():
  4519  		it.done = true
  4520  		it.fail = err
  4521  		return it.Next()
  4522  	}
  4523  }
  4524  
  4525  // Error returns any retrieval or parsing error occurred during filtering.
  4526  func (it *BridgeFeeFeeReceiverChangedIterator) Error() error {
  4527  	return it.fail
  4528  }
  4529  
  4530  // Close terminates the iteration process, releasing any pending underlying
  4531  // resources.
  4532  func (it *BridgeFeeFeeReceiverChangedIterator) Close() error {
  4533  	it.sub.Unsubscribe()
  4534  	return nil
  4535  }
  4536  
  4537  // BridgeFeeFeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeFee contract.
  4538  type BridgeFeeFeeReceiverChanged struct {
  4539  	FeeReceiver common.Address
  4540  	Raw         types.Log // Blockchain specific contextual infos
  4541  }
  4542  
  4543  // FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
  4544  //
  4545  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
  4546  func (_BridgeFee *BridgeFeeFilterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeFeeFeeReceiverChangedIterator, error) {
  4547  
  4548  	var feeReceiverRule []interface{}
  4549  	for _, feeReceiverItem := range feeReceiver {
  4550  		feeReceiverRule = append(feeReceiverRule, feeReceiverItem)
  4551  	}
  4552  
  4553  	logs, sub, err := _BridgeFee.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule)
  4554  	if err != nil {
  4555  		return nil, err
  4556  	}
  4557  	return &BridgeFeeFeeReceiverChangedIterator{contract: _BridgeFee.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil
  4558  }
  4559  
  4560  // WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
  4561  //
  4562  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
  4563  func (_BridgeFee *BridgeFeeFilterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeFeeFeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) {
  4564  
  4565  	var feeReceiverRule []interface{}
  4566  	for _, feeReceiverItem := range feeReceiver {
  4567  		feeReceiverRule = append(feeReceiverRule, feeReceiverItem)
  4568  	}
  4569  
  4570  	logs, sub, err := _BridgeFee.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule)
  4571  	if err != nil {
  4572  		return nil, err
  4573  	}
  4574  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4575  		defer sub.Unsubscribe()
  4576  		for {
  4577  			select {
  4578  			case log := <-logs:
  4579  				// New log arrived, parse the event and forward to the user
  4580  				event := new(BridgeFeeFeeReceiverChanged)
  4581  				if err := _BridgeFee.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil {
  4582  					return err
  4583  				}
  4584  				event.Raw = log
  4585  
  4586  				select {
  4587  				case sink <- event:
  4588  				case err := <-sub.Err():
  4589  					return err
  4590  				case <-quit:
  4591  					return nil
  4592  				}
  4593  			case err := <-sub.Err():
  4594  				return err
  4595  			case <-quit:
  4596  				return nil
  4597  			}
  4598  		}
  4599  	}), nil
  4600  }
  4601  
  4602  // ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
  4603  //
  4604  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
  4605  func (_BridgeFee *BridgeFeeFilterer) ParseFeeReceiverChanged(log types.Log) (*BridgeFeeFeeReceiverChanged, error) {
  4606  	event := new(BridgeFeeFeeReceiverChanged)
  4607  	if err := _BridgeFee.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil {
  4608  		return nil, err
  4609  	}
  4610  	return event, nil
  4611  }
  4612  
  4613  // BridgeFeeKLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeFee contract.
  4614  type BridgeFeeKLAYFeeChangedIterator struct {
  4615  	Event *BridgeFeeKLAYFeeChanged // Event containing the contract specifics and raw log
  4616  
  4617  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4618  	event    string              // Event name to use for unpacking event data
  4619  
  4620  	logs chan types.Log      // Log channel receiving the found contract events
  4621  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  4622  	done bool                // Whether the subscription completed delivering logs
  4623  	fail error               // Occurred error to stop iteration
  4624  }
  4625  
  4626  // Next advances the iterator to the subsequent event, returning whether there
  4627  // are any more events found. In case of a retrieval or parsing error, false is
  4628  // returned and Error() can be queried for the exact failure.
  4629  func (it *BridgeFeeKLAYFeeChangedIterator) Next() bool {
  4630  	// If the iterator failed, stop iterating
  4631  	if it.fail != nil {
  4632  		return false
  4633  	}
  4634  	// If the iterator completed, deliver directly whatever's available
  4635  	if it.done {
  4636  		select {
  4637  		case log := <-it.logs:
  4638  			it.Event = new(BridgeFeeKLAYFeeChanged)
  4639  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4640  				it.fail = err
  4641  				return false
  4642  			}
  4643  			it.Event.Raw = log
  4644  			return true
  4645  
  4646  		default:
  4647  			return false
  4648  		}
  4649  	}
  4650  	// Iterator still in progress, wait for either a data or an error event
  4651  	select {
  4652  	case log := <-it.logs:
  4653  		it.Event = new(BridgeFeeKLAYFeeChanged)
  4654  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4655  			it.fail = err
  4656  			return false
  4657  		}
  4658  		it.Event.Raw = log
  4659  		return true
  4660  
  4661  	case err := <-it.sub.Err():
  4662  		it.done = true
  4663  		it.fail = err
  4664  		return it.Next()
  4665  	}
  4666  }
  4667  
  4668  // Error returns any retrieval or parsing error occurred during filtering.
  4669  func (it *BridgeFeeKLAYFeeChangedIterator) Error() error {
  4670  	return it.fail
  4671  }
  4672  
  4673  // Close terminates the iteration process, releasing any pending underlying
  4674  // resources.
  4675  func (it *BridgeFeeKLAYFeeChangedIterator) Close() error {
  4676  	it.sub.Unsubscribe()
  4677  	return nil
  4678  }
  4679  
  4680  // BridgeFeeKLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeFee contract.
  4681  type BridgeFeeKLAYFeeChanged struct {
  4682  	Fee *big.Int
  4683  	Raw types.Log // Blockchain specific contextual infos
  4684  }
  4685  
  4686  // FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
  4687  //
  4688  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
  4689  func (_BridgeFee *BridgeFeeFilterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeFeeKLAYFeeChangedIterator, error) {
  4690  
  4691  	var feeRule []interface{}
  4692  	for _, feeItem := range fee {
  4693  		feeRule = append(feeRule, feeItem)
  4694  	}
  4695  
  4696  	logs, sub, err := _BridgeFee.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule)
  4697  	if err != nil {
  4698  		return nil, err
  4699  	}
  4700  	return &BridgeFeeKLAYFeeChangedIterator{contract: _BridgeFee.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil
  4701  }
  4702  
  4703  // WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
  4704  //
  4705  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
  4706  func (_BridgeFee *BridgeFeeFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeFeeKLAYFeeChanged, fee []*big.Int) (event.Subscription, error) {
  4707  
  4708  	var feeRule []interface{}
  4709  	for _, feeItem := range fee {
  4710  		feeRule = append(feeRule, feeItem)
  4711  	}
  4712  
  4713  	logs, sub, err := _BridgeFee.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule)
  4714  	if err != nil {
  4715  		return nil, err
  4716  	}
  4717  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4718  		defer sub.Unsubscribe()
  4719  		for {
  4720  			select {
  4721  			case log := <-logs:
  4722  				// New log arrived, parse the event and forward to the user
  4723  				event := new(BridgeFeeKLAYFeeChanged)
  4724  				if err := _BridgeFee.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil {
  4725  					return err
  4726  				}
  4727  				event.Raw = log
  4728  
  4729  				select {
  4730  				case sink <- event:
  4731  				case err := <-sub.Err():
  4732  					return err
  4733  				case <-quit:
  4734  					return nil
  4735  				}
  4736  			case err := <-sub.Err():
  4737  				return err
  4738  			case <-quit:
  4739  				return nil
  4740  			}
  4741  		}
  4742  	}), nil
  4743  }
  4744  
  4745  // ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
  4746  //
  4747  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
  4748  func (_BridgeFee *BridgeFeeFilterer) ParseKLAYFeeChanged(log types.Log) (*BridgeFeeKLAYFeeChanged, error) {
  4749  	event := new(BridgeFeeKLAYFeeChanged)
  4750  	if err := _BridgeFee.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil {
  4751  		return nil, err
  4752  	}
  4753  	return event, nil
  4754  }
  4755  
  4756  // BridgeHandledRequestsABI is the input ABI used to generate the binding from.
  4757  const BridgeHandledRequestsABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
  4758  
  4759  // BridgeHandledRequestsBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  4760  const BridgeHandledRequestsBinRuntime = `6080604052348015600f57600080fd5b506004361060285760003560e01c80638a75eee214602d575b600080fd5b604760048036036020811015604157600080fd5b5035605b565b604080519115158252519081900360200190f35b60006020819052908152604090205460ff168156fea165627a7a7230582054bec1bfef8dbf6d9ea6ecdde40b22f8311c9878c20f777a262b732b023f6e870029`
  4761  
  4762  // BridgeHandledRequestsFuncSigs maps the 4-byte function signature to its string representation.
  4763  var BridgeHandledRequestsFuncSigs = map[string]string{
  4764  	"8a75eee2": "handledRequestTx(bytes32)",
  4765  }
  4766  
  4767  // BridgeHandledRequestsBin is the compiled bytecode used for deploying new contracts.
  4768  var BridgeHandledRequestsBin = "0x6080604052348015600f57600080fd5b50609c8061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80638a75eee214602d575b600080fd5b604760048036036020811015604157600080fd5b5035605b565b604080519115158252519081900360200190f35b60006020819052908152604090205460ff168156fea165627a7a7230582054bec1bfef8dbf6d9ea6ecdde40b22f8311c9878c20f777a262b732b023f6e870029"
  4769  
  4770  // DeployBridgeHandledRequests deploys a new Klaytn contract, binding an instance of BridgeHandledRequests to it.
  4771  func DeployBridgeHandledRequests(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *BridgeHandledRequests, error) {
  4772  	parsed, err := abi.JSON(strings.NewReader(BridgeHandledRequestsABI))
  4773  	if err != nil {
  4774  		return common.Address{}, nil, nil, err
  4775  	}
  4776  
  4777  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(BridgeHandledRequestsBin), backend)
  4778  	if err != nil {
  4779  		return common.Address{}, nil, nil, err
  4780  	}
  4781  	return address, tx, &BridgeHandledRequests{BridgeHandledRequestsCaller: BridgeHandledRequestsCaller{contract: contract}, BridgeHandledRequestsTransactor: BridgeHandledRequestsTransactor{contract: contract}, BridgeHandledRequestsFilterer: BridgeHandledRequestsFilterer{contract: contract}}, nil
  4782  }
  4783  
  4784  // BridgeHandledRequests is an auto generated Go binding around a Klaytn contract.
  4785  type BridgeHandledRequests struct {
  4786  	BridgeHandledRequestsCaller     // Read-only binding to the contract
  4787  	BridgeHandledRequestsTransactor // Write-only binding to the contract
  4788  	BridgeHandledRequestsFilterer   // Log filterer for contract events
  4789  }
  4790  
  4791  // BridgeHandledRequestsCaller is an auto generated read-only Go binding around a Klaytn contract.
  4792  type BridgeHandledRequestsCaller struct {
  4793  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4794  }
  4795  
  4796  // BridgeHandledRequestsTransactor is an auto generated write-only Go binding around a Klaytn contract.
  4797  type BridgeHandledRequestsTransactor struct {
  4798  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4799  }
  4800  
  4801  // BridgeHandledRequestsFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  4802  type BridgeHandledRequestsFilterer struct {
  4803  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4804  }
  4805  
  4806  // BridgeHandledRequestsSession is an auto generated Go binding around a Klaytn contract,
  4807  // with pre-set call and transact options.
  4808  type BridgeHandledRequestsSession struct {
  4809  	Contract     *BridgeHandledRequests // Generic contract binding to set the session for
  4810  	CallOpts     bind.CallOpts          // Call options to use throughout this session
  4811  	TransactOpts bind.TransactOpts      // Transaction auth options to use throughout this session
  4812  }
  4813  
  4814  // BridgeHandledRequestsCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  4815  // with pre-set call options.
  4816  type BridgeHandledRequestsCallerSession struct {
  4817  	Contract *BridgeHandledRequestsCaller // Generic contract caller binding to set the session for
  4818  	CallOpts bind.CallOpts                // Call options to use throughout this session
  4819  }
  4820  
  4821  // BridgeHandledRequestsTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  4822  // with pre-set transact options.
  4823  type BridgeHandledRequestsTransactorSession struct {
  4824  	Contract     *BridgeHandledRequestsTransactor // Generic contract transactor binding to set the session for
  4825  	TransactOpts bind.TransactOpts                // Transaction auth options to use throughout this session
  4826  }
  4827  
  4828  // BridgeHandledRequestsRaw is an auto generated low-level Go binding around a Klaytn contract.
  4829  type BridgeHandledRequestsRaw struct {
  4830  	Contract *BridgeHandledRequests // Generic contract binding to access the raw methods on
  4831  }
  4832  
  4833  // BridgeHandledRequestsCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  4834  type BridgeHandledRequestsCallerRaw struct {
  4835  	Contract *BridgeHandledRequestsCaller // Generic read-only contract binding to access the raw methods on
  4836  }
  4837  
  4838  // BridgeHandledRequestsTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  4839  type BridgeHandledRequestsTransactorRaw struct {
  4840  	Contract *BridgeHandledRequestsTransactor // Generic write-only contract binding to access the raw methods on
  4841  }
  4842  
  4843  // NewBridgeHandledRequests creates a new instance of BridgeHandledRequests, bound to a specific deployed contract.
  4844  func NewBridgeHandledRequests(address common.Address, backend bind.ContractBackend) (*BridgeHandledRequests, error) {
  4845  	contract, err := bindBridgeHandledRequests(address, backend, backend, backend)
  4846  	if err != nil {
  4847  		return nil, err
  4848  	}
  4849  	return &BridgeHandledRequests{BridgeHandledRequestsCaller: BridgeHandledRequestsCaller{contract: contract}, BridgeHandledRequestsTransactor: BridgeHandledRequestsTransactor{contract: contract}, BridgeHandledRequestsFilterer: BridgeHandledRequestsFilterer{contract: contract}}, nil
  4850  }
  4851  
  4852  // NewBridgeHandledRequestsCaller creates a new read-only instance of BridgeHandledRequests, bound to a specific deployed contract.
  4853  func NewBridgeHandledRequestsCaller(address common.Address, caller bind.ContractCaller) (*BridgeHandledRequestsCaller, error) {
  4854  	contract, err := bindBridgeHandledRequests(address, caller, nil, nil)
  4855  	if err != nil {
  4856  		return nil, err
  4857  	}
  4858  	return &BridgeHandledRequestsCaller{contract: contract}, nil
  4859  }
  4860  
  4861  // NewBridgeHandledRequestsTransactor creates a new write-only instance of BridgeHandledRequests, bound to a specific deployed contract.
  4862  func NewBridgeHandledRequestsTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeHandledRequestsTransactor, error) {
  4863  	contract, err := bindBridgeHandledRequests(address, nil, transactor, nil)
  4864  	if err != nil {
  4865  		return nil, err
  4866  	}
  4867  	return &BridgeHandledRequestsTransactor{contract: contract}, nil
  4868  }
  4869  
  4870  // NewBridgeHandledRequestsFilterer creates a new log filterer instance of BridgeHandledRequests, bound to a specific deployed contract.
  4871  func NewBridgeHandledRequestsFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeHandledRequestsFilterer, error) {
  4872  	contract, err := bindBridgeHandledRequests(address, nil, nil, filterer)
  4873  	if err != nil {
  4874  		return nil, err
  4875  	}
  4876  	return &BridgeHandledRequestsFilterer{contract: contract}, nil
  4877  }
  4878  
  4879  // bindBridgeHandledRequests binds a generic wrapper to an already deployed contract.
  4880  func bindBridgeHandledRequests(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  4881  	parsed, err := abi.JSON(strings.NewReader(BridgeHandledRequestsABI))
  4882  	if err != nil {
  4883  		return nil, err
  4884  	}
  4885  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  4886  }
  4887  
  4888  // Call invokes the (constant) contract method with params as input values and
  4889  // sets the output to result. The result type might be a single field for simple
  4890  // returns, a slice of interfaces for anonymous returns and a struct for named
  4891  // returns.
  4892  func (_BridgeHandledRequests *BridgeHandledRequestsRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  4893  	return _BridgeHandledRequests.Contract.BridgeHandledRequestsCaller.contract.Call(opts, result, method, params...)
  4894  }
  4895  
  4896  // Transfer initiates a plain transaction to move funds to the contract, calling
  4897  // its default method if one is available.
  4898  func (_BridgeHandledRequests *BridgeHandledRequestsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4899  	return _BridgeHandledRequests.Contract.BridgeHandledRequestsTransactor.contract.Transfer(opts)
  4900  }
  4901  
  4902  // Transact invokes the (paid) contract method with params as input values.
  4903  func (_BridgeHandledRequests *BridgeHandledRequestsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4904  	return _BridgeHandledRequests.Contract.BridgeHandledRequestsTransactor.contract.Transact(opts, method, params...)
  4905  }
  4906  
  4907  // Call invokes the (constant) contract method with params as input values and
  4908  // sets the output to result. The result type might be a single field for simple
  4909  // returns, a slice of interfaces for anonymous returns and a struct for named
  4910  // returns.
  4911  func (_BridgeHandledRequests *BridgeHandledRequestsCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  4912  	return _BridgeHandledRequests.Contract.contract.Call(opts, result, method, params...)
  4913  }
  4914  
  4915  // Transfer initiates a plain transaction to move funds to the contract, calling
  4916  // its default method if one is available.
  4917  func (_BridgeHandledRequests *BridgeHandledRequestsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4918  	return _BridgeHandledRequests.Contract.contract.Transfer(opts)
  4919  }
  4920  
  4921  // Transact invokes the (paid) contract method with params as input values.
  4922  func (_BridgeHandledRequests *BridgeHandledRequestsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4923  	return _BridgeHandledRequests.Contract.contract.Transact(opts, method, params...)
  4924  }
  4925  
  4926  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
  4927  //
  4928  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
  4929  func (_BridgeHandledRequests *BridgeHandledRequestsCaller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) {
  4930  	var (
  4931  		ret0 = new(bool)
  4932  	)
  4933  	out := ret0
  4934  	err := _BridgeHandledRequests.contract.Call(opts, out, "handledRequestTx", arg0)
  4935  	return *ret0, err
  4936  }
  4937  
  4938  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
  4939  //
  4940  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
  4941  func (_BridgeHandledRequests *BridgeHandledRequestsSession) HandledRequestTx(arg0 [32]byte) (bool, error) {
  4942  	return _BridgeHandledRequests.Contract.HandledRequestTx(&_BridgeHandledRequests.CallOpts, arg0)
  4943  }
  4944  
  4945  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
  4946  //
  4947  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
  4948  func (_BridgeHandledRequests *BridgeHandledRequestsCallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) {
  4949  	return _BridgeHandledRequests.Contract.HandledRequestTx(&_BridgeHandledRequests.CallOpts, arg0)
  4950  }
  4951  
  4952  // BridgeOperatorABI is the input ABI used to generate the binding from.
  4953  const BridgeOperatorABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"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\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"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\"}]"
  4954  
  4955  // BridgeOperatorBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  4956  const BridgeOperatorBinRuntime = ``
  4957  
  4958  // BridgeOperatorFuncSigs maps the 4-byte function signature to its string representation.
  4959  var BridgeOperatorFuncSigs = map[string]string{
  4960  	"3a3099d1": "MAX_OPERATOR()",
  4961  	"9832c1d7": "closedValueTransferVotes(uint64)",
  4962  	"ac6fff0b": "configurationNonce()",
  4963  	"d8cf98ca": "deregisterOperator(address)",
  4964  	"b2c01030": "getOperatorList()",
  4965  	"8f32d59b": "isOwner()",
  4966  	"cb38f407": "operatorList(uint256)",
  4967  	"5526f76b": "operatorThresholds(uint8)",
  4968  	"13e7c9d8": "operators(address)",
  4969  	"8da5cb5b": "owner()",
  4970  	"3682a450": "registerOperator(address)",
  4971  	"715018a6": "renounceOwnership()",
  4972  	"ee2aec65": "setOperatorThreshold(uint8,uint8)",
  4973  	"f2fde38b": "transferOwnership(address)",
  4974  }
  4975  
  4976  // BridgeOperator is an auto generated Go binding around a Klaytn contract.
  4977  type BridgeOperator struct {
  4978  	BridgeOperatorCaller     // Read-only binding to the contract
  4979  	BridgeOperatorTransactor // Write-only binding to the contract
  4980  	BridgeOperatorFilterer   // Log filterer for contract events
  4981  }
  4982  
  4983  // BridgeOperatorCaller is an auto generated read-only Go binding around a Klaytn contract.
  4984  type BridgeOperatorCaller struct {
  4985  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4986  }
  4987  
  4988  // BridgeOperatorTransactor is an auto generated write-only Go binding around a Klaytn contract.
  4989  type BridgeOperatorTransactor struct {
  4990  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4991  }
  4992  
  4993  // BridgeOperatorFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  4994  type BridgeOperatorFilterer struct {
  4995  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4996  }
  4997  
  4998  // BridgeOperatorSession is an auto generated Go binding around a Klaytn contract,
  4999  // with pre-set call and transact options.
  5000  type BridgeOperatorSession struct {
  5001  	Contract     *BridgeOperator   // Generic contract binding to set the session for
  5002  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  5003  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  5004  }
  5005  
  5006  // BridgeOperatorCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  5007  // with pre-set call options.
  5008  type BridgeOperatorCallerSession struct {
  5009  	Contract *BridgeOperatorCaller // Generic contract caller binding to set the session for
  5010  	CallOpts bind.CallOpts         // Call options to use throughout this session
  5011  }
  5012  
  5013  // BridgeOperatorTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  5014  // with pre-set transact options.
  5015  type BridgeOperatorTransactorSession struct {
  5016  	Contract     *BridgeOperatorTransactor // Generic contract transactor binding to set the session for
  5017  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
  5018  }
  5019  
  5020  // BridgeOperatorRaw is an auto generated low-level Go binding around a Klaytn contract.
  5021  type BridgeOperatorRaw struct {
  5022  	Contract *BridgeOperator // Generic contract binding to access the raw methods on
  5023  }
  5024  
  5025  // BridgeOperatorCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  5026  type BridgeOperatorCallerRaw struct {
  5027  	Contract *BridgeOperatorCaller // Generic read-only contract binding to access the raw methods on
  5028  }
  5029  
  5030  // BridgeOperatorTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  5031  type BridgeOperatorTransactorRaw struct {
  5032  	Contract *BridgeOperatorTransactor // Generic write-only contract binding to access the raw methods on
  5033  }
  5034  
  5035  // NewBridgeOperator creates a new instance of BridgeOperator, bound to a specific deployed contract.
  5036  func NewBridgeOperator(address common.Address, backend bind.ContractBackend) (*BridgeOperator, error) {
  5037  	contract, err := bindBridgeOperator(address, backend, backend, backend)
  5038  	if err != nil {
  5039  		return nil, err
  5040  	}
  5041  	return &BridgeOperator{BridgeOperatorCaller: BridgeOperatorCaller{contract: contract}, BridgeOperatorTransactor: BridgeOperatorTransactor{contract: contract}, BridgeOperatorFilterer: BridgeOperatorFilterer{contract: contract}}, nil
  5042  }
  5043  
  5044  // NewBridgeOperatorCaller creates a new read-only instance of BridgeOperator, bound to a specific deployed contract.
  5045  func NewBridgeOperatorCaller(address common.Address, caller bind.ContractCaller) (*BridgeOperatorCaller, error) {
  5046  	contract, err := bindBridgeOperator(address, caller, nil, nil)
  5047  	if err != nil {
  5048  		return nil, err
  5049  	}
  5050  	return &BridgeOperatorCaller{contract: contract}, nil
  5051  }
  5052  
  5053  // NewBridgeOperatorTransactor creates a new write-only instance of BridgeOperator, bound to a specific deployed contract.
  5054  func NewBridgeOperatorTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeOperatorTransactor, error) {
  5055  	contract, err := bindBridgeOperator(address, nil, transactor, nil)
  5056  	if err != nil {
  5057  		return nil, err
  5058  	}
  5059  	return &BridgeOperatorTransactor{contract: contract}, nil
  5060  }
  5061  
  5062  // NewBridgeOperatorFilterer creates a new log filterer instance of BridgeOperator, bound to a specific deployed contract.
  5063  func NewBridgeOperatorFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeOperatorFilterer, error) {
  5064  	contract, err := bindBridgeOperator(address, nil, nil, filterer)
  5065  	if err != nil {
  5066  		return nil, err
  5067  	}
  5068  	return &BridgeOperatorFilterer{contract: contract}, nil
  5069  }
  5070  
  5071  // bindBridgeOperator binds a generic wrapper to an already deployed contract.
  5072  func bindBridgeOperator(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  5073  	parsed, err := abi.JSON(strings.NewReader(BridgeOperatorABI))
  5074  	if err != nil {
  5075  		return nil, err
  5076  	}
  5077  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  5078  }
  5079  
  5080  // Call invokes the (constant) contract method with params as input values and
  5081  // sets the output to result. The result type might be a single field for simple
  5082  // returns, a slice of interfaces for anonymous returns and a struct for named
  5083  // returns.
  5084  func (_BridgeOperator *BridgeOperatorRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  5085  	return _BridgeOperator.Contract.BridgeOperatorCaller.contract.Call(opts, result, method, params...)
  5086  }
  5087  
  5088  // Transfer initiates a plain transaction to move funds to the contract, calling
  5089  // its default method if one is available.
  5090  func (_BridgeOperator *BridgeOperatorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5091  	return _BridgeOperator.Contract.BridgeOperatorTransactor.contract.Transfer(opts)
  5092  }
  5093  
  5094  // Transact invokes the (paid) contract method with params as input values.
  5095  func (_BridgeOperator *BridgeOperatorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5096  	return _BridgeOperator.Contract.BridgeOperatorTransactor.contract.Transact(opts, method, params...)
  5097  }
  5098  
  5099  // Call invokes the (constant) contract method with params as input values and
  5100  // sets the output to result. The result type might be a single field for simple
  5101  // returns, a slice of interfaces for anonymous returns and a struct for named
  5102  // returns.
  5103  func (_BridgeOperator *BridgeOperatorCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  5104  	return _BridgeOperator.Contract.contract.Call(opts, result, method, params...)
  5105  }
  5106  
  5107  // Transfer initiates a plain transaction to move funds to the contract, calling
  5108  // its default method if one is available.
  5109  func (_BridgeOperator *BridgeOperatorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5110  	return _BridgeOperator.Contract.contract.Transfer(opts)
  5111  }
  5112  
  5113  // Transact invokes the (paid) contract method with params as input values.
  5114  func (_BridgeOperator *BridgeOperatorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5115  	return _BridgeOperator.Contract.contract.Transact(opts, method, params...)
  5116  }
  5117  
  5118  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
  5119  //
  5120  // Solidity: function MAX_OPERATOR() view returns(uint64)
  5121  func (_BridgeOperator *BridgeOperatorCaller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) {
  5122  	var (
  5123  		ret0 = new(uint64)
  5124  	)
  5125  	out := ret0
  5126  	err := _BridgeOperator.contract.Call(opts, out, "MAX_OPERATOR")
  5127  	return *ret0, err
  5128  }
  5129  
  5130  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
  5131  //
  5132  // Solidity: function MAX_OPERATOR() view returns(uint64)
  5133  func (_BridgeOperator *BridgeOperatorSession) MAXOPERATOR() (uint64, error) {
  5134  	return _BridgeOperator.Contract.MAXOPERATOR(&_BridgeOperator.CallOpts)
  5135  }
  5136  
  5137  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
  5138  //
  5139  // Solidity: function MAX_OPERATOR() view returns(uint64)
  5140  func (_BridgeOperator *BridgeOperatorCallerSession) MAXOPERATOR() (uint64, error) {
  5141  	return _BridgeOperator.Contract.MAXOPERATOR(&_BridgeOperator.CallOpts)
  5142  }
  5143  
  5144  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
  5145  //
  5146  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
  5147  func (_BridgeOperator *BridgeOperatorCaller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) {
  5148  	var (
  5149  		ret0 = new(bool)
  5150  	)
  5151  	out := ret0
  5152  	err := _BridgeOperator.contract.Call(opts, out, "closedValueTransferVotes", arg0)
  5153  	return *ret0, err
  5154  }
  5155  
  5156  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
  5157  //
  5158  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
  5159  func (_BridgeOperator *BridgeOperatorSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) {
  5160  	return _BridgeOperator.Contract.ClosedValueTransferVotes(&_BridgeOperator.CallOpts, arg0)
  5161  }
  5162  
  5163  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
  5164  //
  5165  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
  5166  func (_BridgeOperator *BridgeOperatorCallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) {
  5167  	return _BridgeOperator.Contract.ClosedValueTransferVotes(&_BridgeOperator.CallOpts, arg0)
  5168  }
  5169  
  5170  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
  5171  //
  5172  // Solidity: function configurationNonce() view returns(uint64)
  5173  func (_BridgeOperator *BridgeOperatorCaller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) {
  5174  	var (
  5175  		ret0 = new(uint64)
  5176  	)
  5177  	out := ret0
  5178  	err := _BridgeOperator.contract.Call(opts, out, "configurationNonce")
  5179  	return *ret0, err
  5180  }
  5181  
  5182  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
  5183  //
  5184  // Solidity: function configurationNonce() view returns(uint64)
  5185  func (_BridgeOperator *BridgeOperatorSession) ConfigurationNonce() (uint64, error) {
  5186  	return _BridgeOperator.Contract.ConfigurationNonce(&_BridgeOperator.CallOpts)
  5187  }
  5188  
  5189  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
  5190  //
  5191  // Solidity: function configurationNonce() view returns(uint64)
  5192  func (_BridgeOperator *BridgeOperatorCallerSession) ConfigurationNonce() (uint64, error) {
  5193  	return _BridgeOperator.Contract.ConfigurationNonce(&_BridgeOperator.CallOpts)
  5194  }
  5195  
  5196  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
  5197  //
  5198  // Solidity: function getOperatorList() view returns(address[])
  5199  func (_BridgeOperator *BridgeOperatorCaller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) {
  5200  	var (
  5201  		ret0 = new([]common.Address)
  5202  	)
  5203  	out := ret0
  5204  	err := _BridgeOperator.contract.Call(opts, out, "getOperatorList")
  5205  	return *ret0, err
  5206  }
  5207  
  5208  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
  5209  //
  5210  // Solidity: function getOperatorList() view returns(address[])
  5211  func (_BridgeOperator *BridgeOperatorSession) GetOperatorList() ([]common.Address, error) {
  5212  	return _BridgeOperator.Contract.GetOperatorList(&_BridgeOperator.CallOpts)
  5213  }
  5214  
  5215  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
  5216  //
  5217  // Solidity: function getOperatorList() view returns(address[])
  5218  func (_BridgeOperator *BridgeOperatorCallerSession) GetOperatorList() ([]common.Address, error) {
  5219  	return _BridgeOperator.Contract.GetOperatorList(&_BridgeOperator.CallOpts)
  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 (_BridgeOperator *BridgeOperatorCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
  5226  	var (
  5227  		ret0 = new(bool)
  5228  	)
  5229  	out := ret0
  5230  	err := _BridgeOperator.contract.Call(opts, out, "isOwner")
  5231  	return *ret0, err
  5232  }
  5233  
  5234  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  5235  //
  5236  // Solidity: function isOwner() view returns(bool)
  5237  func (_BridgeOperator *BridgeOperatorSession) IsOwner() (bool, error) {
  5238  	return _BridgeOperator.Contract.IsOwner(&_BridgeOperator.CallOpts)
  5239  }
  5240  
  5241  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  5242  //
  5243  // Solidity: function isOwner() view returns(bool)
  5244  func (_BridgeOperator *BridgeOperatorCallerSession) IsOwner() (bool, error) {
  5245  	return _BridgeOperator.Contract.IsOwner(&_BridgeOperator.CallOpts)
  5246  }
  5247  
  5248  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
  5249  //
  5250  // Solidity: function operatorList(uint256 ) view returns(address)
  5251  func (_BridgeOperator *BridgeOperatorCaller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
  5252  	var (
  5253  		ret0 = new(common.Address)
  5254  	)
  5255  	out := ret0
  5256  	err := _BridgeOperator.contract.Call(opts, out, "operatorList", arg0)
  5257  	return *ret0, err
  5258  }
  5259  
  5260  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
  5261  //
  5262  // Solidity: function operatorList(uint256 ) view returns(address)
  5263  func (_BridgeOperator *BridgeOperatorSession) OperatorList(arg0 *big.Int) (common.Address, error) {
  5264  	return _BridgeOperator.Contract.OperatorList(&_BridgeOperator.CallOpts, arg0)
  5265  }
  5266  
  5267  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
  5268  //
  5269  // Solidity: function operatorList(uint256 ) view returns(address)
  5270  func (_BridgeOperator *BridgeOperatorCallerSession) OperatorList(arg0 *big.Int) (common.Address, error) {
  5271  	return _BridgeOperator.Contract.OperatorList(&_BridgeOperator.CallOpts, arg0)
  5272  }
  5273  
  5274  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
  5275  //
  5276  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
  5277  func (_BridgeOperator *BridgeOperatorCaller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) {
  5278  	var (
  5279  		ret0 = new(uint8)
  5280  	)
  5281  	out := ret0
  5282  	err := _BridgeOperator.contract.Call(opts, out, "operatorThresholds", arg0)
  5283  	return *ret0, err
  5284  }
  5285  
  5286  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
  5287  //
  5288  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
  5289  func (_BridgeOperator *BridgeOperatorSession) OperatorThresholds(arg0 uint8) (uint8, error) {
  5290  	return _BridgeOperator.Contract.OperatorThresholds(&_BridgeOperator.CallOpts, arg0)
  5291  }
  5292  
  5293  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
  5294  //
  5295  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
  5296  func (_BridgeOperator *BridgeOperatorCallerSession) OperatorThresholds(arg0 uint8) (uint8, error) {
  5297  	return _BridgeOperator.Contract.OperatorThresholds(&_BridgeOperator.CallOpts, arg0)
  5298  }
  5299  
  5300  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
  5301  //
  5302  // Solidity: function operators(address ) view returns(bool)
  5303  func (_BridgeOperator *BridgeOperatorCaller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
  5304  	var (
  5305  		ret0 = new(bool)
  5306  	)
  5307  	out := ret0
  5308  	err := _BridgeOperator.contract.Call(opts, out, "operators", arg0)
  5309  	return *ret0, err
  5310  }
  5311  
  5312  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
  5313  //
  5314  // Solidity: function operators(address ) view returns(bool)
  5315  func (_BridgeOperator *BridgeOperatorSession) Operators(arg0 common.Address) (bool, error) {
  5316  	return _BridgeOperator.Contract.Operators(&_BridgeOperator.CallOpts, arg0)
  5317  }
  5318  
  5319  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
  5320  //
  5321  // Solidity: function operators(address ) view returns(bool)
  5322  func (_BridgeOperator *BridgeOperatorCallerSession) Operators(arg0 common.Address) (bool, error) {
  5323  	return _BridgeOperator.Contract.Operators(&_BridgeOperator.CallOpts, arg0)
  5324  }
  5325  
  5326  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  5327  //
  5328  // Solidity: function owner() view returns(address)
  5329  func (_BridgeOperator *BridgeOperatorCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  5330  	var (
  5331  		ret0 = new(common.Address)
  5332  	)
  5333  	out := ret0
  5334  	err := _BridgeOperator.contract.Call(opts, out, "owner")
  5335  	return *ret0, err
  5336  }
  5337  
  5338  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  5339  //
  5340  // Solidity: function owner() view returns(address)
  5341  func (_BridgeOperator *BridgeOperatorSession) Owner() (common.Address, error) {
  5342  	return _BridgeOperator.Contract.Owner(&_BridgeOperator.CallOpts)
  5343  }
  5344  
  5345  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  5346  //
  5347  // Solidity: function owner() view returns(address)
  5348  func (_BridgeOperator *BridgeOperatorCallerSession) Owner() (common.Address, error) {
  5349  	return _BridgeOperator.Contract.Owner(&_BridgeOperator.CallOpts)
  5350  }
  5351  
  5352  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  5353  //
  5354  // Solidity: function deregisterOperator(address _operator) returns()
  5355  func (_BridgeOperator *BridgeOperatorTransactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
  5356  	return _BridgeOperator.contract.Transact(opts, "deregisterOperator", _operator)
  5357  }
  5358  
  5359  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  5360  //
  5361  // Solidity: function deregisterOperator(address _operator) returns()
  5362  func (_BridgeOperator *BridgeOperatorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) {
  5363  	return _BridgeOperator.Contract.DeregisterOperator(&_BridgeOperator.TransactOpts, _operator)
  5364  }
  5365  
  5366  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  5367  //
  5368  // Solidity: function deregisterOperator(address _operator) returns()
  5369  func (_BridgeOperator *BridgeOperatorTransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) {
  5370  	return _BridgeOperator.Contract.DeregisterOperator(&_BridgeOperator.TransactOpts, _operator)
  5371  }
  5372  
  5373  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  5374  //
  5375  // Solidity: function registerOperator(address _operator) returns()
  5376  func (_BridgeOperator *BridgeOperatorTransactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
  5377  	return _BridgeOperator.contract.Transact(opts, "registerOperator", _operator)
  5378  }
  5379  
  5380  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  5381  //
  5382  // Solidity: function registerOperator(address _operator) returns()
  5383  func (_BridgeOperator *BridgeOperatorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) {
  5384  	return _BridgeOperator.Contract.RegisterOperator(&_BridgeOperator.TransactOpts, _operator)
  5385  }
  5386  
  5387  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  5388  //
  5389  // Solidity: function registerOperator(address _operator) returns()
  5390  func (_BridgeOperator *BridgeOperatorTransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) {
  5391  	return _BridgeOperator.Contract.RegisterOperator(&_BridgeOperator.TransactOpts, _operator)
  5392  }
  5393  
  5394  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  5395  //
  5396  // Solidity: function renounceOwnership() returns()
  5397  func (_BridgeOperator *BridgeOperatorTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  5398  	return _BridgeOperator.contract.Transact(opts, "renounceOwnership")
  5399  }
  5400  
  5401  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  5402  //
  5403  // Solidity: function renounceOwnership() returns()
  5404  func (_BridgeOperator *BridgeOperatorSession) RenounceOwnership() (*types.Transaction, error) {
  5405  	return _BridgeOperator.Contract.RenounceOwnership(&_BridgeOperator.TransactOpts)
  5406  }
  5407  
  5408  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  5409  //
  5410  // Solidity: function renounceOwnership() returns()
  5411  func (_BridgeOperator *BridgeOperatorTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  5412  	return _BridgeOperator.Contract.RenounceOwnership(&_BridgeOperator.TransactOpts)
  5413  }
  5414  
  5415  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  5416  //
  5417  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  5418  func (_BridgeOperator *BridgeOperatorTransactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) {
  5419  	return _BridgeOperator.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold)
  5420  }
  5421  
  5422  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  5423  //
  5424  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  5425  func (_BridgeOperator *BridgeOperatorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) {
  5426  	return _BridgeOperator.Contract.SetOperatorThreshold(&_BridgeOperator.TransactOpts, _voteType, _threshold)
  5427  }
  5428  
  5429  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  5430  //
  5431  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  5432  func (_BridgeOperator *BridgeOperatorTransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) {
  5433  	return _BridgeOperator.Contract.SetOperatorThreshold(&_BridgeOperator.TransactOpts, _voteType, _threshold)
  5434  }
  5435  
  5436  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  5437  //
  5438  // Solidity: function transferOwnership(address newOwner) returns()
  5439  func (_BridgeOperator *BridgeOperatorTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  5440  	return _BridgeOperator.contract.Transact(opts, "transferOwnership", newOwner)
  5441  }
  5442  
  5443  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  5444  //
  5445  // Solidity: function transferOwnership(address newOwner) returns()
  5446  func (_BridgeOperator *BridgeOperatorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  5447  	return _BridgeOperator.Contract.TransferOwnership(&_BridgeOperator.TransactOpts, newOwner)
  5448  }
  5449  
  5450  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  5451  //
  5452  // Solidity: function transferOwnership(address newOwner) returns()
  5453  func (_BridgeOperator *BridgeOperatorTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  5454  	return _BridgeOperator.Contract.TransferOwnership(&_BridgeOperator.TransactOpts, newOwner)
  5455  }
  5456  
  5457  // BridgeOperatorOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeOperator contract.
  5458  type BridgeOperatorOwnershipTransferredIterator struct {
  5459  	Event *BridgeOperatorOwnershipTransferred // Event containing the contract specifics and raw log
  5460  
  5461  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5462  	event    string              // Event name to use for unpacking event data
  5463  
  5464  	logs chan types.Log      // Log channel receiving the found contract events
  5465  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  5466  	done bool                // Whether the subscription completed delivering logs
  5467  	fail error               // Occurred error to stop iteration
  5468  }
  5469  
  5470  // Next advances the iterator to the subsequent event, returning whether there
  5471  // are any more events found. In case of a retrieval or parsing error, false is
  5472  // returned and Error() can be queried for the exact failure.
  5473  func (it *BridgeOperatorOwnershipTransferredIterator) Next() bool {
  5474  	// If the iterator failed, stop iterating
  5475  	if it.fail != nil {
  5476  		return false
  5477  	}
  5478  	// If the iterator completed, deliver directly whatever's available
  5479  	if it.done {
  5480  		select {
  5481  		case log := <-it.logs:
  5482  			it.Event = new(BridgeOperatorOwnershipTransferred)
  5483  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5484  				it.fail = err
  5485  				return false
  5486  			}
  5487  			it.Event.Raw = log
  5488  			return true
  5489  
  5490  		default:
  5491  			return false
  5492  		}
  5493  	}
  5494  	// Iterator still in progress, wait for either a data or an error event
  5495  	select {
  5496  	case log := <-it.logs:
  5497  		it.Event = new(BridgeOperatorOwnershipTransferred)
  5498  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5499  			it.fail = err
  5500  			return false
  5501  		}
  5502  		it.Event.Raw = log
  5503  		return true
  5504  
  5505  	case err := <-it.sub.Err():
  5506  		it.done = true
  5507  		it.fail = err
  5508  		return it.Next()
  5509  	}
  5510  }
  5511  
  5512  // Error returns any retrieval or parsing error occurred during filtering.
  5513  func (it *BridgeOperatorOwnershipTransferredIterator) Error() error {
  5514  	return it.fail
  5515  }
  5516  
  5517  // Close terminates the iteration process, releasing any pending underlying
  5518  // resources.
  5519  func (it *BridgeOperatorOwnershipTransferredIterator) Close() error {
  5520  	it.sub.Unsubscribe()
  5521  	return nil
  5522  }
  5523  
  5524  // BridgeOperatorOwnershipTransferred represents a OwnershipTransferred event raised by the BridgeOperator contract.
  5525  type BridgeOperatorOwnershipTransferred struct {
  5526  	PreviousOwner common.Address
  5527  	NewOwner      common.Address
  5528  	Raw           types.Log // Blockchain specific contextual infos
  5529  }
  5530  
  5531  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  5532  //
  5533  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  5534  func (_BridgeOperator *BridgeOperatorFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeOperatorOwnershipTransferredIterator, error) {
  5535  
  5536  	var previousOwnerRule []interface{}
  5537  	for _, previousOwnerItem := range previousOwner {
  5538  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  5539  	}
  5540  	var newOwnerRule []interface{}
  5541  	for _, newOwnerItem := range newOwner {
  5542  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  5543  	}
  5544  
  5545  	logs, sub, err := _BridgeOperator.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  5546  	if err != nil {
  5547  		return nil, err
  5548  	}
  5549  	return &BridgeOperatorOwnershipTransferredIterator{contract: _BridgeOperator.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  5550  }
  5551  
  5552  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  5553  //
  5554  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  5555  func (_BridgeOperator *BridgeOperatorFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeOperatorOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  5556  
  5557  	var previousOwnerRule []interface{}
  5558  	for _, previousOwnerItem := range previousOwner {
  5559  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  5560  	}
  5561  	var newOwnerRule []interface{}
  5562  	for _, newOwnerItem := range newOwner {
  5563  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  5564  	}
  5565  
  5566  	logs, sub, err := _BridgeOperator.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  5567  	if err != nil {
  5568  		return nil, err
  5569  	}
  5570  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5571  		defer sub.Unsubscribe()
  5572  		for {
  5573  			select {
  5574  			case log := <-logs:
  5575  				// New log arrived, parse the event and forward to the user
  5576  				event := new(BridgeOperatorOwnershipTransferred)
  5577  				if err := _BridgeOperator.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  5578  					return err
  5579  				}
  5580  				event.Raw = log
  5581  
  5582  				select {
  5583  				case sink <- event:
  5584  				case err := <-sub.Err():
  5585  					return err
  5586  				case <-quit:
  5587  					return nil
  5588  				}
  5589  			case err := <-sub.Err():
  5590  				return err
  5591  			case <-quit:
  5592  				return nil
  5593  			}
  5594  		}
  5595  	}), nil
  5596  }
  5597  
  5598  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  5599  //
  5600  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  5601  func (_BridgeOperator *BridgeOperatorFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeOperatorOwnershipTransferred, error) {
  5602  	event := new(BridgeOperatorOwnershipTransferred)
  5603  	if err := _BridgeOperator.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  5604  		return nil, err
  5605  	}
  5606  	return event, nil
  5607  }
  5608  
  5609  // BridgeTokensABI is the input ABI used to generate the binding from.
  5610  const BridgeTokensABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"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\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}]"
  5611  
  5612  // BridgeTokensBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  5613  const BridgeTokensBinRuntime = `608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638c0bd9161161008c5780639ef2017b116100665780639ef2017b14610213578063bab2af1d14610239578063ea21eade1461025f578063f2fde38b146102b7576100cf565b80638c0bd916146101dd5780638da5cb5b146102035780638f32d59b1461020b576100cf565b806310693fcd146100d45780633e4fe949146100fc5780634739f7e51461013557806348a18a6a146101635780635eb7413a1461019b578063715018a6146101d5575b600080fd5b6100fa600480360360208110156100ea57600080fd5b50356001600160a01b03166102dd565b005b6101196004803603602081101561011257600080fd5b5035610450565b604080516001600160a01b039092168252519081900360200190f35b6100fa6004803603604081101561014b57600080fd5b506001600160a01b0381358116916020013516610477565b6101896004803603602081101561017957600080fd5b50356001600160a01b03166105d2565b60408051918252519081900360200190f35b6101c1600480360360208110156101b157600080fd5b50356001600160a01b03166105e4565b604080519115158252519081900360200190f35b6100fa6105f9565b610119600480360360208110156101f357600080fd5b50356001600160a01b031661068d565b6101196106a8565b6101c16106b8565b6100fa6004803603602081101561022957600080fd5b50356001600160a01b03166106c9565b6100fa6004803603602081101561024f57600080fd5b50356001600160a01b031661083d565b610267610a2c565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102a357818101518382015260200161028b565b505050509050019250505060405180910390f35b6100fa600480360360208110156102cd57600080fd5b50356001600160a01b0316610a8e565b6102e56106b8565b6103275760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b0380821660009081526001602052604090205482911661038f5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff16156104025760408051600160e51b62461bcd02815260206004820152600c60248201527f6c6f636b656420746f6b656e0000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6003818154811061045d57fe5b6000918252602090912001546001600160a01b0316905081565b61047f6106b8565b6104c15760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b03808316600090815260016020526040902054839116156105335760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260016020818152604080842080549689166001600160a01b031997881617905560038054600290935281852083905592820183559183527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60026020526000908152604090205481565b60046020526000908152604090205460ff1681565b6106016106b8565b6106435760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001602052600090815260409020546001600160a01b031681565b6000546001600160a01b03165b90565b6000546001600160a01b0316331490565b6106d16106b8565b6107135760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b0380821660009081526001602052604090205482911661077b5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff1615156001146107f25760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b6108456106b8565b6108875760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600160205260409020548291166108ef5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260016020908152604080832080546001600160a01b031916905560048252808320805460ff19169055600290915281208054919055600354600019018110156109df5760038054600019810190811061095357fe5b600091825260209091200154600380546001600160a01b03909216918390811061097957fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060026000600384815481106109b957fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b60038054906109f2906000198301610b87565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60606003805480602002602001604051908101604052809291908181526020018280548015610a8457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a66575b5050505050905090565b610a966106b8565b610ad85760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b610ae181610ae4565b50565b6001600160a01b038116610b2c57604051600160e51b62461bcd028152600401808060200182810382526026815260200180610bcf6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b815481835581811115610bab57600083815260209020610bab918101908301610bb0565b505050565b6106b591905b80821115610bca5760008155600101610bb6565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a165627a7a723058201ec54bb9eb49a58b0e627e2314c55d2f67a57eea0384269bf5e48b2a1aafc3440029`
  5614  
  5615  // BridgeTokensFuncSigs maps the 4-byte function signature to its string representation.
  5616  var BridgeTokensFuncSigs = map[string]string{
  5617  	"bab2af1d": "deregisterToken(address)",
  5618  	"ea21eade": "getRegisteredTokenList()",
  5619  	"48a18a6a": "indexOfTokens(address)",
  5620  	"8f32d59b": "isOwner()",
  5621  	"10693fcd": "lockToken(address)",
  5622  	"5eb7413a": "lockedTokens(address)",
  5623  	"8da5cb5b": "owner()",
  5624  	"4739f7e5": "registerToken(address,address)",
  5625  	"3e4fe949": "registeredTokenList(uint256)",
  5626  	"8c0bd916": "registeredTokens(address)",
  5627  	"715018a6": "renounceOwnership()",
  5628  	"f2fde38b": "transferOwnership(address)",
  5629  	"9ef2017b": "unlockToken(address)",
  5630  }
  5631  
  5632  // BridgeTokensBin is the compiled bytecode used for deploying new contracts.
  5633  var BridgeTokensBin = "0x60806040819052600080546001600160a01b03191633178082556001600160a01b0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3610c40806100576000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638c0bd9161161008c5780639ef2017b116100665780639ef2017b14610213578063bab2af1d14610239578063ea21eade1461025f578063f2fde38b146102b7576100cf565b80638c0bd916146101dd5780638da5cb5b146102035780638f32d59b1461020b576100cf565b806310693fcd146100d45780633e4fe949146100fc5780634739f7e51461013557806348a18a6a146101635780635eb7413a1461019b578063715018a6146101d5575b600080fd5b6100fa600480360360208110156100ea57600080fd5b50356001600160a01b03166102dd565b005b6101196004803603602081101561011257600080fd5b5035610450565b604080516001600160a01b039092168252519081900360200190f35b6100fa6004803603604081101561014b57600080fd5b506001600160a01b0381358116916020013516610477565b6101896004803603602081101561017957600080fd5b50356001600160a01b03166105d2565b60408051918252519081900360200190f35b6101c1600480360360208110156101b157600080fd5b50356001600160a01b03166105e4565b604080519115158252519081900360200190f35b6100fa6105f9565b610119600480360360208110156101f357600080fd5b50356001600160a01b031661068d565b6101196106a8565b6101c16106b8565b6100fa6004803603602081101561022957600080fd5b50356001600160a01b03166106c9565b6100fa6004803603602081101561024f57600080fd5b50356001600160a01b031661083d565b610267610a2c565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102a357818101518382015260200161028b565b505050509050019250505060405180910390f35b6100fa600480360360208110156102cd57600080fd5b50356001600160a01b0316610a8e565b6102e56106b8565b6103275760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b0380821660009081526001602052604090205482911661038f5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff16156104025760408051600160e51b62461bcd02815260206004820152600c60248201527f6c6f636b656420746f6b656e0000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6003818154811061045d57fe5b6000918252602090912001546001600160a01b0316905081565b61047f6106b8565b6104c15760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b03808316600090815260016020526040902054839116156105335760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260016020818152604080842080549689166001600160a01b031997881617905560038054600290935281852083905592820183559183527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60026020526000908152604090205481565b60046020526000908152604090205460ff1681565b6106016106b8565b6106435760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001602052600090815260409020546001600160a01b031681565b6000546001600160a01b03165b90565b6000546001600160a01b0316331490565b6106d16106b8565b6107135760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b0380821660009081526001602052604090205482911661077b5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff1615156001146107f25760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b6108456106b8565b6108875760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600160205260409020548291166108ef5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260016020908152604080832080546001600160a01b031916905560048252808320805460ff19169055600290915281208054919055600354600019018110156109df5760038054600019810190811061095357fe5b600091825260209091200154600380546001600160a01b03909216918390811061097957fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060026000600384815481106109b957fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b60038054906109f2906000198301610b87565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60606003805480602002602001604051908101604052809291908181526020018280548015610a8457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a66575b5050505050905090565b610a966106b8565b610ad85760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b610ae181610ae4565b50565b6001600160a01b038116610b2c57604051600160e51b62461bcd028152600401808060200182810382526026815260200180610bcf6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b815481835581811115610bab57600083815260209020610bab918101908301610bb0565b505050565b6106b591905b80821115610bca5760008155600101610bb6565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a165627a7a723058201ec54bb9eb49a58b0e627e2314c55d2f67a57eea0384269bf5e48b2a1aafc3440029"
  5634  
  5635  // DeployBridgeTokens deploys a new Klaytn contract, binding an instance of BridgeTokens to it.
  5636  func DeployBridgeTokens(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *BridgeTokens, error) {
  5637  	parsed, err := abi.JSON(strings.NewReader(BridgeTokensABI))
  5638  	if err != nil {
  5639  		return common.Address{}, nil, nil, err
  5640  	}
  5641  
  5642  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(BridgeTokensBin), backend)
  5643  	if err != nil {
  5644  		return common.Address{}, nil, nil, err
  5645  	}
  5646  	return address, tx, &BridgeTokens{BridgeTokensCaller: BridgeTokensCaller{contract: contract}, BridgeTokensTransactor: BridgeTokensTransactor{contract: contract}, BridgeTokensFilterer: BridgeTokensFilterer{contract: contract}}, nil
  5647  }
  5648  
  5649  // BridgeTokens is an auto generated Go binding around a Klaytn contract.
  5650  type BridgeTokens struct {
  5651  	BridgeTokensCaller     // Read-only binding to the contract
  5652  	BridgeTokensTransactor // Write-only binding to the contract
  5653  	BridgeTokensFilterer   // Log filterer for contract events
  5654  }
  5655  
  5656  // BridgeTokensCaller is an auto generated read-only Go binding around a Klaytn contract.
  5657  type BridgeTokensCaller struct {
  5658  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5659  }
  5660  
  5661  // BridgeTokensTransactor is an auto generated write-only Go binding around a Klaytn contract.
  5662  type BridgeTokensTransactor struct {
  5663  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5664  }
  5665  
  5666  // BridgeTokensFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  5667  type BridgeTokensFilterer struct {
  5668  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5669  }
  5670  
  5671  // BridgeTokensSession is an auto generated Go binding around a Klaytn contract,
  5672  // with pre-set call and transact options.
  5673  type BridgeTokensSession struct {
  5674  	Contract     *BridgeTokens     // Generic contract binding to set the session for
  5675  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  5676  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  5677  }
  5678  
  5679  // BridgeTokensCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  5680  // with pre-set call options.
  5681  type BridgeTokensCallerSession struct {
  5682  	Contract *BridgeTokensCaller // Generic contract caller binding to set the session for
  5683  	CallOpts bind.CallOpts       // Call options to use throughout this session
  5684  }
  5685  
  5686  // BridgeTokensTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  5687  // with pre-set transact options.
  5688  type BridgeTokensTransactorSession struct {
  5689  	Contract     *BridgeTokensTransactor // Generic contract transactor binding to set the session for
  5690  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
  5691  }
  5692  
  5693  // BridgeTokensRaw is an auto generated low-level Go binding around a Klaytn contract.
  5694  type BridgeTokensRaw struct {
  5695  	Contract *BridgeTokens // Generic contract binding to access the raw methods on
  5696  }
  5697  
  5698  // BridgeTokensCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  5699  type BridgeTokensCallerRaw struct {
  5700  	Contract *BridgeTokensCaller // Generic read-only contract binding to access the raw methods on
  5701  }
  5702  
  5703  // BridgeTokensTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  5704  type BridgeTokensTransactorRaw struct {
  5705  	Contract *BridgeTokensTransactor // Generic write-only contract binding to access the raw methods on
  5706  }
  5707  
  5708  // NewBridgeTokens creates a new instance of BridgeTokens, bound to a specific deployed contract.
  5709  func NewBridgeTokens(address common.Address, backend bind.ContractBackend) (*BridgeTokens, error) {
  5710  	contract, err := bindBridgeTokens(address, backend, backend, backend)
  5711  	if err != nil {
  5712  		return nil, err
  5713  	}
  5714  	return &BridgeTokens{BridgeTokensCaller: BridgeTokensCaller{contract: contract}, BridgeTokensTransactor: BridgeTokensTransactor{contract: contract}, BridgeTokensFilterer: BridgeTokensFilterer{contract: contract}}, nil
  5715  }
  5716  
  5717  // NewBridgeTokensCaller creates a new read-only instance of BridgeTokens, bound to a specific deployed contract.
  5718  func NewBridgeTokensCaller(address common.Address, caller bind.ContractCaller) (*BridgeTokensCaller, error) {
  5719  	contract, err := bindBridgeTokens(address, caller, nil, nil)
  5720  	if err != nil {
  5721  		return nil, err
  5722  	}
  5723  	return &BridgeTokensCaller{contract: contract}, nil
  5724  }
  5725  
  5726  // NewBridgeTokensTransactor creates a new write-only instance of BridgeTokens, bound to a specific deployed contract.
  5727  func NewBridgeTokensTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTokensTransactor, error) {
  5728  	contract, err := bindBridgeTokens(address, nil, transactor, nil)
  5729  	if err != nil {
  5730  		return nil, err
  5731  	}
  5732  	return &BridgeTokensTransactor{contract: contract}, nil
  5733  }
  5734  
  5735  // NewBridgeTokensFilterer creates a new log filterer instance of BridgeTokens, bound to a specific deployed contract.
  5736  func NewBridgeTokensFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTokensFilterer, error) {
  5737  	contract, err := bindBridgeTokens(address, nil, nil, filterer)
  5738  	if err != nil {
  5739  		return nil, err
  5740  	}
  5741  	return &BridgeTokensFilterer{contract: contract}, nil
  5742  }
  5743  
  5744  // bindBridgeTokens binds a generic wrapper to an already deployed contract.
  5745  func bindBridgeTokens(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  5746  	parsed, err := abi.JSON(strings.NewReader(BridgeTokensABI))
  5747  	if err != nil {
  5748  		return nil, err
  5749  	}
  5750  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  5751  }
  5752  
  5753  // Call invokes the (constant) contract method with params as input values and
  5754  // sets the output to result. The result type might be a single field for simple
  5755  // returns, a slice of interfaces for anonymous returns and a struct for named
  5756  // returns.
  5757  func (_BridgeTokens *BridgeTokensRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  5758  	return _BridgeTokens.Contract.BridgeTokensCaller.contract.Call(opts, result, method, params...)
  5759  }
  5760  
  5761  // Transfer initiates a plain transaction to move funds to the contract, calling
  5762  // its default method if one is available.
  5763  func (_BridgeTokens *BridgeTokensRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5764  	return _BridgeTokens.Contract.BridgeTokensTransactor.contract.Transfer(opts)
  5765  }
  5766  
  5767  // Transact invokes the (paid) contract method with params as input values.
  5768  func (_BridgeTokens *BridgeTokensRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5769  	return _BridgeTokens.Contract.BridgeTokensTransactor.contract.Transact(opts, method, params...)
  5770  }
  5771  
  5772  // Call invokes the (constant) contract method with params as input values and
  5773  // sets the output to result. The result type might be a single field for simple
  5774  // returns, a slice of interfaces for anonymous returns and a struct for named
  5775  // returns.
  5776  func (_BridgeTokens *BridgeTokensCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  5777  	return _BridgeTokens.Contract.contract.Call(opts, result, method, params...)
  5778  }
  5779  
  5780  // Transfer initiates a plain transaction to move funds to the contract, calling
  5781  // its default method if one is available.
  5782  func (_BridgeTokens *BridgeTokensTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5783  	return _BridgeTokens.Contract.contract.Transfer(opts)
  5784  }
  5785  
  5786  // Transact invokes the (paid) contract method with params as input values.
  5787  func (_BridgeTokens *BridgeTokensTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5788  	return _BridgeTokens.Contract.contract.Transact(opts, method, params...)
  5789  }
  5790  
  5791  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
  5792  //
  5793  // Solidity: function getRegisteredTokenList() view returns(address[])
  5794  func (_BridgeTokens *BridgeTokensCaller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) {
  5795  	var (
  5796  		ret0 = new([]common.Address)
  5797  	)
  5798  	out := ret0
  5799  	err := _BridgeTokens.contract.Call(opts, out, "getRegisteredTokenList")
  5800  	return *ret0, err
  5801  }
  5802  
  5803  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
  5804  //
  5805  // Solidity: function getRegisteredTokenList() view returns(address[])
  5806  func (_BridgeTokens *BridgeTokensSession) GetRegisteredTokenList() ([]common.Address, error) {
  5807  	return _BridgeTokens.Contract.GetRegisteredTokenList(&_BridgeTokens.CallOpts)
  5808  }
  5809  
  5810  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
  5811  //
  5812  // Solidity: function getRegisteredTokenList() view returns(address[])
  5813  func (_BridgeTokens *BridgeTokensCallerSession) GetRegisteredTokenList() ([]common.Address, error) {
  5814  	return _BridgeTokens.Contract.GetRegisteredTokenList(&_BridgeTokens.CallOpts)
  5815  }
  5816  
  5817  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
  5818  //
  5819  // Solidity: function indexOfTokens(address ) view returns(uint256)
  5820  func (_BridgeTokens *BridgeTokensCaller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
  5821  	var (
  5822  		ret0 = new(*big.Int)
  5823  	)
  5824  	out := ret0
  5825  	err := _BridgeTokens.contract.Call(opts, out, "indexOfTokens", arg0)
  5826  	return *ret0, err
  5827  }
  5828  
  5829  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
  5830  //
  5831  // Solidity: function indexOfTokens(address ) view returns(uint256)
  5832  func (_BridgeTokens *BridgeTokensSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) {
  5833  	return _BridgeTokens.Contract.IndexOfTokens(&_BridgeTokens.CallOpts, arg0)
  5834  }
  5835  
  5836  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
  5837  //
  5838  // Solidity: function indexOfTokens(address ) view returns(uint256)
  5839  func (_BridgeTokens *BridgeTokensCallerSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) {
  5840  	return _BridgeTokens.Contract.IndexOfTokens(&_BridgeTokens.CallOpts, arg0)
  5841  }
  5842  
  5843  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  5844  //
  5845  // Solidity: function isOwner() view returns(bool)
  5846  func (_BridgeTokens *BridgeTokensCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
  5847  	var (
  5848  		ret0 = new(bool)
  5849  	)
  5850  	out := ret0
  5851  	err := _BridgeTokens.contract.Call(opts, out, "isOwner")
  5852  	return *ret0, err
  5853  }
  5854  
  5855  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  5856  //
  5857  // Solidity: function isOwner() view returns(bool)
  5858  func (_BridgeTokens *BridgeTokensSession) IsOwner() (bool, error) {
  5859  	return _BridgeTokens.Contract.IsOwner(&_BridgeTokens.CallOpts)
  5860  }
  5861  
  5862  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  5863  //
  5864  // Solidity: function isOwner() view returns(bool)
  5865  func (_BridgeTokens *BridgeTokensCallerSession) IsOwner() (bool, error) {
  5866  	return _BridgeTokens.Contract.IsOwner(&_BridgeTokens.CallOpts)
  5867  }
  5868  
  5869  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
  5870  //
  5871  // Solidity: function lockedTokens(address ) view returns(bool)
  5872  func (_BridgeTokens *BridgeTokensCaller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
  5873  	var (
  5874  		ret0 = new(bool)
  5875  	)
  5876  	out := ret0
  5877  	err := _BridgeTokens.contract.Call(opts, out, "lockedTokens", arg0)
  5878  	return *ret0, err
  5879  }
  5880  
  5881  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
  5882  //
  5883  // Solidity: function lockedTokens(address ) view returns(bool)
  5884  func (_BridgeTokens *BridgeTokensSession) LockedTokens(arg0 common.Address) (bool, error) {
  5885  	return _BridgeTokens.Contract.LockedTokens(&_BridgeTokens.CallOpts, arg0)
  5886  }
  5887  
  5888  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
  5889  //
  5890  // Solidity: function lockedTokens(address ) view returns(bool)
  5891  func (_BridgeTokens *BridgeTokensCallerSession) LockedTokens(arg0 common.Address) (bool, error) {
  5892  	return _BridgeTokens.Contract.LockedTokens(&_BridgeTokens.CallOpts, arg0)
  5893  }
  5894  
  5895  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  5896  //
  5897  // Solidity: function owner() view returns(address)
  5898  func (_BridgeTokens *BridgeTokensCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  5899  	var (
  5900  		ret0 = new(common.Address)
  5901  	)
  5902  	out := ret0
  5903  	err := _BridgeTokens.contract.Call(opts, out, "owner")
  5904  	return *ret0, err
  5905  }
  5906  
  5907  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  5908  //
  5909  // Solidity: function owner() view returns(address)
  5910  func (_BridgeTokens *BridgeTokensSession) Owner() (common.Address, error) {
  5911  	return _BridgeTokens.Contract.Owner(&_BridgeTokens.CallOpts)
  5912  }
  5913  
  5914  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  5915  //
  5916  // Solidity: function owner() view returns(address)
  5917  func (_BridgeTokens *BridgeTokensCallerSession) Owner() (common.Address, error) {
  5918  	return _BridgeTokens.Contract.Owner(&_BridgeTokens.CallOpts)
  5919  }
  5920  
  5921  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
  5922  //
  5923  // Solidity: function registeredTokenList(uint256 ) view returns(address)
  5924  func (_BridgeTokens *BridgeTokensCaller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
  5925  	var (
  5926  		ret0 = new(common.Address)
  5927  	)
  5928  	out := ret0
  5929  	err := _BridgeTokens.contract.Call(opts, out, "registeredTokenList", arg0)
  5930  	return *ret0, err
  5931  }
  5932  
  5933  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
  5934  //
  5935  // Solidity: function registeredTokenList(uint256 ) view returns(address)
  5936  func (_BridgeTokens *BridgeTokensSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) {
  5937  	return _BridgeTokens.Contract.RegisteredTokenList(&_BridgeTokens.CallOpts, arg0)
  5938  }
  5939  
  5940  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
  5941  //
  5942  // Solidity: function registeredTokenList(uint256 ) view returns(address)
  5943  func (_BridgeTokens *BridgeTokensCallerSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) {
  5944  	return _BridgeTokens.Contract.RegisteredTokenList(&_BridgeTokens.CallOpts, arg0)
  5945  }
  5946  
  5947  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
  5948  //
  5949  // Solidity: function registeredTokens(address ) view returns(address)
  5950  func (_BridgeTokens *BridgeTokensCaller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) {
  5951  	var (
  5952  		ret0 = new(common.Address)
  5953  	)
  5954  	out := ret0
  5955  	err := _BridgeTokens.contract.Call(opts, out, "registeredTokens", arg0)
  5956  	return *ret0, err
  5957  }
  5958  
  5959  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
  5960  //
  5961  // Solidity: function registeredTokens(address ) view returns(address)
  5962  func (_BridgeTokens *BridgeTokensSession) RegisteredTokens(arg0 common.Address) (common.Address, error) {
  5963  	return _BridgeTokens.Contract.RegisteredTokens(&_BridgeTokens.CallOpts, arg0)
  5964  }
  5965  
  5966  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
  5967  //
  5968  // Solidity: function registeredTokens(address ) view returns(address)
  5969  func (_BridgeTokens *BridgeTokensCallerSession) RegisteredTokens(arg0 common.Address) (common.Address, error) {
  5970  	return _BridgeTokens.Contract.RegisteredTokens(&_BridgeTokens.CallOpts, arg0)
  5971  }
  5972  
  5973  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
  5974  //
  5975  // Solidity: function deregisterToken(address _token) returns()
  5976  func (_BridgeTokens *BridgeTokensTransactor) DeregisterToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
  5977  	return _BridgeTokens.contract.Transact(opts, "deregisterToken", _token)
  5978  }
  5979  
  5980  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
  5981  //
  5982  // Solidity: function deregisterToken(address _token) returns()
  5983  func (_BridgeTokens *BridgeTokensSession) DeregisterToken(_token common.Address) (*types.Transaction, error) {
  5984  	return _BridgeTokens.Contract.DeregisterToken(&_BridgeTokens.TransactOpts, _token)
  5985  }
  5986  
  5987  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
  5988  //
  5989  // Solidity: function deregisterToken(address _token) returns()
  5990  func (_BridgeTokens *BridgeTokensTransactorSession) DeregisterToken(_token common.Address) (*types.Transaction, error) {
  5991  	return _BridgeTokens.Contract.DeregisterToken(&_BridgeTokens.TransactOpts, _token)
  5992  }
  5993  
  5994  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
  5995  //
  5996  // Solidity: function lockToken(address _token) returns()
  5997  func (_BridgeTokens *BridgeTokensTransactor) LockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
  5998  	return _BridgeTokens.contract.Transact(opts, "lockToken", _token)
  5999  }
  6000  
  6001  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
  6002  //
  6003  // Solidity: function lockToken(address _token) returns()
  6004  func (_BridgeTokens *BridgeTokensSession) LockToken(_token common.Address) (*types.Transaction, error) {
  6005  	return _BridgeTokens.Contract.LockToken(&_BridgeTokens.TransactOpts, _token)
  6006  }
  6007  
  6008  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
  6009  //
  6010  // Solidity: function lockToken(address _token) returns()
  6011  func (_BridgeTokens *BridgeTokensTransactorSession) LockToken(_token common.Address) (*types.Transaction, error) {
  6012  	return _BridgeTokens.Contract.LockToken(&_BridgeTokens.TransactOpts, _token)
  6013  }
  6014  
  6015  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
  6016  //
  6017  // Solidity: function registerToken(address _token, address _cToken) returns()
  6018  func (_BridgeTokens *BridgeTokensTransactor) RegisterToken(opts *bind.TransactOpts, _token common.Address, _cToken common.Address) (*types.Transaction, error) {
  6019  	return _BridgeTokens.contract.Transact(opts, "registerToken", _token, _cToken)
  6020  }
  6021  
  6022  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
  6023  //
  6024  // Solidity: function registerToken(address _token, address _cToken) returns()
  6025  func (_BridgeTokens *BridgeTokensSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) {
  6026  	return _BridgeTokens.Contract.RegisterToken(&_BridgeTokens.TransactOpts, _token, _cToken)
  6027  }
  6028  
  6029  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
  6030  //
  6031  // Solidity: function registerToken(address _token, address _cToken) returns()
  6032  func (_BridgeTokens *BridgeTokensTransactorSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) {
  6033  	return _BridgeTokens.Contract.RegisterToken(&_BridgeTokens.TransactOpts, _token, _cToken)
  6034  }
  6035  
  6036  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  6037  //
  6038  // Solidity: function renounceOwnership() returns()
  6039  func (_BridgeTokens *BridgeTokensTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  6040  	return _BridgeTokens.contract.Transact(opts, "renounceOwnership")
  6041  }
  6042  
  6043  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  6044  //
  6045  // Solidity: function renounceOwnership() returns()
  6046  func (_BridgeTokens *BridgeTokensSession) RenounceOwnership() (*types.Transaction, error) {
  6047  	return _BridgeTokens.Contract.RenounceOwnership(&_BridgeTokens.TransactOpts)
  6048  }
  6049  
  6050  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  6051  //
  6052  // Solidity: function renounceOwnership() returns()
  6053  func (_BridgeTokens *BridgeTokensTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  6054  	return _BridgeTokens.Contract.RenounceOwnership(&_BridgeTokens.TransactOpts)
  6055  }
  6056  
  6057  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  6058  //
  6059  // Solidity: function transferOwnership(address newOwner) returns()
  6060  func (_BridgeTokens *BridgeTokensTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  6061  	return _BridgeTokens.contract.Transact(opts, "transferOwnership", newOwner)
  6062  }
  6063  
  6064  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  6065  //
  6066  // Solidity: function transferOwnership(address newOwner) returns()
  6067  func (_BridgeTokens *BridgeTokensSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  6068  	return _BridgeTokens.Contract.TransferOwnership(&_BridgeTokens.TransactOpts, newOwner)
  6069  }
  6070  
  6071  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  6072  //
  6073  // Solidity: function transferOwnership(address newOwner) returns()
  6074  func (_BridgeTokens *BridgeTokensTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  6075  	return _BridgeTokens.Contract.TransferOwnership(&_BridgeTokens.TransactOpts, newOwner)
  6076  }
  6077  
  6078  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
  6079  //
  6080  // Solidity: function unlockToken(address _token) returns()
  6081  func (_BridgeTokens *BridgeTokensTransactor) UnlockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
  6082  	return _BridgeTokens.contract.Transact(opts, "unlockToken", _token)
  6083  }
  6084  
  6085  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
  6086  //
  6087  // Solidity: function unlockToken(address _token) returns()
  6088  func (_BridgeTokens *BridgeTokensSession) UnlockToken(_token common.Address) (*types.Transaction, error) {
  6089  	return _BridgeTokens.Contract.UnlockToken(&_BridgeTokens.TransactOpts, _token)
  6090  }
  6091  
  6092  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
  6093  //
  6094  // Solidity: function unlockToken(address _token) returns()
  6095  func (_BridgeTokens *BridgeTokensTransactorSession) UnlockToken(_token common.Address) (*types.Transaction, error) {
  6096  	return _BridgeTokens.Contract.UnlockToken(&_BridgeTokens.TransactOpts, _token)
  6097  }
  6098  
  6099  // BridgeTokensOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTokens contract.
  6100  type BridgeTokensOwnershipTransferredIterator struct {
  6101  	Event *BridgeTokensOwnershipTransferred // Event containing the contract specifics and raw log
  6102  
  6103  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6104  	event    string              // Event name to use for unpacking event data
  6105  
  6106  	logs chan types.Log      // Log channel receiving the found contract events
  6107  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6108  	done bool                // Whether the subscription completed delivering logs
  6109  	fail error               // Occurred error to stop iteration
  6110  }
  6111  
  6112  // Next advances the iterator to the subsequent event, returning whether there
  6113  // are any more events found. In case of a retrieval or parsing error, false is
  6114  // returned and Error() can be queried for the exact failure.
  6115  func (it *BridgeTokensOwnershipTransferredIterator) Next() bool {
  6116  	// If the iterator failed, stop iterating
  6117  	if it.fail != nil {
  6118  		return false
  6119  	}
  6120  	// If the iterator completed, deliver directly whatever's available
  6121  	if it.done {
  6122  		select {
  6123  		case log := <-it.logs:
  6124  			it.Event = new(BridgeTokensOwnershipTransferred)
  6125  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6126  				it.fail = err
  6127  				return false
  6128  			}
  6129  			it.Event.Raw = log
  6130  			return true
  6131  
  6132  		default:
  6133  			return false
  6134  		}
  6135  	}
  6136  	// Iterator still in progress, wait for either a data or an error event
  6137  	select {
  6138  	case log := <-it.logs:
  6139  		it.Event = new(BridgeTokensOwnershipTransferred)
  6140  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6141  			it.fail = err
  6142  			return false
  6143  		}
  6144  		it.Event.Raw = log
  6145  		return true
  6146  
  6147  	case err := <-it.sub.Err():
  6148  		it.done = true
  6149  		it.fail = err
  6150  		return it.Next()
  6151  	}
  6152  }
  6153  
  6154  // Error returns any retrieval or parsing error occurred during filtering.
  6155  func (it *BridgeTokensOwnershipTransferredIterator) Error() error {
  6156  	return it.fail
  6157  }
  6158  
  6159  // Close terminates the iteration process, releasing any pending underlying
  6160  // resources.
  6161  func (it *BridgeTokensOwnershipTransferredIterator) Close() error {
  6162  	it.sub.Unsubscribe()
  6163  	return nil
  6164  }
  6165  
  6166  // BridgeTokensOwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTokens contract.
  6167  type BridgeTokensOwnershipTransferred struct {
  6168  	PreviousOwner common.Address
  6169  	NewOwner      common.Address
  6170  	Raw           types.Log // Blockchain specific contextual infos
  6171  }
  6172  
  6173  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  6174  //
  6175  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  6176  func (_BridgeTokens *BridgeTokensFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTokensOwnershipTransferredIterator, error) {
  6177  
  6178  	var previousOwnerRule []interface{}
  6179  	for _, previousOwnerItem := range previousOwner {
  6180  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  6181  	}
  6182  	var newOwnerRule []interface{}
  6183  	for _, newOwnerItem := range newOwner {
  6184  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  6185  	}
  6186  
  6187  	logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  6188  	if err != nil {
  6189  		return nil, err
  6190  	}
  6191  	return &BridgeTokensOwnershipTransferredIterator{contract: _BridgeTokens.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  6192  }
  6193  
  6194  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  6195  //
  6196  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  6197  func (_BridgeTokens *BridgeTokensFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTokensOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  6198  
  6199  	var previousOwnerRule []interface{}
  6200  	for _, previousOwnerItem := range previousOwner {
  6201  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  6202  	}
  6203  	var newOwnerRule []interface{}
  6204  	for _, newOwnerItem := range newOwner {
  6205  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  6206  	}
  6207  
  6208  	logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  6209  	if err != nil {
  6210  		return nil, err
  6211  	}
  6212  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6213  		defer sub.Unsubscribe()
  6214  		for {
  6215  			select {
  6216  			case log := <-logs:
  6217  				// New log arrived, parse the event and forward to the user
  6218  				event := new(BridgeTokensOwnershipTransferred)
  6219  				if err := _BridgeTokens.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  6220  					return err
  6221  				}
  6222  				event.Raw = log
  6223  
  6224  				select {
  6225  				case sink <- event:
  6226  				case err := <-sub.Err():
  6227  					return err
  6228  				case <-quit:
  6229  					return nil
  6230  				}
  6231  			case err := <-sub.Err():
  6232  				return err
  6233  			case <-quit:
  6234  				return nil
  6235  			}
  6236  		}
  6237  	}), nil
  6238  }
  6239  
  6240  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  6241  //
  6242  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  6243  func (_BridgeTokens *BridgeTokensFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeTokensOwnershipTransferred, error) {
  6244  	event := new(BridgeTokensOwnershipTransferred)
  6245  	if err := _BridgeTokens.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  6246  		return nil, err
  6247  	}
  6248  	return event, nil
  6249  }
  6250  
  6251  // BridgeTokensTokenDeregisteredIterator is returned from FilterTokenDeregistered and is used to iterate over the raw logs and unpacked data for TokenDeregistered events raised by the BridgeTokens contract.
  6252  type BridgeTokensTokenDeregisteredIterator struct {
  6253  	Event *BridgeTokensTokenDeregistered // Event containing the contract specifics and raw log
  6254  
  6255  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6256  	event    string              // Event name to use for unpacking event data
  6257  
  6258  	logs chan types.Log      // Log channel receiving the found contract events
  6259  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6260  	done bool                // Whether the subscription completed delivering logs
  6261  	fail error               // Occurred error to stop iteration
  6262  }
  6263  
  6264  // Next advances the iterator to the subsequent event, returning whether there
  6265  // are any more events found. In case of a retrieval or parsing error, false is
  6266  // returned and Error() can be queried for the exact failure.
  6267  func (it *BridgeTokensTokenDeregisteredIterator) Next() bool {
  6268  	// If the iterator failed, stop iterating
  6269  	if it.fail != nil {
  6270  		return false
  6271  	}
  6272  	// If the iterator completed, deliver directly whatever's available
  6273  	if it.done {
  6274  		select {
  6275  		case log := <-it.logs:
  6276  			it.Event = new(BridgeTokensTokenDeregistered)
  6277  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6278  				it.fail = err
  6279  				return false
  6280  			}
  6281  			it.Event.Raw = log
  6282  			return true
  6283  
  6284  		default:
  6285  			return false
  6286  		}
  6287  	}
  6288  	// Iterator still in progress, wait for either a data or an error event
  6289  	select {
  6290  	case log := <-it.logs:
  6291  		it.Event = new(BridgeTokensTokenDeregistered)
  6292  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6293  			it.fail = err
  6294  			return false
  6295  		}
  6296  		it.Event.Raw = log
  6297  		return true
  6298  
  6299  	case err := <-it.sub.Err():
  6300  		it.done = true
  6301  		it.fail = err
  6302  		return it.Next()
  6303  	}
  6304  }
  6305  
  6306  // Error returns any retrieval or parsing error occurred during filtering.
  6307  func (it *BridgeTokensTokenDeregisteredIterator) Error() error {
  6308  	return it.fail
  6309  }
  6310  
  6311  // Close terminates the iteration process, releasing any pending underlying
  6312  // resources.
  6313  func (it *BridgeTokensTokenDeregisteredIterator) Close() error {
  6314  	it.sub.Unsubscribe()
  6315  	return nil
  6316  }
  6317  
  6318  // BridgeTokensTokenDeregistered represents a TokenDeregistered event raised by the BridgeTokens contract.
  6319  type BridgeTokensTokenDeregistered struct {
  6320  	Token common.Address
  6321  	Raw   types.Log // Blockchain specific contextual infos
  6322  }
  6323  
  6324  // FilterTokenDeregistered is a free log retrieval operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
  6325  //
  6326  // Solidity: event TokenDeregistered(address indexed token)
  6327  func (_BridgeTokens *BridgeTokensFilterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenDeregisteredIterator, error) {
  6328  
  6329  	var tokenRule []interface{}
  6330  	for _, tokenItem := range token {
  6331  		tokenRule = append(tokenRule, tokenItem)
  6332  	}
  6333  
  6334  	logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenDeregistered", tokenRule)
  6335  	if err != nil {
  6336  		return nil, err
  6337  	}
  6338  	return &BridgeTokensTokenDeregisteredIterator{contract: _BridgeTokens.contract, event: "TokenDeregistered", logs: logs, sub: sub}, nil
  6339  }
  6340  
  6341  // WatchTokenDeregistered is a free log subscription operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
  6342  //
  6343  // Solidity: event TokenDeregistered(address indexed token)
  6344  func (_BridgeTokens *BridgeTokensFilterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenDeregistered, token []common.Address) (event.Subscription, error) {
  6345  
  6346  	var tokenRule []interface{}
  6347  	for _, tokenItem := range token {
  6348  		tokenRule = append(tokenRule, tokenItem)
  6349  	}
  6350  
  6351  	logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenDeregistered", tokenRule)
  6352  	if err != nil {
  6353  		return nil, err
  6354  	}
  6355  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6356  		defer sub.Unsubscribe()
  6357  		for {
  6358  			select {
  6359  			case log := <-logs:
  6360  				// New log arrived, parse the event and forward to the user
  6361  				event := new(BridgeTokensTokenDeregistered)
  6362  				if err := _BridgeTokens.contract.UnpackLog(event, "TokenDeregistered", log); err != nil {
  6363  					return err
  6364  				}
  6365  				event.Raw = log
  6366  
  6367  				select {
  6368  				case sink <- event:
  6369  				case err := <-sub.Err():
  6370  					return err
  6371  				case <-quit:
  6372  					return nil
  6373  				}
  6374  			case err := <-sub.Err():
  6375  				return err
  6376  			case <-quit:
  6377  				return nil
  6378  			}
  6379  		}
  6380  	}), nil
  6381  }
  6382  
  6383  // ParseTokenDeregistered is a log parse operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
  6384  //
  6385  // Solidity: event TokenDeregistered(address indexed token)
  6386  func (_BridgeTokens *BridgeTokensFilterer) ParseTokenDeregistered(log types.Log) (*BridgeTokensTokenDeregistered, error) {
  6387  	event := new(BridgeTokensTokenDeregistered)
  6388  	if err := _BridgeTokens.contract.UnpackLog(event, "TokenDeregistered", log); err != nil {
  6389  		return nil, err
  6390  	}
  6391  	return event, nil
  6392  }
  6393  
  6394  // BridgeTokensTokenLockedIterator is returned from FilterTokenLocked and is used to iterate over the raw logs and unpacked data for TokenLocked events raised by the BridgeTokens contract.
  6395  type BridgeTokensTokenLockedIterator struct {
  6396  	Event *BridgeTokensTokenLocked // Event containing the contract specifics and raw log
  6397  
  6398  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6399  	event    string              // Event name to use for unpacking event data
  6400  
  6401  	logs chan types.Log      // Log channel receiving the found contract events
  6402  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6403  	done bool                // Whether the subscription completed delivering logs
  6404  	fail error               // Occurred error to stop iteration
  6405  }
  6406  
  6407  // Next advances the iterator to the subsequent event, returning whether there
  6408  // are any more events found. In case of a retrieval or parsing error, false is
  6409  // returned and Error() can be queried for the exact failure.
  6410  func (it *BridgeTokensTokenLockedIterator) Next() bool {
  6411  	// If the iterator failed, stop iterating
  6412  	if it.fail != nil {
  6413  		return false
  6414  	}
  6415  	// If the iterator completed, deliver directly whatever's available
  6416  	if it.done {
  6417  		select {
  6418  		case log := <-it.logs:
  6419  			it.Event = new(BridgeTokensTokenLocked)
  6420  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6421  				it.fail = err
  6422  				return false
  6423  			}
  6424  			it.Event.Raw = log
  6425  			return true
  6426  
  6427  		default:
  6428  			return false
  6429  		}
  6430  	}
  6431  	// Iterator still in progress, wait for either a data or an error event
  6432  	select {
  6433  	case log := <-it.logs:
  6434  		it.Event = new(BridgeTokensTokenLocked)
  6435  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6436  			it.fail = err
  6437  			return false
  6438  		}
  6439  		it.Event.Raw = log
  6440  		return true
  6441  
  6442  	case err := <-it.sub.Err():
  6443  		it.done = true
  6444  		it.fail = err
  6445  		return it.Next()
  6446  	}
  6447  }
  6448  
  6449  // Error returns any retrieval or parsing error occurred during filtering.
  6450  func (it *BridgeTokensTokenLockedIterator) Error() error {
  6451  	return it.fail
  6452  }
  6453  
  6454  // Close terminates the iteration process, releasing any pending underlying
  6455  // resources.
  6456  func (it *BridgeTokensTokenLockedIterator) Close() error {
  6457  	it.sub.Unsubscribe()
  6458  	return nil
  6459  }
  6460  
  6461  // BridgeTokensTokenLocked represents a TokenLocked event raised by the BridgeTokens contract.
  6462  type BridgeTokensTokenLocked struct {
  6463  	Token common.Address
  6464  	Raw   types.Log // Blockchain specific contextual infos
  6465  }
  6466  
  6467  // FilterTokenLocked is a free log retrieval operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
  6468  //
  6469  // Solidity: event TokenLocked(address indexed token)
  6470  func (_BridgeTokens *BridgeTokensFilterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenLockedIterator, error) {
  6471  
  6472  	var tokenRule []interface{}
  6473  	for _, tokenItem := range token {
  6474  		tokenRule = append(tokenRule, tokenItem)
  6475  	}
  6476  
  6477  	logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenLocked", tokenRule)
  6478  	if err != nil {
  6479  		return nil, err
  6480  	}
  6481  	return &BridgeTokensTokenLockedIterator{contract: _BridgeTokens.contract, event: "TokenLocked", logs: logs, sub: sub}, nil
  6482  }
  6483  
  6484  // WatchTokenLocked is a free log subscription operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
  6485  //
  6486  // Solidity: event TokenLocked(address indexed token)
  6487  func (_BridgeTokens *BridgeTokensFilterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenLocked, token []common.Address) (event.Subscription, error) {
  6488  
  6489  	var tokenRule []interface{}
  6490  	for _, tokenItem := range token {
  6491  		tokenRule = append(tokenRule, tokenItem)
  6492  	}
  6493  
  6494  	logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenLocked", tokenRule)
  6495  	if err != nil {
  6496  		return nil, err
  6497  	}
  6498  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6499  		defer sub.Unsubscribe()
  6500  		for {
  6501  			select {
  6502  			case log := <-logs:
  6503  				// New log arrived, parse the event and forward to the user
  6504  				event := new(BridgeTokensTokenLocked)
  6505  				if err := _BridgeTokens.contract.UnpackLog(event, "TokenLocked", log); err != nil {
  6506  					return err
  6507  				}
  6508  				event.Raw = log
  6509  
  6510  				select {
  6511  				case sink <- event:
  6512  				case err := <-sub.Err():
  6513  					return err
  6514  				case <-quit:
  6515  					return nil
  6516  				}
  6517  			case err := <-sub.Err():
  6518  				return err
  6519  			case <-quit:
  6520  				return nil
  6521  			}
  6522  		}
  6523  	}), nil
  6524  }
  6525  
  6526  // ParseTokenLocked is a log parse operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
  6527  //
  6528  // Solidity: event TokenLocked(address indexed token)
  6529  func (_BridgeTokens *BridgeTokensFilterer) ParseTokenLocked(log types.Log) (*BridgeTokensTokenLocked, error) {
  6530  	event := new(BridgeTokensTokenLocked)
  6531  	if err := _BridgeTokens.contract.UnpackLog(event, "TokenLocked", log); err != nil {
  6532  		return nil, err
  6533  	}
  6534  	return event, nil
  6535  }
  6536  
  6537  // BridgeTokensTokenRegisteredIterator is returned from FilterTokenRegistered and is used to iterate over the raw logs and unpacked data for TokenRegistered events raised by the BridgeTokens contract.
  6538  type BridgeTokensTokenRegisteredIterator struct {
  6539  	Event *BridgeTokensTokenRegistered // Event containing the contract specifics and raw log
  6540  
  6541  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6542  	event    string              // Event name to use for unpacking event data
  6543  
  6544  	logs chan types.Log      // Log channel receiving the found contract events
  6545  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6546  	done bool                // Whether the subscription completed delivering logs
  6547  	fail error               // Occurred error to stop iteration
  6548  }
  6549  
  6550  // Next advances the iterator to the subsequent event, returning whether there
  6551  // are any more events found. In case of a retrieval or parsing error, false is
  6552  // returned and Error() can be queried for the exact failure.
  6553  func (it *BridgeTokensTokenRegisteredIterator) Next() bool {
  6554  	// If the iterator failed, stop iterating
  6555  	if it.fail != nil {
  6556  		return false
  6557  	}
  6558  	// If the iterator completed, deliver directly whatever's available
  6559  	if it.done {
  6560  		select {
  6561  		case log := <-it.logs:
  6562  			it.Event = new(BridgeTokensTokenRegistered)
  6563  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6564  				it.fail = err
  6565  				return false
  6566  			}
  6567  			it.Event.Raw = log
  6568  			return true
  6569  
  6570  		default:
  6571  			return false
  6572  		}
  6573  	}
  6574  	// Iterator still in progress, wait for either a data or an error event
  6575  	select {
  6576  	case log := <-it.logs:
  6577  		it.Event = new(BridgeTokensTokenRegistered)
  6578  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6579  			it.fail = err
  6580  			return false
  6581  		}
  6582  		it.Event.Raw = log
  6583  		return true
  6584  
  6585  	case err := <-it.sub.Err():
  6586  		it.done = true
  6587  		it.fail = err
  6588  		return it.Next()
  6589  	}
  6590  }
  6591  
  6592  // Error returns any retrieval or parsing error occurred during filtering.
  6593  func (it *BridgeTokensTokenRegisteredIterator) Error() error {
  6594  	return it.fail
  6595  }
  6596  
  6597  // Close terminates the iteration process, releasing any pending underlying
  6598  // resources.
  6599  func (it *BridgeTokensTokenRegisteredIterator) Close() error {
  6600  	it.sub.Unsubscribe()
  6601  	return nil
  6602  }
  6603  
  6604  // BridgeTokensTokenRegistered represents a TokenRegistered event raised by the BridgeTokens contract.
  6605  type BridgeTokensTokenRegistered struct {
  6606  	Token common.Address
  6607  	Raw   types.Log // Blockchain specific contextual infos
  6608  }
  6609  
  6610  // FilterTokenRegistered is a free log retrieval operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
  6611  //
  6612  // Solidity: event TokenRegistered(address indexed token)
  6613  func (_BridgeTokens *BridgeTokensFilterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenRegisteredIterator, error) {
  6614  
  6615  	var tokenRule []interface{}
  6616  	for _, tokenItem := range token {
  6617  		tokenRule = append(tokenRule, tokenItem)
  6618  	}
  6619  
  6620  	logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenRegistered", tokenRule)
  6621  	if err != nil {
  6622  		return nil, err
  6623  	}
  6624  	return &BridgeTokensTokenRegisteredIterator{contract: _BridgeTokens.contract, event: "TokenRegistered", logs: logs, sub: sub}, nil
  6625  }
  6626  
  6627  // WatchTokenRegistered is a free log subscription operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
  6628  //
  6629  // Solidity: event TokenRegistered(address indexed token)
  6630  func (_BridgeTokens *BridgeTokensFilterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenRegistered, token []common.Address) (event.Subscription, error) {
  6631  
  6632  	var tokenRule []interface{}
  6633  	for _, tokenItem := range token {
  6634  		tokenRule = append(tokenRule, tokenItem)
  6635  	}
  6636  
  6637  	logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenRegistered", tokenRule)
  6638  	if err != nil {
  6639  		return nil, err
  6640  	}
  6641  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6642  		defer sub.Unsubscribe()
  6643  		for {
  6644  			select {
  6645  			case log := <-logs:
  6646  				// New log arrived, parse the event and forward to the user
  6647  				event := new(BridgeTokensTokenRegistered)
  6648  				if err := _BridgeTokens.contract.UnpackLog(event, "TokenRegistered", log); err != nil {
  6649  					return err
  6650  				}
  6651  				event.Raw = log
  6652  
  6653  				select {
  6654  				case sink <- event:
  6655  				case err := <-sub.Err():
  6656  					return err
  6657  				case <-quit:
  6658  					return nil
  6659  				}
  6660  			case err := <-sub.Err():
  6661  				return err
  6662  			case <-quit:
  6663  				return nil
  6664  			}
  6665  		}
  6666  	}), nil
  6667  }
  6668  
  6669  // ParseTokenRegistered is a log parse operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
  6670  //
  6671  // Solidity: event TokenRegistered(address indexed token)
  6672  func (_BridgeTokens *BridgeTokensFilterer) ParseTokenRegistered(log types.Log) (*BridgeTokensTokenRegistered, error) {
  6673  	event := new(BridgeTokensTokenRegistered)
  6674  	if err := _BridgeTokens.contract.UnpackLog(event, "TokenRegistered", log); err != nil {
  6675  		return nil, err
  6676  	}
  6677  	return event, nil
  6678  }
  6679  
  6680  // BridgeTokensTokenUnlockedIterator is returned from FilterTokenUnlocked and is used to iterate over the raw logs and unpacked data for TokenUnlocked events raised by the BridgeTokens contract.
  6681  type BridgeTokensTokenUnlockedIterator struct {
  6682  	Event *BridgeTokensTokenUnlocked // Event containing the contract specifics and raw log
  6683  
  6684  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6685  	event    string              // Event name to use for unpacking event data
  6686  
  6687  	logs chan types.Log      // Log channel receiving the found contract events
  6688  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6689  	done bool                // Whether the subscription completed delivering logs
  6690  	fail error               // Occurred error to stop iteration
  6691  }
  6692  
  6693  // Next advances the iterator to the subsequent event, returning whether there
  6694  // are any more events found. In case of a retrieval or parsing error, false is
  6695  // returned and Error() can be queried for the exact failure.
  6696  func (it *BridgeTokensTokenUnlockedIterator) Next() bool {
  6697  	// If the iterator failed, stop iterating
  6698  	if it.fail != nil {
  6699  		return false
  6700  	}
  6701  	// If the iterator completed, deliver directly whatever's available
  6702  	if it.done {
  6703  		select {
  6704  		case log := <-it.logs:
  6705  			it.Event = new(BridgeTokensTokenUnlocked)
  6706  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6707  				it.fail = err
  6708  				return false
  6709  			}
  6710  			it.Event.Raw = log
  6711  			return true
  6712  
  6713  		default:
  6714  			return false
  6715  		}
  6716  	}
  6717  	// Iterator still in progress, wait for either a data or an error event
  6718  	select {
  6719  	case log := <-it.logs:
  6720  		it.Event = new(BridgeTokensTokenUnlocked)
  6721  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6722  			it.fail = err
  6723  			return false
  6724  		}
  6725  		it.Event.Raw = log
  6726  		return true
  6727  
  6728  	case err := <-it.sub.Err():
  6729  		it.done = true
  6730  		it.fail = err
  6731  		return it.Next()
  6732  	}
  6733  }
  6734  
  6735  // Error returns any retrieval or parsing error occurred during filtering.
  6736  func (it *BridgeTokensTokenUnlockedIterator) Error() error {
  6737  	return it.fail
  6738  }
  6739  
  6740  // Close terminates the iteration process, releasing any pending underlying
  6741  // resources.
  6742  func (it *BridgeTokensTokenUnlockedIterator) Close() error {
  6743  	it.sub.Unsubscribe()
  6744  	return nil
  6745  }
  6746  
  6747  // BridgeTokensTokenUnlocked represents a TokenUnlocked event raised by the BridgeTokens contract.
  6748  type BridgeTokensTokenUnlocked struct {
  6749  	Token common.Address
  6750  	Raw   types.Log // Blockchain specific contextual infos
  6751  }
  6752  
  6753  // FilterTokenUnlocked is a free log retrieval operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
  6754  //
  6755  // Solidity: event TokenUnlocked(address indexed token)
  6756  func (_BridgeTokens *BridgeTokensFilterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenUnlockedIterator, error) {
  6757  
  6758  	var tokenRule []interface{}
  6759  	for _, tokenItem := range token {
  6760  		tokenRule = append(tokenRule, tokenItem)
  6761  	}
  6762  
  6763  	logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenUnlocked", tokenRule)
  6764  	if err != nil {
  6765  		return nil, err
  6766  	}
  6767  	return &BridgeTokensTokenUnlockedIterator{contract: _BridgeTokens.contract, event: "TokenUnlocked", logs: logs, sub: sub}, nil
  6768  }
  6769  
  6770  // WatchTokenUnlocked is a free log subscription operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
  6771  //
  6772  // Solidity: event TokenUnlocked(address indexed token)
  6773  func (_BridgeTokens *BridgeTokensFilterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenUnlocked, token []common.Address) (event.Subscription, error) {
  6774  
  6775  	var tokenRule []interface{}
  6776  	for _, tokenItem := range token {
  6777  		tokenRule = append(tokenRule, tokenItem)
  6778  	}
  6779  
  6780  	logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenUnlocked", tokenRule)
  6781  	if err != nil {
  6782  		return nil, err
  6783  	}
  6784  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6785  		defer sub.Unsubscribe()
  6786  		for {
  6787  			select {
  6788  			case log := <-logs:
  6789  				// New log arrived, parse the event and forward to the user
  6790  				event := new(BridgeTokensTokenUnlocked)
  6791  				if err := _BridgeTokens.contract.UnpackLog(event, "TokenUnlocked", log); err != nil {
  6792  					return err
  6793  				}
  6794  				event.Raw = log
  6795  
  6796  				select {
  6797  				case sink <- event:
  6798  				case err := <-sub.Err():
  6799  					return err
  6800  				case <-quit:
  6801  					return nil
  6802  				}
  6803  			case err := <-sub.Err():
  6804  				return err
  6805  			case <-quit:
  6806  				return nil
  6807  			}
  6808  		}
  6809  	}), nil
  6810  }
  6811  
  6812  // ParseTokenUnlocked is a log parse operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
  6813  //
  6814  // Solidity: event TokenUnlocked(address indexed token)
  6815  func (_BridgeTokens *BridgeTokensFilterer) ParseTokenUnlocked(log types.Log) (*BridgeTokensTokenUnlocked, error) {
  6816  	event := new(BridgeTokensTokenUnlocked)
  6817  	if err := _BridgeTokens.contract.UnpackLog(event, "TokenUnlocked", log); err != nil {
  6818  		return nil, err
  6819  	}
  6820  	return event, nil
  6821  }
  6822  
  6823  // BridgeTransferABI is the input ABI used to generate the binding from.
  6824  const BridgeTransferABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"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\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_modeMintBurn\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"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\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]"
  6825  
  6826  // BridgeTransferBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  6827  const BridgeTransferBinRuntime = ``
  6828  
  6829  // BridgeTransferFuncSigs maps the 4-byte function signature to its string representation.
  6830  var BridgeTransferFuncSigs = map[string]string{
  6831  	"3a3099d1": "MAX_OPERATOR()",
  6832  	"9832c1d7": "closedValueTransferVotes(uint64)",
  6833  	"ac6fff0b": "configurationNonce()",
  6834  	"d8cf98ca": "deregisterOperator(address)",
  6835  	"488af871": "feeOfERC20(address)",
  6836  	"c263b5d6": "feeOfKLAY()",
  6837  	"b3f00674": "feeReceiver()",
  6838  	"b2c01030": "getOperatorList()",
  6839  	"13a6738a": "handleNoncesToBlockNums(uint64)",
  6840  	"8a75eee2": "handledRequestTx(bytes32)",
  6841  	"8f32d59b": "isOwner()",
  6842  	"2014e5d1": "isRunning()",
  6843  	"4b40b826": "lowerHandleNonce()",
  6844  	"6e176ec2": "modeMintBurn()",
  6845  	"cb38f407": "operatorList(uint256)",
  6846  	"5526f76b": "operatorThresholds(uint8)",
  6847  	"13e7c9d8": "operators(address)",
  6848  	"8da5cb5b": "owner()",
  6849  	"989ba0d3": "recoveryBlockNumber()",
  6850  	"3682a450": "registerOperator(address)",
  6851  	"715018a6": "renounceOwnership()",
  6852  	"7c1a0302": "requestNonce()",
  6853  	"efdcd974": "setFeeReceiver(address)",
  6854  	"ee2aec65": "setOperatorThreshold(uint8,uint8)",
  6855  	"c877cf37": "start(bool)",
  6856  	"f2fde38b": "transferOwnership(address)",
  6857  	"54edad72": "upperHandleNonce()",
  6858  }
  6859  
  6860  // BridgeTransfer is an auto generated Go binding around a Klaytn contract.
  6861  type BridgeTransfer struct {
  6862  	BridgeTransferCaller     // Read-only binding to the contract
  6863  	BridgeTransferTransactor // Write-only binding to the contract
  6864  	BridgeTransferFilterer   // Log filterer for contract events
  6865  }
  6866  
  6867  // BridgeTransferCaller is an auto generated read-only Go binding around a Klaytn contract.
  6868  type BridgeTransferCaller struct {
  6869  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6870  }
  6871  
  6872  // BridgeTransferTransactor is an auto generated write-only Go binding around a Klaytn contract.
  6873  type BridgeTransferTransactor struct {
  6874  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6875  }
  6876  
  6877  // BridgeTransferFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  6878  type BridgeTransferFilterer struct {
  6879  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6880  }
  6881  
  6882  // BridgeTransferSession is an auto generated Go binding around a Klaytn contract,
  6883  // with pre-set call and transact options.
  6884  type BridgeTransferSession struct {
  6885  	Contract     *BridgeTransfer   // Generic contract binding to set the session for
  6886  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  6887  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  6888  }
  6889  
  6890  // BridgeTransferCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  6891  // with pre-set call options.
  6892  type BridgeTransferCallerSession struct {
  6893  	Contract *BridgeTransferCaller // Generic contract caller binding to set the session for
  6894  	CallOpts bind.CallOpts         // Call options to use throughout this session
  6895  }
  6896  
  6897  // BridgeTransferTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  6898  // with pre-set transact options.
  6899  type BridgeTransferTransactorSession struct {
  6900  	Contract     *BridgeTransferTransactor // Generic contract transactor binding to set the session for
  6901  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
  6902  }
  6903  
  6904  // BridgeTransferRaw is an auto generated low-level Go binding around a Klaytn contract.
  6905  type BridgeTransferRaw struct {
  6906  	Contract *BridgeTransfer // Generic contract binding to access the raw methods on
  6907  }
  6908  
  6909  // BridgeTransferCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  6910  type BridgeTransferCallerRaw struct {
  6911  	Contract *BridgeTransferCaller // Generic read-only contract binding to access the raw methods on
  6912  }
  6913  
  6914  // BridgeTransferTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  6915  type BridgeTransferTransactorRaw struct {
  6916  	Contract *BridgeTransferTransactor // Generic write-only contract binding to access the raw methods on
  6917  }
  6918  
  6919  // NewBridgeTransfer creates a new instance of BridgeTransfer, bound to a specific deployed contract.
  6920  func NewBridgeTransfer(address common.Address, backend bind.ContractBackend) (*BridgeTransfer, error) {
  6921  	contract, err := bindBridgeTransfer(address, backend, backend, backend)
  6922  	if err != nil {
  6923  		return nil, err
  6924  	}
  6925  	return &BridgeTransfer{BridgeTransferCaller: BridgeTransferCaller{contract: contract}, BridgeTransferTransactor: BridgeTransferTransactor{contract: contract}, BridgeTransferFilterer: BridgeTransferFilterer{contract: contract}}, nil
  6926  }
  6927  
  6928  // NewBridgeTransferCaller creates a new read-only instance of BridgeTransfer, bound to a specific deployed contract.
  6929  func NewBridgeTransferCaller(address common.Address, caller bind.ContractCaller) (*BridgeTransferCaller, error) {
  6930  	contract, err := bindBridgeTransfer(address, caller, nil, nil)
  6931  	if err != nil {
  6932  		return nil, err
  6933  	}
  6934  	return &BridgeTransferCaller{contract: contract}, nil
  6935  }
  6936  
  6937  // NewBridgeTransferTransactor creates a new write-only instance of BridgeTransfer, bound to a specific deployed contract.
  6938  func NewBridgeTransferTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransferTransactor, error) {
  6939  	contract, err := bindBridgeTransfer(address, nil, transactor, nil)
  6940  	if err != nil {
  6941  		return nil, err
  6942  	}
  6943  	return &BridgeTransferTransactor{contract: contract}, nil
  6944  }
  6945  
  6946  // NewBridgeTransferFilterer creates a new log filterer instance of BridgeTransfer, bound to a specific deployed contract.
  6947  func NewBridgeTransferFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTransferFilterer, error) {
  6948  	contract, err := bindBridgeTransfer(address, nil, nil, filterer)
  6949  	if err != nil {
  6950  		return nil, err
  6951  	}
  6952  	return &BridgeTransferFilterer{contract: contract}, nil
  6953  }
  6954  
  6955  // bindBridgeTransfer binds a generic wrapper to an already deployed contract.
  6956  func bindBridgeTransfer(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6957  	parsed, err := abi.JSON(strings.NewReader(BridgeTransferABI))
  6958  	if err != nil {
  6959  		return nil, err
  6960  	}
  6961  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  6962  }
  6963  
  6964  // Call invokes the (constant) contract method with params as input values and
  6965  // sets the output to result. The result type might be a single field for simple
  6966  // returns, a slice of interfaces for anonymous returns and a struct for named
  6967  // returns.
  6968  func (_BridgeTransfer *BridgeTransferRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6969  	return _BridgeTransfer.Contract.BridgeTransferCaller.contract.Call(opts, result, method, params...)
  6970  }
  6971  
  6972  // Transfer initiates a plain transaction to move funds to the contract, calling
  6973  // its default method if one is available.
  6974  func (_BridgeTransfer *BridgeTransferRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6975  	return _BridgeTransfer.Contract.BridgeTransferTransactor.contract.Transfer(opts)
  6976  }
  6977  
  6978  // Transact invokes the (paid) contract method with params as input values.
  6979  func (_BridgeTransfer *BridgeTransferRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6980  	return _BridgeTransfer.Contract.BridgeTransferTransactor.contract.Transact(opts, method, params...)
  6981  }
  6982  
  6983  // Call invokes the (constant) contract method with params as input values and
  6984  // sets the output to result. The result type might be a single field for simple
  6985  // returns, a slice of interfaces for anonymous returns and a struct for named
  6986  // returns.
  6987  func (_BridgeTransfer *BridgeTransferCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6988  	return _BridgeTransfer.Contract.contract.Call(opts, result, method, params...)
  6989  }
  6990  
  6991  // Transfer initiates a plain transaction to move funds to the contract, calling
  6992  // its default method if one is available.
  6993  func (_BridgeTransfer *BridgeTransferTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6994  	return _BridgeTransfer.Contract.contract.Transfer(opts)
  6995  }
  6996  
  6997  // Transact invokes the (paid) contract method with params as input values.
  6998  func (_BridgeTransfer *BridgeTransferTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6999  	return _BridgeTransfer.Contract.contract.Transact(opts, method, params...)
  7000  }
  7001  
  7002  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
  7003  //
  7004  // Solidity: function MAX_OPERATOR() view returns(uint64)
  7005  func (_BridgeTransfer *BridgeTransferCaller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) {
  7006  	var (
  7007  		ret0 = new(uint64)
  7008  	)
  7009  	out := ret0
  7010  	err := _BridgeTransfer.contract.Call(opts, out, "MAX_OPERATOR")
  7011  	return *ret0, err
  7012  }
  7013  
  7014  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
  7015  //
  7016  // Solidity: function MAX_OPERATOR() view returns(uint64)
  7017  func (_BridgeTransfer *BridgeTransferSession) MAXOPERATOR() (uint64, error) {
  7018  	return _BridgeTransfer.Contract.MAXOPERATOR(&_BridgeTransfer.CallOpts)
  7019  }
  7020  
  7021  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
  7022  //
  7023  // Solidity: function MAX_OPERATOR() view returns(uint64)
  7024  func (_BridgeTransfer *BridgeTransferCallerSession) MAXOPERATOR() (uint64, error) {
  7025  	return _BridgeTransfer.Contract.MAXOPERATOR(&_BridgeTransfer.CallOpts)
  7026  }
  7027  
  7028  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
  7029  //
  7030  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
  7031  func (_BridgeTransfer *BridgeTransferCaller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) {
  7032  	var (
  7033  		ret0 = new(bool)
  7034  	)
  7035  	out := ret0
  7036  	err := _BridgeTransfer.contract.Call(opts, out, "closedValueTransferVotes", arg0)
  7037  	return *ret0, err
  7038  }
  7039  
  7040  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
  7041  //
  7042  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
  7043  func (_BridgeTransfer *BridgeTransferSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) {
  7044  	return _BridgeTransfer.Contract.ClosedValueTransferVotes(&_BridgeTransfer.CallOpts, arg0)
  7045  }
  7046  
  7047  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
  7048  //
  7049  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
  7050  func (_BridgeTransfer *BridgeTransferCallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) {
  7051  	return _BridgeTransfer.Contract.ClosedValueTransferVotes(&_BridgeTransfer.CallOpts, arg0)
  7052  }
  7053  
  7054  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
  7055  //
  7056  // Solidity: function configurationNonce() view returns(uint64)
  7057  func (_BridgeTransfer *BridgeTransferCaller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) {
  7058  	var (
  7059  		ret0 = new(uint64)
  7060  	)
  7061  	out := ret0
  7062  	err := _BridgeTransfer.contract.Call(opts, out, "configurationNonce")
  7063  	return *ret0, err
  7064  }
  7065  
  7066  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
  7067  //
  7068  // Solidity: function configurationNonce() view returns(uint64)
  7069  func (_BridgeTransfer *BridgeTransferSession) ConfigurationNonce() (uint64, error) {
  7070  	return _BridgeTransfer.Contract.ConfigurationNonce(&_BridgeTransfer.CallOpts)
  7071  }
  7072  
  7073  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
  7074  //
  7075  // Solidity: function configurationNonce() view returns(uint64)
  7076  func (_BridgeTransfer *BridgeTransferCallerSession) ConfigurationNonce() (uint64, error) {
  7077  	return _BridgeTransfer.Contract.ConfigurationNonce(&_BridgeTransfer.CallOpts)
  7078  }
  7079  
  7080  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
  7081  //
  7082  // Solidity: function feeOfERC20(address ) view returns(uint256)
  7083  func (_BridgeTransfer *BridgeTransferCaller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
  7084  	var (
  7085  		ret0 = new(*big.Int)
  7086  	)
  7087  	out := ret0
  7088  	err := _BridgeTransfer.contract.Call(opts, out, "feeOfERC20", arg0)
  7089  	return *ret0, err
  7090  }
  7091  
  7092  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
  7093  //
  7094  // Solidity: function feeOfERC20(address ) view returns(uint256)
  7095  func (_BridgeTransfer *BridgeTransferSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) {
  7096  	return _BridgeTransfer.Contract.FeeOfERC20(&_BridgeTransfer.CallOpts, arg0)
  7097  }
  7098  
  7099  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
  7100  //
  7101  // Solidity: function feeOfERC20(address ) view returns(uint256)
  7102  func (_BridgeTransfer *BridgeTransferCallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) {
  7103  	return _BridgeTransfer.Contract.FeeOfERC20(&_BridgeTransfer.CallOpts, arg0)
  7104  }
  7105  
  7106  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
  7107  //
  7108  // Solidity: function feeOfKLAY() view returns(uint256)
  7109  func (_BridgeTransfer *BridgeTransferCaller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) {
  7110  	var (
  7111  		ret0 = new(*big.Int)
  7112  	)
  7113  	out := ret0
  7114  	err := _BridgeTransfer.contract.Call(opts, out, "feeOfKLAY")
  7115  	return *ret0, err
  7116  }
  7117  
  7118  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
  7119  //
  7120  // Solidity: function feeOfKLAY() view returns(uint256)
  7121  func (_BridgeTransfer *BridgeTransferSession) FeeOfKLAY() (*big.Int, error) {
  7122  	return _BridgeTransfer.Contract.FeeOfKLAY(&_BridgeTransfer.CallOpts)
  7123  }
  7124  
  7125  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
  7126  //
  7127  // Solidity: function feeOfKLAY() view returns(uint256)
  7128  func (_BridgeTransfer *BridgeTransferCallerSession) FeeOfKLAY() (*big.Int, error) {
  7129  	return _BridgeTransfer.Contract.FeeOfKLAY(&_BridgeTransfer.CallOpts)
  7130  }
  7131  
  7132  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
  7133  //
  7134  // Solidity: function feeReceiver() view returns(address)
  7135  func (_BridgeTransfer *BridgeTransferCaller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) {
  7136  	var (
  7137  		ret0 = new(common.Address)
  7138  	)
  7139  	out := ret0
  7140  	err := _BridgeTransfer.contract.Call(opts, out, "feeReceiver")
  7141  	return *ret0, err
  7142  }
  7143  
  7144  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
  7145  //
  7146  // Solidity: function feeReceiver() view returns(address)
  7147  func (_BridgeTransfer *BridgeTransferSession) FeeReceiver() (common.Address, error) {
  7148  	return _BridgeTransfer.Contract.FeeReceiver(&_BridgeTransfer.CallOpts)
  7149  }
  7150  
  7151  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
  7152  //
  7153  // Solidity: function feeReceiver() view returns(address)
  7154  func (_BridgeTransfer *BridgeTransferCallerSession) FeeReceiver() (common.Address, error) {
  7155  	return _BridgeTransfer.Contract.FeeReceiver(&_BridgeTransfer.CallOpts)
  7156  }
  7157  
  7158  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
  7159  //
  7160  // Solidity: function getOperatorList() view returns(address[])
  7161  func (_BridgeTransfer *BridgeTransferCaller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) {
  7162  	var (
  7163  		ret0 = new([]common.Address)
  7164  	)
  7165  	out := ret0
  7166  	err := _BridgeTransfer.contract.Call(opts, out, "getOperatorList")
  7167  	return *ret0, err
  7168  }
  7169  
  7170  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
  7171  //
  7172  // Solidity: function getOperatorList() view returns(address[])
  7173  func (_BridgeTransfer *BridgeTransferSession) GetOperatorList() ([]common.Address, error) {
  7174  	return _BridgeTransfer.Contract.GetOperatorList(&_BridgeTransfer.CallOpts)
  7175  }
  7176  
  7177  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
  7178  //
  7179  // Solidity: function getOperatorList() view returns(address[])
  7180  func (_BridgeTransfer *BridgeTransferCallerSession) GetOperatorList() ([]common.Address, error) {
  7181  	return _BridgeTransfer.Contract.GetOperatorList(&_BridgeTransfer.CallOpts)
  7182  }
  7183  
  7184  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
  7185  //
  7186  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
  7187  func (_BridgeTransfer *BridgeTransferCaller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) {
  7188  	var (
  7189  		ret0 = new(uint64)
  7190  	)
  7191  	out := ret0
  7192  	err := _BridgeTransfer.contract.Call(opts, out, "handleNoncesToBlockNums", arg0)
  7193  	return *ret0, err
  7194  }
  7195  
  7196  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
  7197  //
  7198  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
  7199  func (_BridgeTransfer *BridgeTransferSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) {
  7200  	return _BridgeTransfer.Contract.HandleNoncesToBlockNums(&_BridgeTransfer.CallOpts, arg0)
  7201  }
  7202  
  7203  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
  7204  //
  7205  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
  7206  func (_BridgeTransfer *BridgeTransferCallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) {
  7207  	return _BridgeTransfer.Contract.HandleNoncesToBlockNums(&_BridgeTransfer.CallOpts, arg0)
  7208  }
  7209  
  7210  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
  7211  //
  7212  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
  7213  func (_BridgeTransfer *BridgeTransferCaller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) {
  7214  	var (
  7215  		ret0 = new(bool)
  7216  	)
  7217  	out := ret0
  7218  	err := _BridgeTransfer.contract.Call(opts, out, "handledRequestTx", arg0)
  7219  	return *ret0, err
  7220  }
  7221  
  7222  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
  7223  //
  7224  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
  7225  func (_BridgeTransfer *BridgeTransferSession) HandledRequestTx(arg0 [32]byte) (bool, error) {
  7226  	return _BridgeTransfer.Contract.HandledRequestTx(&_BridgeTransfer.CallOpts, arg0)
  7227  }
  7228  
  7229  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
  7230  //
  7231  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
  7232  func (_BridgeTransfer *BridgeTransferCallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) {
  7233  	return _BridgeTransfer.Contract.HandledRequestTx(&_BridgeTransfer.CallOpts, arg0)
  7234  }
  7235  
  7236  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  7237  //
  7238  // Solidity: function isOwner() view returns(bool)
  7239  func (_BridgeTransfer *BridgeTransferCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
  7240  	var (
  7241  		ret0 = new(bool)
  7242  	)
  7243  	out := ret0
  7244  	err := _BridgeTransfer.contract.Call(opts, out, "isOwner")
  7245  	return *ret0, err
  7246  }
  7247  
  7248  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  7249  //
  7250  // Solidity: function isOwner() view returns(bool)
  7251  func (_BridgeTransfer *BridgeTransferSession) IsOwner() (bool, error) {
  7252  	return _BridgeTransfer.Contract.IsOwner(&_BridgeTransfer.CallOpts)
  7253  }
  7254  
  7255  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  7256  //
  7257  // Solidity: function isOwner() view returns(bool)
  7258  func (_BridgeTransfer *BridgeTransferCallerSession) IsOwner() (bool, error) {
  7259  	return _BridgeTransfer.Contract.IsOwner(&_BridgeTransfer.CallOpts)
  7260  }
  7261  
  7262  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
  7263  //
  7264  // Solidity: function isRunning() view returns(bool)
  7265  func (_BridgeTransfer *BridgeTransferCaller) IsRunning(opts *bind.CallOpts) (bool, error) {
  7266  	var (
  7267  		ret0 = new(bool)
  7268  	)
  7269  	out := ret0
  7270  	err := _BridgeTransfer.contract.Call(opts, out, "isRunning")
  7271  	return *ret0, err
  7272  }
  7273  
  7274  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
  7275  //
  7276  // Solidity: function isRunning() view returns(bool)
  7277  func (_BridgeTransfer *BridgeTransferSession) IsRunning() (bool, error) {
  7278  	return _BridgeTransfer.Contract.IsRunning(&_BridgeTransfer.CallOpts)
  7279  }
  7280  
  7281  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
  7282  //
  7283  // Solidity: function isRunning() view returns(bool)
  7284  func (_BridgeTransfer *BridgeTransferCallerSession) IsRunning() (bool, error) {
  7285  	return _BridgeTransfer.Contract.IsRunning(&_BridgeTransfer.CallOpts)
  7286  }
  7287  
  7288  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
  7289  //
  7290  // Solidity: function lowerHandleNonce() view returns(uint64)
  7291  func (_BridgeTransfer *BridgeTransferCaller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) {
  7292  	var (
  7293  		ret0 = new(uint64)
  7294  	)
  7295  	out := ret0
  7296  	err := _BridgeTransfer.contract.Call(opts, out, "lowerHandleNonce")
  7297  	return *ret0, err
  7298  }
  7299  
  7300  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
  7301  //
  7302  // Solidity: function lowerHandleNonce() view returns(uint64)
  7303  func (_BridgeTransfer *BridgeTransferSession) LowerHandleNonce() (uint64, error) {
  7304  	return _BridgeTransfer.Contract.LowerHandleNonce(&_BridgeTransfer.CallOpts)
  7305  }
  7306  
  7307  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
  7308  //
  7309  // Solidity: function lowerHandleNonce() view returns(uint64)
  7310  func (_BridgeTransfer *BridgeTransferCallerSession) LowerHandleNonce() (uint64, error) {
  7311  	return _BridgeTransfer.Contract.LowerHandleNonce(&_BridgeTransfer.CallOpts)
  7312  }
  7313  
  7314  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
  7315  //
  7316  // Solidity: function modeMintBurn() view returns(bool)
  7317  func (_BridgeTransfer *BridgeTransferCaller) ModeMintBurn(opts *bind.CallOpts) (bool, error) {
  7318  	var (
  7319  		ret0 = new(bool)
  7320  	)
  7321  	out := ret0
  7322  	err := _BridgeTransfer.contract.Call(opts, out, "modeMintBurn")
  7323  	return *ret0, err
  7324  }
  7325  
  7326  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
  7327  //
  7328  // Solidity: function modeMintBurn() view returns(bool)
  7329  func (_BridgeTransfer *BridgeTransferSession) ModeMintBurn() (bool, error) {
  7330  	return _BridgeTransfer.Contract.ModeMintBurn(&_BridgeTransfer.CallOpts)
  7331  }
  7332  
  7333  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
  7334  //
  7335  // Solidity: function modeMintBurn() view returns(bool)
  7336  func (_BridgeTransfer *BridgeTransferCallerSession) ModeMintBurn() (bool, error) {
  7337  	return _BridgeTransfer.Contract.ModeMintBurn(&_BridgeTransfer.CallOpts)
  7338  }
  7339  
  7340  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
  7341  //
  7342  // Solidity: function operatorList(uint256 ) view returns(address)
  7343  func (_BridgeTransfer *BridgeTransferCaller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
  7344  	var (
  7345  		ret0 = new(common.Address)
  7346  	)
  7347  	out := ret0
  7348  	err := _BridgeTransfer.contract.Call(opts, out, "operatorList", arg0)
  7349  	return *ret0, err
  7350  }
  7351  
  7352  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
  7353  //
  7354  // Solidity: function operatorList(uint256 ) view returns(address)
  7355  func (_BridgeTransfer *BridgeTransferSession) OperatorList(arg0 *big.Int) (common.Address, error) {
  7356  	return _BridgeTransfer.Contract.OperatorList(&_BridgeTransfer.CallOpts, arg0)
  7357  }
  7358  
  7359  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
  7360  //
  7361  // Solidity: function operatorList(uint256 ) view returns(address)
  7362  func (_BridgeTransfer *BridgeTransferCallerSession) OperatorList(arg0 *big.Int) (common.Address, error) {
  7363  	return _BridgeTransfer.Contract.OperatorList(&_BridgeTransfer.CallOpts, arg0)
  7364  }
  7365  
  7366  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
  7367  //
  7368  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
  7369  func (_BridgeTransfer *BridgeTransferCaller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) {
  7370  	var (
  7371  		ret0 = new(uint8)
  7372  	)
  7373  	out := ret0
  7374  	err := _BridgeTransfer.contract.Call(opts, out, "operatorThresholds", arg0)
  7375  	return *ret0, err
  7376  }
  7377  
  7378  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
  7379  //
  7380  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
  7381  func (_BridgeTransfer *BridgeTransferSession) OperatorThresholds(arg0 uint8) (uint8, error) {
  7382  	return _BridgeTransfer.Contract.OperatorThresholds(&_BridgeTransfer.CallOpts, arg0)
  7383  }
  7384  
  7385  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
  7386  //
  7387  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
  7388  func (_BridgeTransfer *BridgeTransferCallerSession) OperatorThresholds(arg0 uint8) (uint8, error) {
  7389  	return _BridgeTransfer.Contract.OperatorThresholds(&_BridgeTransfer.CallOpts, arg0)
  7390  }
  7391  
  7392  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
  7393  //
  7394  // Solidity: function operators(address ) view returns(bool)
  7395  func (_BridgeTransfer *BridgeTransferCaller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
  7396  	var (
  7397  		ret0 = new(bool)
  7398  	)
  7399  	out := ret0
  7400  	err := _BridgeTransfer.contract.Call(opts, out, "operators", arg0)
  7401  	return *ret0, err
  7402  }
  7403  
  7404  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
  7405  //
  7406  // Solidity: function operators(address ) view returns(bool)
  7407  func (_BridgeTransfer *BridgeTransferSession) Operators(arg0 common.Address) (bool, error) {
  7408  	return _BridgeTransfer.Contract.Operators(&_BridgeTransfer.CallOpts, arg0)
  7409  }
  7410  
  7411  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
  7412  //
  7413  // Solidity: function operators(address ) view returns(bool)
  7414  func (_BridgeTransfer *BridgeTransferCallerSession) Operators(arg0 common.Address) (bool, error) {
  7415  	return _BridgeTransfer.Contract.Operators(&_BridgeTransfer.CallOpts, arg0)
  7416  }
  7417  
  7418  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  7419  //
  7420  // Solidity: function owner() view returns(address)
  7421  func (_BridgeTransfer *BridgeTransferCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  7422  	var (
  7423  		ret0 = new(common.Address)
  7424  	)
  7425  	out := ret0
  7426  	err := _BridgeTransfer.contract.Call(opts, out, "owner")
  7427  	return *ret0, err
  7428  }
  7429  
  7430  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  7431  //
  7432  // Solidity: function owner() view returns(address)
  7433  func (_BridgeTransfer *BridgeTransferSession) Owner() (common.Address, error) {
  7434  	return _BridgeTransfer.Contract.Owner(&_BridgeTransfer.CallOpts)
  7435  }
  7436  
  7437  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  7438  //
  7439  // Solidity: function owner() view returns(address)
  7440  func (_BridgeTransfer *BridgeTransferCallerSession) Owner() (common.Address, error) {
  7441  	return _BridgeTransfer.Contract.Owner(&_BridgeTransfer.CallOpts)
  7442  }
  7443  
  7444  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
  7445  //
  7446  // Solidity: function recoveryBlockNumber() view returns(uint64)
  7447  func (_BridgeTransfer *BridgeTransferCaller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) {
  7448  	var (
  7449  		ret0 = new(uint64)
  7450  	)
  7451  	out := ret0
  7452  	err := _BridgeTransfer.contract.Call(opts, out, "recoveryBlockNumber")
  7453  	return *ret0, err
  7454  }
  7455  
  7456  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
  7457  //
  7458  // Solidity: function recoveryBlockNumber() view returns(uint64)
  7459  func (_BridgeTransfer *BridgeTransferSession) RecoveryBlockNumber() (uint64, error) {
  7460  	return _BridgeTransfer.Contract.RecoveryBlockNumber(&_BridgeTransfer.CallOpts)
  7461  }
  7462  
  7463  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
  7464  //
  7465  // Solidity: function recoveryBlockNumber() view returns(uint64)
  7466  func (_BridgeTransfer *BridgeTransferCallerSession) RecoveryBlockNumber() (uint64, error) {
  7467  	return _BridgeTransfer.Contract.RecoveryBlockNumber(&_BridgeTransfer.CallOpts)
  7468  }
  7469  
  7470  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
  7471  //
  7472  // Solidity: function requestNonce() view returns(uint64)
  7473  func (_BridgeTransfer *BridgeTransferCaller) RequestNonce(opts *bind.CallOpts) (uint64, error) {
  7474  	var (
  7475  		ret0 = new(uint64)
  7476  	)
  7477  	out := ret0
  7478  	err := _BridgeTransfer.contract.Call(opts, out, "requestNonce")
  7479  	return *ret0, err
  7480  }
  7481  
  7482  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
  7483  //
  7484  // Solidity: function requestNonce() view returns(uint64)
  7485  func (_BridgeTransfer *BridgeTransferSession) RequestNonce() (uint64, error) {
  7486  	return _BridgeTransfer.Contract.RequestNonce(&_BridgeTransfer.CallOpts)
  7487  }
  7488  
  7489  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
  7490  //
  7491  // Solidity: function requestNonce() view returns(uint64)
  7492  func (_BridgeTransfer *BridgeTransferCallerSession) RequestNonce() (uint64, error) {
  7493  	return _BridgeTransfer.Contract.RequestNonce(&_BridgeTransfer.CallOpts)
  7494  }
  7495  
  7496  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
  7497  //
  7498  // Solidity: function upperHandleNonce() view returns(uint64)
  7499  func (_BridgeTransfer *BridgeTransferCaller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) {
  7500  	var (
  7501  		ret0 = new(uint64)
  7502  	)
  7503  	out := ret0
  7504  	err := _BridgeTransfer.contract.Call(opts, out, "upperHandleNonce")
  7505  	return *ret0, err
  7506  }
  7507  
  7508  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
  7509  //
  7510  // Solidity: function upperHandleNonce() view returns(uint64)
  7511  func (_BridgeTransfer *BridgeTransferSession) UpperHandleNonce() (uint64, error) {
  7512  	return _BridgeTransfer.Contract.UpperHandleNonce(&_BridgeTransfer.CallOpts)
  7513  }
  7514  
  7515  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
  7516  //
  7517  // Solidity: function upperHandleNonce() view returns(uint64)
  7518  func (_BridgeTransfer *BridgeTransferCallerSession) UpperHandleNonce() (uint64, error) {
  7519  	return _BridgeTransfer.Contract.UpperHandleNonce(&_BridgeTransfer.CallOpts)
  7520  }
  7521  
  7522  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  7523  //
  7524  // Solidity: function deregisterOperator(address _operator) returns()
  7525  func (_BridgeTransfer *BridgeTransferTransactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
  7526  	return _BridgeTransfer.contract.Transact(opts, "deregisterOperator", _operator)
  7527  }
  7528  
  7529  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  7530  //
  7531  // Solidity: function deregisterOperator(address _operator) returns()
  7532  func (_BridgeTransfer *BridgeTransferSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) {
  7533  	return _BridgeTransfer.Contract.DeregisterOperator(&_BridgeTransfer.TransactOpts, _operator)
  7534  }
  7535  
  7536  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  7537  //
  7538  // Solidity: function deregisterOperator(address _operator) returns()
  7539  func (_BridgeTransfer *BridgeTransferTransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) {
  7540  	return _BridgeTransfer.Contract.DeregisterOperator(&_BridgeTransfer.TransactOpts, _operator)
  7541  }
  7542  
  7543  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  7544  //
  7545  // Solidity: function registerOperator(address _operator) returns()
  7546  func (_BridgeTransfer *BridgeTransferTransactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
  7547  	return _BridgeTransfer.contract.Transact(opts, "registerOperator", _operator)
  7548  }
  7549  
  7550  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  7551  //
  7552  // Solidity: function registerOperator(address _operator) returns()
  7553  func (_BridgeTransfer *BridgeTransferSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) {
  7554  	return _BridgeTransfer.Contract.RegisterOperator(&_BridgeTransfer.TransactOpts, _operator)
  7555  }
  7556  
  7557  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  7558  //
  7559  // Solidity: function registerOperator(address _operator) returns()
  7560  func (_BridgeTransfer *BridgeTransferTransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) {
  7561  	return _BridgeTransfer.Contract.RegisterOperator(&_BridgeTransfer.TransactOpts, _operator)
  7562  }
  7563  
  7564  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  7565  //
  7566  // Solidity: function renounceOwnership() returns()
  7567  func (_BridgeTransfer *BridgeTransferTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  7568  	return _BridgeTransfer.contract.Transact(opts, "renounceOwnership")
  7569  }
  7570  
  7571  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  7572  //
  7573  // Solidity: function renounceOwnership() returns()
  7574  func (_BridgeTransfer *BridgeTransferSession) RenounceOwnership() (*types.Transaction, error) {
  7575  	return _BridgeTransfer.Contract.RenounceOwnership(&_BridgeTransfer.TransactOpts)
  7576  }
  7577  
  7578  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  7579  //
  7580  // Solidity: function renounceOwnership() returns()
  7581  func (_BridgeTransfer *BridgeTransferTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  7582  	return _BridgeTransfer.Contract.RenounceOwnership(&_BridgeTransfer.TransactOpts)
  7583  }
  7584  
  7585  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
  7586  //
  7587  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
  7588  func (_BridgeTransfer *BridgeTransferTransactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) {
  7589  	return _BridgeTransfer.contract.Transact(opts, "setFeeReceiver", _feeReceiver)
  7590  }
  7591  
  7592  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
  7593  //
  7594  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
  7595  func (_BridgeTransfer *BridgeTransferSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) {
  7596  	return _BridgeTransfer.Contract.SetFeeReceiver(&_BridgeTransfer.TransactOpts, _feeReceiver)
  7597  }
  7598  
  7599  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
  7600  //
  7601  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
  7602  func (_BridgeTransfer *BridgeTransferTransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) {
  7603  	return _BridgeTransfer.Contract.SetFeeReceiver(&_BridgeTransfer.TransactOpts, _feeReceiver)
  7604  }
  7605  
  7606  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  7607  //
  7608  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  7609  func (_BridgeTransfer *BridgeTransferTransactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) {
  7610  	return _BridgeTransfer.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold)
  7611  }
  7612  
  7613  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  7614  //
  7615  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  7616  func (_BridgeTransfer *BridgeTransferSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) {
  7617  	return _BridgeTransfer.Contract.SetOperatorThreshold(&_BridgeTransfer.TransactOpts, _voteType, _threshold)
  7618  }
  7619  
  7620  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  7621  //
  7622  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  7623  func (_BridgeTransfer *BridgeTransferTransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) {
  7624  	return _BridgeTransfer.Contract.SetOperatorThreshold(&_BridgeTransfer.TransactOpts, _voteType, _threshold)
  7625  }
  7626  
  7627  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
  7628  //
  7629  // Solidity: function start(bool _status) returns()
  7630  func (_BridgeTransfer *BridgeTransferTransactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) {
  7631  	return _BridgeTransfer.contract.Transact(opts, "start", _status)
  7632  }
  7633  
  7634  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
  7635  //
  7636  // Solidity: function start(bool _status) returns()
  7637  func (_BridgeTransfer *BridgeTransferSession) Start(_status bool) (*types.Transaction, error) {
  7638  	return _BridgeTransfer.Contract.Start(&_BridgeTransfer.TransactOpts, _status)
  7639  }
  7640  
  7641  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
  7642  //
  7643  // Solidity: function start(bool _status) returns()
  7644  func (_BridgeTransfer *BridgeTransferTransactorSession) Start(_status bool) (*types.Transaction, error) {
  7645  	return _BridgeTransfer.Contract.Start(&_BridgeTransfer.TransactOpts, _status)
  7646  }
  7647  
  7648  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  7649  //
  7650  // Solidity: function transferOwnership(address newOwner) returns()
  7651  func (_BridgeTransfer *BridgeTransferTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  7652  	return _BridgeTransfer.contract.Transact(opts, "transferOwnership", newOwner)
  7653  }
  7654  
  7655  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  7656  //
  7657  // Solidity: function transferOwnership(address newOwner) returns()
  7658  func (_BridgeTransfer *BridgeTransferSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  7659  	return _BridgeTransfer.Contract.TransferOwnership(&_BridgeTransfer.TransactOpts, newOwner)
  7660  }
  7661  
  7662  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  7663  //
  7664  // Solidity: function transferOwnership(address newOwner) returns()
  7665  func (_BridgeTransfer *BridgeTransferTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  7666  	return _BridgeTransfer.Contract.TransferOwnership(&_BridgeTransfer.TransactOpts, newOwner)
  7667  }
  7668  
  7669  // BridgeTransferERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeTransfer contract.
  7670  type BridgeTransferERC20FeeChangedIterator struct {
  7671  	Event *BridgeTransferERC20FeeChanged // Event containing the contract specifics and raw log
  7672  
  7673  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7674  	event    string              // Event name to use for unpacking event data
  7675  
  7676  	logs chan types.Log      // Log channel receiving the found contract events
  7677  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  7678  	done bool                // Whether the subscription completed delivering logs
  7679  	fail error               // Occurred error to stop iteration
  7680  }
  7681  
  7682  // Next advances the iterator to the subsequent event, returning whether there
  7683  // are any more events found. In case of a retrieval or parsing error, false is
  7684  // returned and Error() can be queried for the exact failure.
  7685  func (it *BridgeTransferERC20FeeChangedIterator) Next() bool {
  7686  	// If the iterator failed, stop iterating
  7687  	if it.fail != nil {
  7688  		return false
  7689  	}
  7690  	// If the iterator completed, deliver directly whatever's available
  7691  	if it.done {
  7692  		select {
  7693  		case log := <-it.logs:
  7694  			it.Event = new(BridgeTransferERC20FeeChanged)
  7695  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7696  				it.fail = err
  7697  				return false
  7698  			}
  7699  			it.Event.Raw = log
  7700  			return true
  7701  
  7702  		default:
  7703  			return false
  7704  		}
  7705  	}
  7706  	// Iterator still in progress, wait for either a data or an error event
  7707  	select {
  7708  	case log := <-it.logs:
  7709  		it.Event = new(BridgeTransferERC20FeeChanged)
  7710  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7711  			it.fail = err
  7712  			return false
  7713  		}
  7714  		it.Event.Raw = log
  7715  		return true
  7716  
  7717  	case err := <-it.sub.Err():
  7718  		it.done = true
  7719  		it.fail = err
  7720  		return it.Next()
  7721  	}
  7722  }
  7723  
  7724  // Error returns any retrieval or parsing error occurred during filtering.
  7725  func (it *BridgeTransferERC20FeeChangedIterator) Error() error {
  7726  	return it.fail
  7727  }
  7728  
  7729  // Close terminates the iteration process, releasing any pending underlying
  7730  // resources.
  7731  func (it *BridgeTransferERC20FeeChangedIterator) Close() error {
  7732  	it.sub.Unsubscribe()
  7733  	return nil
  7734  }
  7735  
  7736  // BridgeTransferERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeTransfer contract.
  7737  type BridgeTransferERC20FeeChanged struct {
  7738  	Token common.Address
  7739  	Fee   *big.Int
  7740  	Raw   types.Log // Blockchain specific contextual infos
  7741  }
  7742  
  7743  // FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
  7744  //
  7745  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
  7746  func (_BridgeTransfer *BridgeTransferFilterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeTransferERC20FeeChangedIterator, error) {
  7747  
  7748  	var tokenRule []interface{}
  7749  	for _, tokenItem := range token {
  7750  		tokenRule = append(tokenRule, tokenItem)
  7751  	}
  7752  	var feeRule []interface{}
  7753  	for _, feeItem := range fee {
  7754  		feeRule = append(feeRule, feeItem)
  7755  	}
  7756  
  7757  	logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule)
  7758  	if err != nil {
  7759  		return nil, err
  7760  	}
  7761  	return &BridgeTransferERC20FeeChangedIterator{contract: _BridgeTransfer.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil
  7762  }
  7763  
  7764  // WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
  7765  //
  7766  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
  7767  func (_BridgeTransfer *BridgeTransferFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) {
  7768  
  7769  	var tokenRule []interface{}
  7770  	for _, tokenItem := range token {
  7771  		tokenRule = append(tokenRule, tokenItem)
  7772  	}
  7773  	var feeRule []interface{}
  7774  	for _, feeItem := range fee {
  7775  		feeRule = append(feeRule, feeItem)
  7776  	}
  7777  
  7778  	logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule)
  7779  	if err != nil {
  7780  		return nil, err
  7781  	}
  7782  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7783  		defer sub.Unsubscribe()
  7784  		for {
  7785  			select {
  7786  			case log := <-logs:
  7787  				// New log arrived, parse the event and forward to the user
  7788  				event := new(BridgeTransferERC20FeeChanged)
  7789  				if err := _BridgeTransfer.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil {
  7790  					return err
  7791  				}
  7792  				event.Raw = log
  7793  
  7794  				select {
  7795  				case sink <- event:
  7796  				case err := <-sub.Err():
  7797  					return err
  7798  				case <-quit:
  7799  					return nil
  7800  				}
  7801  			case err := <-sub.Err():
  7802  				return err
  7803  			case <-quit:
  7804  				return nil
  7805  			}
  7806  		}
  7807  	}), nil
  7808  }
  7809  
  7810  // ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
  7811  //
  7812  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
  7813  func (_BridgeTransfer *BridgeTransferFilterer) ParseERC20FeeChanged(log types.Log) (*BridgeTransferERC20FeeChanged, error) {
  7814  	event := new(BridgeTransferERC20FeeChanged)
  7815  	if err := _BridgeTransfer.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil {
  7816  		return nil, err
  7817  	}
  7818  	return event, nil
  7819  }
  7820  
  7821  // BridgeTransferFeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeTransfer contract.
  7822  type BridgeTransferFeeReceiverChangedIterator struct {
  7823  	Event *BridgeTransferFeeReceiverChanged // Event containing the contract specifics and raw log
  7824  
  7825  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7826  	event    string              // Event name to use for unpacking event data
  7827  
  7828  	logs chan types.Log      // Log channel receiving the found contract events
  7829  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  7830  	done bool                // Whether the subscription completed delivering logs
  7831  	fail error               // Occurred error to stop iteration
  7832  }
  7833  
  7834  // Next advances the iterator to the subsequent event, returning whether there
  7835  // are any more events found. In case of a retrieval or parsing error, false is
  7836  // returned and Error() can be queried for the exact failure.
  7837  func (it *BridgeTransferFeeReceiverChangedIterator) Next() bool {
  7838  	// If the iterator failed, stop iterating
  7839  	if it.fail != nil {
  7840  		return false
  7841  	}
  7842  	// If the iterator completed, deliver directly whatever's available
  7843  	if it.done {
  7844  		select {
  7845  		case log := <-it.logs:
  7846  			it.Event = new(BridgeTransferFeeReceiverChanged)
  7847  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7848  				it.fail = err
  7849  				return false
  7850  			}
  7851  			it.Event.Raw = log
  7852  			return true
  7853  
  7854  		default:
  7855  			return false
  7856  		}
  7857  	}
  7858  	// Iterator still in progress, wait for either a data or an error event
  7859  	select {
  7860  	case log := <-it.logs:
  7861  		it.Event = new(BridgeTransferFeeReceiverChanged)
  7862  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7863  			it.fail = err
  7864  			return false
  7865  		}
  7866  		it.Event.Raw = log
  7867  		return true
  7868  
  7869  	case err := <-it.sub.Err():
  7870  		it.done = true
  7871  		it.fail = err
  7872  		return it.Next()
  7873  	}
  7874  }
  7875  
  7876  // Error returns any retrieval or parsing error occurred during filtering.
  7877  func (it *BridgeTransferFeeReceiverChangedIterator) Error() error {
  7878  	return it.fail
  7879  }
  7880  
  7881  // Close terminates the iteration process, releasing any pending underlying
  7882  // resources.
  7883  func (it *BridgeTransferFeeReceiverChangedIterator) Close() error {
  7884  	it.sub.Unsubscribe()
  7885  	return nil
  7886  }
  7887  
  7888  // BridgeTransferFeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeTransfer contract.
  7889  type BridgeTransferFeeReceiverChanged struct {
  7890  	FeeReceiver common.Address
  7891  	Raw         types.Log // Blockchain specific contextual infos
  7892  }
  7893  
  7894  // FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
  7895  //
  7896  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
  7897  func (_BridgeTransfer *BridgeTransferFilterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeTransferFeeReceiverChangedIterator, error) {
  7898  
  7899  	var feeReceiverRule []interface{}
  7900  	for _, feeReceiverItem := range feeReceiver {
  7901  		feeReceiverRule = append(feeReceiverRule, feeReceiverItem)
  7902  	}
  7903  
  7904  	logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule)
  7905  	if err != nil {
  7906  		return nil, err
  7907  	}
  7908  	return &BridgeTransferFeeReceiverChangedIterator{contract: _BridgeTransfer.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil
  7909  }
  7910  
  7911  // WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
  7912  //
  7913  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
  7914  func (_BridgeTransfer *BridgeTransferFilterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferFeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) {
  7915  
  7916  	var feeReceiverRule []interface{}
  7917  	for _, feeReceiverItem := range feeReceiver {
  7918  		feeReceiverRule = append(feeReceiverRule, feeReceiverItem)
  7919  	}
  7920  
  7921  	logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule)
  7922  	if err != nil {
  7923  		return nil, err
  7924  	}
  7925  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7926  		defer sub.Unsubscribe()
  7927  		for {
  7928  			select {
  7929  			case log := <-logs:
  7930  				// New log arrived, parse the event and forward to the user
  7931  				event := new(BridgeTransferFeeReceiverChanged)
  7932  				if err := _BridgeTransfer.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil {
  7933  					return err
  7934  				}
  7935  				event.Raw = log
  7936  
  7937  				select {
  7938  				case sink <- event:
  7939  				case err := <-sub.Err():
  7940  					return err
  7941  				case <-quit:
  7942  					return nil
  7943  				}
  7944  			case err := <-sub.Err():
  7945  				return err
  7946  			case <-quit:
  7947  				return nil
  7948  			}
  7949  		}
  7950  	}), nil
  7951  }
  7952  
  7953  // ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
  7954  //
  7955  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
  7956  func (_BridgeTransfer *BridgeTransferFilterer) ParseFeeReceiverChanged(log types.Log) (*BridgeTransferFeeReceiverChanged, error) {
  7957  	event := new(BridgeTransferFeeReceiverChanged)
  7958  	if err := _BridgeTransfer.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil {
  7959  		return nil, err
  7960  	}
  7961  	return event, nil
  7962  }
  7963  
  7964  // BridgeTransferHandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the BridgeTransfer contract.
  7965  type BridgeTransferHandleValueTransferIterator struct {
  7966  	Event *BridgeTransferHandleValueTransfer // Event containing the contract specifics and raw log
  7967  
  7968  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7969  	event    string              // Event name to use for unpacking event data
  7970  
  7971  	logs chan types.Log      // Log channel receiving the found contract events
  7972  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  7973  	done bool                // Whether the subscription completed delivering logs
  7974  	fail error               // Occurred error to stop iteration
  7975  }
  7976  
  7977  // Next advances the iterator to the subsequent event, returning whether there
  7978  // are any more events found. In case of a retrieval or parsing error, false is
  7979  // returned and Error() can be queried for the exact failure.
  7980  func (it *BridgeTransferHandleValueTransferIterator) Next() bool {
  7981  	// If the iterator failed, stop iterating
  7982  	if it.fail != nil {
  7983  		return false
  7984  	}
  7985  	// If the iterator completed, deliver directly whatever's available
  7986  	if it.done {
  7987  		select {
  7988  		case log := <-it.logs:
  7989  			it.Event = new(BridgeTransferHandleValueTransfer)
  7990  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7991  				it.fail = err
  7992  				return false
  7993  			}
  7994  			it.Event.Raw = log
  7995  			return true
  7996  
  7997  		default:
  7998  			return false
  7999  		}
  8000  	}
  8001  	// Iterator still in progress, wait for either a data or an error event
  8002  	select {
  8003  	case log := <-it.logs:
  8004  		it.Event = new(BridgeTransferHandleValueTransfer)
  8005  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8006  			it.fail = err
  8007  			return false
  8008  		}
  8009  		it.Event.Raw = log
  8010  		return true
  8011  
  8012  	case err := <-it.sub.Err():
  8013  		it.done = true
  8014  		it.fail = err
  8015  		return it.Next()
  8016  	}
  8017  }
  8018  
  8019  // Error returns any retrieval or parsing error occurred during filtering.
  8020  func (it *BridgeTransferHandleValueTransferIterator) Error() error {
  8021  	return it.fail
  8022  }
  8023  
  8024  // Close terminates the iteration process, releasing any pending underlying
  8025  // resources.
  8026  func (it *BridgeTransferHandleValueTransferIterator) Close() error {
  8027  	it.sub.Unsubscribe()
  8028  	return nil
  8029  }
  8030  
  8031  // BridgeTransferHandleValueTransfer represents a HandleValueTransfer event raised by the BridgeTransfer contract.
  8032  type BridgeTransferHandleValueTransfer struct {
  8033  	RequestTxHash    [32]byte
  8034  	TokenType        uint8
  8035  	From             common.Address
  8036  	To               common.Address
  8037  	TokenAddress     common.Address
  8038  	ValueOrTokenId   *big.Int
  8039  	HandleNonce      uint64
  8040  	LowerHandleNonce uint64
  8041  	ExtraData        []byte
  8042  	Raw              types.Log // Blockchain specific contextual infos
  8043  }
  8044  
  8045  // FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
  8046  //
  8047  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
  8048  func (_BridgeTransfer *BridgeTransferFilterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferHandleValueTransferIterator, error) {
  8049  
  8050  	var fromRule []interface{}
  8051  	for _, fromItem := range from {
  8052  		fromRule = append(fromRule, fromItem)
  8053  	}
  8054  	var toRule []interface{}
  8055  	for _, toItem := range to {
  8056  		toRule = append(toRule, toItem)
  8057  	}
  8058  	var tokenAddressRule []interface{}
  8059  	for _, tokenAddressItem := range tokenAddress {
  8060  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  8061  	}
  8062  
  8063  	logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule)
  8064  	if err != nil {
  8065  		return nil, err
  8066  	}
  8067  	return &BridgeTransferHandleValueTransferIterator{contract: _BridgeTransfer.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil
  8068  }
  8069  
  8070  // WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
  8071  //
  8072  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
  8073  func (_BridgeTransfer *BridgeTransferFilterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferHandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
  8074  
  8075  	var fromRule []interface{}
  8076  	for _, fromItem := range from {
  8077  		fromRule = append(fromRule, fromItem)
  8078  	}
  8079  	var toRule []interface{}
  8080  	for _, toItem := range to {
  8081  		toRule = append(toRule, toItem)
  8082  	}
  8083  	var tokenAddressRule []interface{}
  8084  	for _, tokenAddressItem := range tokenAddress {
  8085  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  8086  	}
  8087  
  8088  	logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule)
  8089  	if err != nil {
  8090  		return nil, err
  8091  	}
  8092  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8093  		defer sub.Unsubscribe()
  8094  		for {
  8095  			select {
  8096  			case log := <-logs:
  8097  				// New log arrived, parse the event and forward to the user
  8098  				event := new(BridgeTransferHandleValueTransfer)
  8099  				if err := _BridgeTransfer.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil {
  8100  					return err
  8101  				}
  8102  				event.Raw = log
  8103  
  8104  				select {
  8105  				case sink <- event:
  8106  				case err := <-sub.Err():
  8107  					return err
  8108  				case <-quit:
  8109  					return nil
  8110  				}
  8111  			case err := <-sub.Err():
  8112  				return err
  8113  			case <-quit:
  8114  				return nil
  8115  			}
  8116  		}
  8117  	}), nil
  8118  }
  8119  
  8120  // ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
  8121  //
  8122  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
  8123  func (_BridgeTransfer *BridgeTransferFilterer) ParseHandleValueTransfer(log types.Log) (*BridgeTransferHandleValueTransfer, error) {
  8124  	event := new(BridgeTransferHandleValueTransfer)
  8125  	if err := _BridgeTransfer.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil {
  8126  		return nil, err
  8127  	}
  8128  	return event, nil
  8129  }
  8130  
  8131  // BridgeTransferKLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeTransfer contract.
  8132  type BridgeTransferKLAYFeeChangedIterator struct {
  8133  	Event *BridgeTransferKLAYFeeChanged // Event containing the contract specifics and raw log
  8134  
  8135  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8136  	event    string              // Event name to use for unpacking event data
  8137  
  8138  	logs chan types.Log      // Log channel receiving the found contract events
  8139  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  8140  	done bool                // Whether the subscription completed delivering logs
  8141  	fail error               // Occurred error to stop iteration
  8142  }
  8143  
  8144  // Next advances the iterator to the subsequent event, returning whether there
  8145  // are any more events found. In case of a retrieval or parsing error, false is
  8146  // returned and Error() can be queried for the exact failure.
  8147  func (it *BridgeTransferKLAYFeeChangedIterator) Next() bool {
  8148  	// If the iterator failed, stop iterating
  8149  	if it.fail != nil {
  8150  		return false
  8151  	}
  8152  	// If the iterator completed, deliver directly whatever's available
  8153  	if it.done {
  8154  		select {
  8155  		case log := <-it.logs:
  8156  			it.Event = new(BridgeTransferKLAYFeeChanged)
  8157  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8158  				it.fail = err
  8159  				return false
  8160  			}
  8161  			it.Event.Raw = log
  8162  			return true
  8163  
  8164  		default:
  8165  			return false
  8166  		}
  8167  	}
  8168  	// Iterator still in progress, wait for either a data or an error event
  8169  	select {
  8170  	case log := <-it.logs:
  8171  		it.Event = new(BridgeTransferKLAYFeeChanged)
  8172  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8173  			it.fail = err
  8174  			return false
  8175  		}
  8176  		it.Event.Raw = log
  8177  		return true
  8178  
  8179  	case err := <-it.sub.Err():
  8180  		it.done = true
  8181  		it.fail = err
  8182  		return it.Next()
  8183  	}
  8184  }
  8185  
  8186  // Error returns any retrieval or parsing error occurred during filtering.
  8187  func (it *BridgeTransferKLAYFeeChangedIterator) Error() error {
  8188  	return it.fail
  8189  }
  8190  
  8191  // Close terminates the iteration process, releasing any pending underlying
  8192  // resources.
  8193  func (it *BridgeTransferKLAYFeeChangedIterator) Close() error {
  8194  	it.sub.Unsubscribe()
  8195  	return nil
  8196  }
  8197  
  8198  // BridgeTransferKLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeTransfer contract.
  8199  type BridgeTransferKLAYFeeChanged struct {
  8200  	Fee *big.Int
  8201  	Raw types.Log // Blockchain specific contextual infos
  8202  }
  8203  
  8204  // FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
  8205  //
  8206  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
  8207  func (_BridgeTransfer *BridgeTransferFilterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeTransferKLAYFeeChangedIterator, error) {
  8208  
  8209  	var feeRule []interface{}
  8210  	for _, feeItem := range fee {
  8211  		feeRule = append(feeRule, feeItem)
  8212  	}
  8213  
  8214  	logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule)
  8215  	if err != nil {
  8216  		return nil, err
  8217  	}
  8218  	return &BridgeTransferKLAYFeeChangedIterator{contract: _BridgeTransfer.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil
  8219  }
  8220  
  8221  // WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
  8222  //
  8223  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
  8224  func (_BridgeTransfer *BridgeTransferFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYFeeChanged, fee []*big.Int) (event.Subscription, error) {
  8225  
  8226  	var feeRule []interface{}
  8227  	for _, feeItem := range fee {
  8228  		feeRule = append(feeRule, feeItem)
  8229  	}
  8230  
  8231  	logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule)
  8232  	if err != nil {
  8233  		return nil, err
  8234  	}
  8235  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8236  		defer sub.Unsubscribe()
  8237  		for {
  8238  			select {
  8239  			case log := <-logs:
  8240  				// New log arrived, parse the event and forward to the user
  8241  				event := new(BridgeTransferKLAYFeeChanged)
  8242  				if err := _BridgeTransfer.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil {
  8243  					return err
  8244  				}
  8245  				event.Raw = log
  8246  
  8247  				select {
  8248  				case sink <- event:
  8249  				case err := <-sub.Err():
  8250  					return err
  8251  				case <-quit:
  8252  					return nil
  8253  				}
  8254  			case err := <-sub.Err():
  8255  				return err
  8256  			case <-quit:
  8257  				return nil
  8258  			}
  8259  		}
  8260  	}), nil
  8261  }
  8262  
  8263  // ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
  8264  //
  8265  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
  8266  func (_BridgeTransfer *BridgeTransferFilterer) ParseKLAYFeeChanged(log types.Log) (*BridgeTransferKLAYFeeChanged, error) {
  8267  	event := new(BridgeTransferKLAYFeeChanged)
  8268  	if err := _BridgeTransfer.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil {
  8269  		return nil, err
  8270  	}
  8271  	return event, nil
  8272  }
  8273  
  8274  // BridgeTransferOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTransfer contract.
  8275  type BridgeTransferOwnershipTransferredIterator struct {
  8276  	Event *BridgeTransferOwnershipTransferred // Event containing the contract specifics and raw log
  8277  
  8278  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8279  	event    string              // Event name to use for unpacking event data
  8280  
  8281  	logs chan types.Log      // Log channel receiving the found contract events
  8282  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  8283  	done bool                // Whether the subscription completed delivering logs
  8284  	fail error               // Occurred error to stop iteration
  8285  }
  8286  
  8287  // Next advances the iterator to the subsequent event, returning whether there
  8288  // are any more events found. In case of a retrieval or parsing error, false is
  8289  // returned and Error() can be queried for the exact failure.
  8290  func (it *BridgeTransferOwnershipTransferredIterator) Next() bool {
  8291  	// If the iterator failed, stop iterating
  8292  	if it.fail != nil {
  8293  		return false
  8294  	}
  8295  	// If the iterator completed, deliver directly whatever's available
  8296  	if it.done {
  8297  		select {
  8298  		case log := <-it.logs:
  8299  			it.Event = new(BridgeTransferOwnershipTransferred)
  8300  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8301  				it.fail = err
  8302  				return false
  8303  			}
  8304  			it.Event.Raw = log
  8305  			return true
  8306  
  8307  		default:
  8308  			return false
  8309  		}
  8310  	}
  8311  	// Iterator still in progress, wait for either a data or an error event
  8312  	select {
  8313  	case log := <-it.logs:
  8314  		it.Event = new(BridgeTransferOwnershipTransferred)
  8315  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8316  			it.fail = err
  8317  			return false
  8318  		}
  8319  		it.Event.Raw = log
  8320  		return true
  8321  
  8322  	case err := <-it.sub.Err():
  8323  		it.done = true
  8324  		it.fail = err
  8325  		return it.Next()
  8326  	}
  8327  }
  8328  
  8329  // Error returns any retrieval or parsing error occurred during filtering.
  8330  func (it *BridgeTransferOwnershipTransferredIterator) Error() error {
  8331  	return it.fail
  8332  }
  8333  
  8334  // Close terminates the iteration process, releasing any pending underlying
  8335  // resources.
  8336  func (it *BridgeTransferOwnershipTransferredIterator) Close() error {
  8337  	it.sub.Unsubscribe()
  8338  	return nil
  8339  }
  8340  
  8341  // BridgeTransferOwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTransfer contract.
  8342  type BridgeTransferOwnershipTransferred struct {
  8343  	PreviousOwner common.Address
  8344  	NewOwner      common.Address
  8345  	Raw           types.Log // Blockchain specific contextual infos
  8346  }
  8347  
  8348  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  8349  //
  8350  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  8351  func (_BridgeTransfer *BridgeTransferFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTransferOwnershipTransferredIterator, error) {
  8352  
  8353  	var previousOwnerRule []interface{}
  8354  	for _, previousOwnerItem := range previousOwner {
  8355  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  8356  	}
  8357  	var newOwnerRule []interface{}
  8358  	for _, newOwnerItem := range newOwner {
  8359  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  8360  	}
  8361  
  8362  	logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  8363  	if err != nil {
  8364  		return nil, err
  8365  	}
  8366  	return &BridgeTransferOwnershipTransferredIterator{contract: _BridgeTransfer.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  8367  }
  8368  
  8369  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  8370  //
  8371  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  8372  func (_BridgeTransfer *BridgeTransferFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTransferOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  8373  
  8374  	var previousOwnerRule []interface{}
  8375  	for _, previousOwnerItem := range previousOwner {
  8376  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  8377  	}
  8378  	var newOwnerRule []interface{}
  8379  	for _, newOwnerItem := range newOwner {
  8380  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  8381  	}
  8382  
  8383  	logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  8384  	if err != nil {
  8385  		return nil, err
  8386  	}
  8387  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8388  		defer sub.Unsubscribe()
  8389  		for {
  8390  			select {
  8391  			case log := <-logs:
  8392  				// New log arrived, parse the event and forward to the user
  8393  				event := new(BridgeTransferOwnershipTransferred)
  8394  				if err := _BridgeTransfer.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  8395  					return err
  8396  				}
  8397  				event.Raw = log
  8398  
  8399  				select {
  8400  				case sink <- event:
  8401  				case err := <-sub.Err():
  8402  					return err
  8403  				case <-quit:
  8404  					return nil
  8405  				}
  8406  			case err := <-sub.Err():
  8407  				return err
  8408  			case <-quit:
  8409  				return nil
  8410  			}
  8411  		}
  8412  	}), nil
  8413  }
  8414  
  8415  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  8416  //
  8417  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  8418  func (_BridgeTransfer *BridgeTransferFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeTransferOwnershipTransferred, error) {
  8419  	event := new(BridgeTransferOwnershipTransferred)
  8420  	if err := _BridgeTransfer.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  8421  		return nil, err
  8422  	}
  8423  	return event, nil
  8424  }
  8425  
  8426  // BridgeTransferRequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the BridgeTransfer contract.
  8427  type BridgeTransferRequestValueTransferIterator struct {
  8428  	Event *BridgeTransferRequestValueTransfer // Event containing the contract specifics and raw log
  8429  
  8430  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8431  	event    string              // Event name to use for unpacking event data
  8432  
  8433  	logs chan types.Log      // Log channel receiving the found contract events
  8434  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  8435  	done bool                // Whether the subscription completed delivering logs
  8436  	fail error               // Occurred error to stop iteration
  8437  }
  8438  
  8439  // Next advances the iterator to the subsequent event, returning whether there
  8440  // are any more events found. In case of a retrieval or parsing error, false is
  8441  // returned and Error() can be queried for the exact failure.
  8442  func (it *BridgeTransferRequestValueTransferIterator) Next() bool {
  8443  	// If the iterator failed, stop iterating
  8444  	if it.fail != nil {
  8445  		return false
  8446  	}
  8447  	// If the iterator completed, deliver directly whatever's available
  8448  	if it.done {
  8449  		select {
  8450  		case log := <-it.logs:
  8451  			it.Event = new(BridgeTransferRequestValueTransfer)
  8452  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8453  				it.fail = err
  8454  				return false
  8455  			}
  8456  			it.Event.Raw = log
  8457  			return true
  8458  
  8459  		default:
  8460  			return false
  8461  		}
  8462  	}
  8463  	// Iterator still in progress, wait for either a data or an error event
  8464  	select {
  8465  	case log := <-it.logs:
  8466  		it.Event = new(BridgeTransferRequestValueTransfer)
  8467  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8468  			it.fail = err
  8469  			return false
  8470  		}
  8471  		it.Event.Raw = log
  8472  		return true
  8473  
  8474  	case err := <-it.sub.Err():
  8475  		it.done = true
  8476  		it.fail = err
  8477  		return it.Next()
  8478  	}
  8479  }
  8480  
  8481  // Error returns any retrieval or parsing error occurred during filtering.
  8482  func (it *BridgeTransferRequestValueTransferIterator) Error() error {
  8483  	return it.fail
  8484  }
  8485  
  8486  // Close terminates the iteration process, releasing any pending underlying
  8487  // resources.
  8488  func (it *BridgeTransferRequestValueTransferIterator) Close() error {
  8489  	it.sub.Unsubscribe()
  8490  	return nil
  8491  }
  8492  
  8493  // BridgeTransferRequestValueTransfer represents a RequestValueTransfer event raised by the BridgeTransfer contract.
  8494  type BridgeTransferRequestValueTransfer struct {
  8495  	TokenType      uint8
  8496  	From           common.Address
  8497  	To             common.Address
  8498  	TokenAddress   common.Address
  8499  	ValueOrTokenId *big.Int
  8500  	RequestNonce   uint64
  8501  	Fee            *big.Int
  8502  	ExtraData      []byte
  8503  	Raw            types.Log // Blockchain specific contextual infos
  8504  }
  8505  
  8506  // FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
  8507  //
  8508  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
  8509  func (_BridgeTransfer *BridgeTransferFilterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferRequestValueTransferIterator, error) {
  8510  
  8511  	var fromRule []interface{}
  8512  	for _, fromItem := range from {
  8513  		fromRule = append(fromRule, fromItem)
  8514  	}
  8515  	var toRule []interface{}
  8516  	for _, toItem := range to {
  8517  		toRule = append(toRule, toItem)
  8518  	}
  8519  	var tokenAddressRule []interface{}
  8520  	for _, tokenAddressItem := range tokenAddress {
  8521  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  8522  	}
  8523  
  8524  	logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule)
  8525  	if err != nil {
  8526  		return nil, err
  8527  	}
  8528  	return &BridgeTransferRequestValueTransferIterator{contract: _BridgeTransfer.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil
  8529  }
  8530  
  8531  // WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
  8532  //
  8533  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
  8534  func (_BridgeTransfer *BridgeTransferFilterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferRequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
  8535  
  8536  	var fromRule []interface{}
  8537  	for _, fromItem := range from {
  8538  		fromRule = append(fromRule, fromItem)
  8539  	}
  8540  	var toRule []interface{}
  8541  	for _, toItem := range to {
  8542  		toRule = append(toRule, toItem)
  8543  	}
  8544  	var tokenAddressRule []interface{}
  8545  	for _, tokenAddressItem := range tokenAddress {
  8546  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  8547  	}
  8548  
  8549  	logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule)
  8550  	if err != nil {
  8551  		return nil, err
  8552  	}
  8553  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8554  		defer sub.Unsubscribe()
  8555  		for {
  8556  			select {
  8557  			case log := <-logs:
  8558  				// New log arrived, parse the event and forward to the user
  8559  				event := new(BridgeTransferRequestValueTransfer)
  8560  				if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil {
  8561  					return err
  8562  				}
  8563  				event.Raw = log
  8564  
  8565  				select {
  8566  				case sink <- event:
  8567  				case err := <-sub.Err():
  8568  					return err
  8569  				case <-quit:
  8570  					return nil
  8571  				}
  8572  			case err := <-sub.Err():
  8573  				return err
  8574  			case <-quit:
  8575  				return nil
  8576  			}
  8577  		}
  8578  	}), nil
  8579  }
  8580  
  8581  // ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
  8582  //
  8583  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
  8584  func (_BridgeTransfer *BridgeTransferFilterer) ParseRequestValueTransfer(log types.Log) (*BridgeTransferRequestValueTransfer, error) {
  8585  	event := new(BridgeTransferRequestValueTransfer)
  8586  	if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil {
  8587  		return nil, err
  8588  	}
  8589  	return event, nil
  8590  }
  8591  
  8592  // BridgeTransferRequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the BridgeTransfer contract.
  8593  type BridgeTransferRequestValueTransferEncodedIterator struct {
  8594  	Event *BridgeTransferRequestValueTransferEncoded // Event containing the contract specifics and raw log
  8595  
  8596  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8597  	event    string              // Event name to use for unpacking event data
  8598  
  8599  	logs chan types.Log      // Log channel receiving the found contract events
  8600  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  8601  	done bool                // Whether the subscription completed delivering logs
  8602  	fail error               // Occurred error to stop iteration
  8603  }
  8604  
  8605  // Next advances the iterator to the subsequent event, returning whether there
  8606  // are any more events found. In case of a retrieval or parsing error, false is
  8607  // returned and Error() can be queried for the exact failure.
  8608  func (it *BridgeTransferRequestValueTransferEncodedIterator) Next() bool {
  8609  	// If the iterator failed, stop iterating
  8610  	if it.fail != nil {
  8611  		return false
  8612  	}
  8613  	// If the iterator completed, deliver directly whatever's available
  8614  	if it.done {
  8615  		select {
  8616  		case log := <-it.logs:
  8617  			it.Event = new(BridgeTransferRequestValueTransferEncoded)
  8618  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8619  				it.fail = err
  8620  				return false
  8621  			}
  8622  			it.Event.Raw = log
  8623  			return true
  8624  
  8625  		default:
  8626  			return false
  8627  		}
  8628  	}
  8629  	// Iterator still in progress, wait for either a data or an error event
  8630  	select {
  8631  	case log := <-it.logs:
  8632  		it.Event = new(BridgeTransferRequestValueTransferEncoded)
  8633  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8634  			it.fail = err
  8635  			return false
  8636  		}
  8637  		it.Event.Raw = log
  8638  		return true
  8639  
  8640  	case err := <-it.sub.Err():
  8641  		it.done = true
  8642  		it.fail = err
  8643  		return it.Next()
  8644  	}
  8645  }
  8646  
  8647  // Error returns any retrieval or parsing error occurred during filtering.
  8648  func (it *BridgeTransferRequestValueTransferEncodedIterator) Error() error {
  8649  	return it.fail
  8650  }
  8651  
  8652  // Close terminates the iteration process, releasing any pending underlying
  8653  // resources.
  8654  func (it *BridgeTransferRequestValueTransferEncodedIterator) Close() error {
  8655  	it.sub.Unsubscribe()
  8656  	return nil
  8657  }
  8658  
  8659  // BridgeTransferRequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the BridgeTransfer contract.
  8660  type BridgeTransferRequestValueTransferEncoded struct {
  8661  	TokenType      uint8
  8662  	From           common.Address
  8663  	To             common.Address
  8664  	TokenAddress   common.Address
  8665  	ValueOrTokenId *big.Int
  8666  	RequestNonce   uint64
  8667  	Fee            *big.Int
  8668  	ExtraData      []byte
  8669  	EncodingVer    uint8
  8670  	EncodedData    []byte
  8671  	Raw            types.Log // Blockchain specific contextual infos
  8672  }
  8673  
  8674  // FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
  8675  //
  8676  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
  8677  func (_BridgeTransfer *BridgeTransferFilterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferRequestValueTransferEncodedIterator, error) {
  8678  
  8679  	var fromRule []interface{}
  8680  	for _, fromItem := range from {
  8681  		fromRule = append(fromRule, fromItem)
  8682  	}
  8683  	var toRule []interface{}
  8684  	for _, toItem := range to {
  8685  		toRule = append(toRule, toItem)
  8686  	}
  8687  	var tokenAddressRule []interface{}
  8688  	for _, tokenAddressItem := range tokenAddress {
  8689  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  8690  	}
  8691  
  8692  	logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule)
  8693  	if err != nil {
  8694  		return nil, err
  8695  	}
  8696  	return &BridgeTransferRequestValueTransferEncodedIterator{contract: _BridgeTransfer.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil
  8697  }
  8698  
  8699  // WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
  8700  //
  8701  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
  8702  func (_BridgeTransfer *BridgeTransferFilterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeTransferRequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
  8703  
  8704  	var fromRule []interface{}
  8705  	for _, fromItem := range from {
  8706  		fromRule = append(fromRule, fromItem)
  8707  	}
  8708  	var toRule []interface{}
  8709  	for _, toItem := range to {
  8710  		toRule = append(toRule, toItem)
  8711  	}
  8712  	var tokenAddressRule []interface{}
  8713  	for _, tokenAddressItem := range tokenAddress {
  8714  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  8715  	}
  8716  
  8717  	logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule)
  8718  	if err != nil {
  8719  		return nil, err
  8720  	}
  8721  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8722  		defer sub.Unsubscribe()
  8723  		for {
  8724  			select {
  8725  			case log := <-logs:
  8726  				// New log arrived, parse the event and forward to the user
  8727  				event := new(BridgeTransferRequestValueTransferEncoded)
  8728  				if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil {
  8729  					return err
  8730  				}
  8731  				event.Raw = log
  8732  
  8733  				select {
  8734  				case sink <- event:
  8735  				case err := <-sub.Err():
  8736  					return err
  8737  				case <-quit:
  8738  					return nil
  8739  				}
  8740  			case err := <-sub.Err():
  8741  				return err
  8742  			case <-quit:
  8743  				return nil
  8744  			}
  8745  		}
  8746  	}), nil
  8747  }
  8748  
  8749  // ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
  8750  //
  8751  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
  8752  func (_BridgeTransfer *BridgeTransferFilterer) ParseRequestValueTransferEncoded(log types.Log) (*BridgeTransferRequestValueTransferEncoded, error) {
  8753  	event := new(BridgeTransferRequestValueTransferEncoded)
  8754  	if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil {
  8755  		return nil, err
  8756  	}
  8757  	return event, nil
  8758  }
  8759  
  8760  // BridgeTransferERC20ABI is the input ABI used to generate the binding from.
  8761  const BridgeTransferERC20ABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_fee\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"}],\"name\":\"setERC20Fee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"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\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC20Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"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\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]"
  8762  
  8763  // BridgeTransferERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  8764  const BridgeTransferERC20BinRuntime = ``
  8765  
  8766  // BridgeTransferERC20FuncSigs maps the 4-byte function signature to its string representation.
  8767  var BridgeTransferERC20FuncSigs = map[string]string{
  8768  	"3a3099d1": "MAX_OPERATOR()",
  8769  	"9832c1d7": "closedValueTransferVotes(uint64)",
  8770  	"ac6fff0b": "configurationNonce()",
  8771  	"d8cf98ca": "deregisterOperator(address)",
  8772  	"bab2af1d": "deregisterToken(address)",
  8773  	"488af871": "feeOfERC20(address)",
  8774  	"c263b5d6": "feeOfKLAY()",
  8775  	"b3f00674": "feeReceiver()",
  8776  	"b2c01030": "getOperatorList()",
  8777  	"ea21eade": "getRegisteredTokenList()",
  8778  	"407e6bae": "handleERC20Transfer(bytes32,address,address,address,uint256,uint64,uint64,bytes)",
  8779  	"13a6738a": "handleNoncesToBlockNums(uint64)",
  8780  	"8a75eee2": "handledRequestTx(bytes32)",
  8781  	"48a18a6a": "indexOfTokens(address)",
  8782  	"8f32d59b": "isOwner()",
  8783  	"2014e5d1": "isRunning()",
  8784  	"10693fcd": "lockToken(address)",
  8785  	"5eb7413a": "lockedTokens(address)",
  8786  	"4b40b826": "lowerHandleNonce()",
  8787  	"6e176ec2": "modeMintBurn()",
  8788  	"f1656e53": "onERC20Received(address,address,uint256,uint256,bytes)",
  8789  	"cb38f407": "operatorList(uint256)",
  8790  	"5526f76b": "operatorThresholds(uint8)",
  8791  	"13e7c9d8": "operators(address)",
  8792  	"8da5cb5b": "owner()",
  8793  	"989ba0d3": "recoveryBlockNumber()",
  8794  	"3682a450": "registerOperator(address)",
  8795  	"4739f7e5": "registerToken(address,address)",
  8796  	"3e4fe949": "registeredTokenList(uint256)",
  8797  	"8c0bd916": "registeredTokens(address)",
  8798  	"715018a6": "renounceOwnership()",
  8799  	"26c23b54": "requestERC20Transfer(address,address,uint256,uint256,bytes)",
  8800  	"7c1a0302": "requestNonce()",
  8801  	"2f88396c": "setERC20Fee(address,uint256,uint64)",
  8802  	"efdcd974": "setFeeReceiver(address)",
  8803  	"ee2aec65": "setOperatorThreshold(uint8,uint8)",
  8804  	"c877cf37": "start(bool)",
  8805  	"f2fde38b": "transferOwnership(address)",
  8806  	"9ef2017b": "unlockToken(address)",
  8807  	"54edad72": "upperHandleNonce()",
  8808  }
  8809  
  8810  // BridgeTransferERC20 is an auto generated Go binding around a Klaytn contract.
  8811  type BridgeTransferERC20 struct {
  8812  	BridgeTransferERC20Caller     // Read-only binding to the contract
  8813  	BridgeTransferERC20Transactor // Write-only binding to the contract
  8814  	BridgeTransferERC20Filterer   // Log filterer for contract events
  8815  }
  8816  
  8817  // BridgeTransferERC20Caller is an auto generated read-only Go binding around a Klaytn contract.
  8818  type BridgeTransferERC20Caller struct {
  8819  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8820  }
  8821  
  8822  // BridgeTransferERC20Transactor is an auto generated write-only Go binding around a Klaytn contract.
  8823  type BridgeTransferERC20Transactor struct {
  8824  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8825  }
  8826  
  8827  // BridgeTransferERC20Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
  8828  type BridgeTransferERC20Filterer struct {
  8829  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8830  }
  8831  
  8832  // BridgeTransferERC20Session is an auto generated Go binding around a Klaytn contract,
  8833  // with pre-set call and transact options.
  8834  type BridgeTransferERC20Session struct {
  8835  	Contract     *BridgeTransferERC20 // Generic contract binding to set the session for
  8836  	CallOpts     bind.CallOpts        // Call options to use throughout this session
  8837  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
  8838  }
  8839  
  8840  // BridgeTransferERC20CallerSession is an auto generated read-only Go binding around a Klaytn contract,
  8841  // with pre-set call options.
  8842  type BridgeTransferERC20CallerSession struct {
  8843  	Contract *BridgeTransferERC20Caller // Generic contract caller binding to set the session for
  8844  	CallOpts bind.CallOpts              // Call options to use throughout this session
  8845  }
  8846  
  8847  // BridgeTransferERC20TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  8848  // with pre-set transact options.
  8849  type BridgeTransferERC20TransactorSession struct {
  8850  	Contract     *BridgeTransferERC20Transactor // Generic contract transactor binding to set the session for
  8851  	TransactOpts bind.TransactOpts              // Transaction auth options to use throughout this session
  8852  }
  8853  
  8854  // BridgeTransferERC20Raw is an auto generated low-level Go binding around a Klaytn contract.
  8855  type BridgeTransferERC20Raw struct {
  8856  	Contract *BridgeTransferERC20 // Generic contract binding to access the raw methods on
  8857  }
  8858  
  8859  // BridgeTransferERC20CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  8860  type BridgeTransferERC20CallerRaw struct {
  8861  	Contract *BridgeTransferERC20Caller // Generic read-only contract binding to access the raw methods on
  8862  }
  8863  
  8864  // BridgeTransferERC20TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  8865  type BridgeTransferERC20TransactorRaw struct {
  8866  	Contract *BridgeTransferERC20Transactor // Generic write-only contract binding to access the raw methods on
  8867  }
  8868  
  8869  // NewBridgeTransferERC20 creates a new instance of BridgeTransferERC20, bound to a specific deployed contract.
  8870  func NewBridgeTransferERC20(address common.Address, backend bind.ContractBackend) (*BridgeTransferERC20, error) {
  8871  	contract, err := bindBridgeTransferERC20(address, backend, backend, backend)
  8872  	if err != nil {
  8873  		return nil, err
  8874  	}
  8875  	return &BridgeTransferERC20{BridgeTransferERC20Caller: BridgeTransferERC20Caller{contract: contract}, BridgeTransferERC20Transactor: BridgeTransferERC20Transactor{contract: contract}, BridgeTransferERC20Filterer: BridgeTransferERC20Filterer{contract: contract}}, nil
  8876  }
  8877  
  8878  // NewBridgeTransferERC20Caller creates a new read-only instance of BridgeTransferERC20, bound to a specific deployed contract.
  8879  func NewBridgeTransferERC20Caller(address common.Address, caller bind.ContractCaller) (*BridgeTransferERC20Caller, error) {
  8880  	contract, err := bindBridgeTransferERC20(address, caller, nil, nil)
  8881  	if err != nil {
  8882  		return nil, err
  8883  	}
  8884  	return &BridgeTransferERC20Caller{contract: contract}, nil
  8885  }
  8886  
  8887  // NewBridgeTransferERC20Transactor creates a new write-only instance of BridgeTransferERC20, bound to a specific deployed contract.
  8888  func NewBridgeTransferERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransferERC20Transactor, error) {
  8889  	contract, err := bindBridgeTransferERC20(address, nil, transactor, nil)
  8890  	if err != nil {
  8891  		return nil, err
  8892  	}
  8893  	return &BridgeTransferERC20Transactor{contract: contract}, nil
  8894  }
  8895  
  8896  // NewBridgeTransferERC20Filterer creates a new log filterer instance of BridgeTransferERC20, bound to a specific deployed contract.
  8897  func NewBridgeTransferERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTransferERC20Filterer, error) {
  8898  	contract, err := bindBridgeTransferERC20(address, nil, nil, filterer)
  8899  	if err != nil {
  8900  		return nil, err
  8901  	}
  8902  	return &BridgeTransferERC20Filterer{contract: contract}, nil
  8903  }
  8904  
  8905  // bindBridgeTransferERC20 binds a generic wrapper to an already deployed contract.
  8906  func bindBridgeTransferERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  8907  	parsed, err := abi.JSON(strings.NewReader(BridgeTransferERC20ABI))
  8908  	if err != nil {
  8909  		return nil, err
  8910  	}
  8911  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  8912  }
  8913  
  8914  // Call invokes the (constant) contract method with params as input values and
  8915  // sets the output to result. The result type might be a single field for simple
  8916  // returns, a slice of interfaces for anonymous returns and a struct for named
  8917  // returns.
  8918  func (_BridgeTransferERC20 *BridgeTransferERC20Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  8919  	return _BridgeTransferERC20.Contract.BridgeTransferERC20Caller.contract.Call(opts, result, method, params...)
  8920  }
  8921  
  8922  // Transfer initiates a plain transaction to move funds to the contract, calling
  8923  // its default method if one is available.
  8924  func (_BridgeTransferERC20 *BridgeTransferERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8925  	return _BridgeTransferERC20.Contract.BridgeTransferERC20Transactor.contract.Transfer(opts)
  8926  }
  8927  
  8928  // Transact invokes the (paid) contract method with params as input values.
  8929  func (_BridgeTransferERC20 *BridgeTransferERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8930  	return _BridgeTransferERC20.Contract.BridgeTransferERC20Transactor.contract.Transact(opts, method, params...)
  8931  }
  8932  
  8933  // Call invokes the (constant) contract method with params as input values and
  8934  // sets the output to result. The result type might be a single field for simple
  8935  // returns, a slice of interfaces for anonymous returns and a struct for named
  8936  // returns.
  8937  func (_BridgeTransferERC20 *BridgeTransferERC20CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  8938  	return _BridgeTransferERC20.Contract.contract.Call(opts, result, method, params...)
  8939  }
  8940  
  8941  // Transfer initiates a plain transaction to move funds to the contract, calling
  8942  // its default method if one is available.
  8943  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8944  	return _BridgeTransferERC20.Contract.contract.Transfer(opts)
  8945  }
  8946  
  8947  // Transact invokes the (paid) contract method with params as input values.
  8948  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8949  	return _BridgeTransferERC20.Contract.contract.Transact(opts, method, params...)
  8950  }
  8951  
  8952  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
  8953  //
  8954  // Solidity: function MAX_OPERATOR() view returns(uint64)
  8955  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) {
  8956  	var (
  8957  		ret0 = new(uint64)
  8958  	)
  8959  	out := ret0
  8960  	err := _BridgeTransferERC20.contract.Call(opts, out, "MAX_OPERATOR")
  8961  	return *ret0, err
  8962  }
  8963  
  8964  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
  8965  //
  8966  // Solidity: function MAX_OPERATOR() view returns(uint64)
  8967  func (_BridgeTransferERC20 *BridgeTransferERC20Session) MAXOPERATOR() (uint64, error) {
  8968  	return _BridgeTransferERC20.Contract.MAXOPERATOR(&_BridgeTransferERC20.CallOpts)
  8969  }
  8970  
  8971  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
  8972  //
  8973  // Solidity: function MAX_OPERATOR() view returns(uint64)
  8974  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) MAXOPERATOR() (uint64, error) {
  8975  	return _BridgeTransferERC20.Contract.MAXOPERATOR(&_BridgeTransferERC20.CallOpts)
  8976  }
  8977  
  8978  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
  8979  //
  8980  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
  8981  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) {
  8982  	var (
  8983  		ret0 = new(bool)
  8984  	)
  8985  	out := ret0
  8986  	err := _BridgeTransferERC20.contract.Call(opts, out, "closedValueTransferVotes", arg0)
  8987  	return *ret0, err
  8988  }
  8989  
  8990  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
  8991  //
  8992  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
  8993  func (_BridgeTransferERC20 *BridgeTransferERC20Session) ClosedValueTransferVotes(arg0 uint64) (bool, error) {
  8994  	return _BridgeTransferERC20.Contract.ClosedValueTransferVotes(&_BridgeTransferERC20.CallOpts, arg0)
  8995  }
  8996  
  8997  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
  8998  //
  8999  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
  9000  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) {
  9001  	return _BridgeTransferERC20.Contract.ClosedValueTransferVotes(&_BridgeTransferERC20.CallOpts, arg0)
  9002  }
  9003  
  9004  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
  9005  //
  9006  // Solidity: function configurationNonce() view returns(uint64)
  9007  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) {
  9008  	var (
  9009  		ret0 = new(uint64)
  9010  	)
  9011  	out := ret0
  9012  	err := _BridgeTransferERC20.contract.Call(opts, out, "configurationNonce")
  9013  	return *ret0, err
  9014  }
  9015  
  9016  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
  9017  //
  9018  // Solidity: function configurationNonce() view returns(uint64)
  9019  func (_BridgeTransferERC20 *BridgeTransferERC20Session) ConfigurationNonce() (uint64, error) {
  9020  	return _BridgeTransferERC20.Contract.ConfigurationNonce(&_BridgeTransferERC20.CallOpts)
  9021  }
  9022  
  9023  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
  9024  //
  9025  // Solidity: function configurationNonce() view returns(uint64)
  9026  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) ConfigurationNonce() (uint64, error) {
  9027  	return _BridgeTransferERC20.Contract.ConfigurationNonce(&_BridgeTransferERC20.CallOpts)
  9028  }
  9029  
  9030  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
  9031  //
  9032  // Solidity: function feeOfERC20(address ) view returns(uint256)
  9033  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
  9034  	var (
  9035  		ret0 = new(*big.Int)
  9036  	)
  9037  	out := ret0
  9038  	err := _BridgeTransferERC20.contract.Call(opts, out, "feeOfERC20", arg0)
  9039  	return *ret0, err
  9040  }
  9041  
  9042  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
  9043  //
  9044  // Solidity: function feeOfERC20(address ) view returns(uint256)
  9045  func (_BridgeTransferERC20 *BridgeTransferERC20Session) FeeOfERC20(arg0 common.Address) (*big.Int, error) {
  9046  	return _BridgeTransferERC20.Contract.FeeOfERC20(&_BridgeTransferERC20.CallOpts, arg0)
  9047  }
  9048  
  9049  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
  9050  //
  9051  // Solidity: function feeOfERC20(address ) view returns(uint256)
  9052  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) {
  9053  	return _BridgeTransferERC20.Contract.FeeOfERC20(&_BridgeTransferERC20.CallOpts, arg0)
  9054  }
  9055  
  9056  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
  9057  //
  9058  // Solidity: function feeOfKLAY() view returns(uint256)
  9059  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) {
  9060  	var (
  9061  		ret0 = new(*big.Int)
  9062  	)
  9063  	out := ret0
  9064  	err := _BridgeTransferERC20.contract.Call(opts, out, "feeOfKLAY")
  9065  	return *ret0, err
  9066  }
  9067  
  9068  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
  9069  //
  9070  // Solidity: function feeOfKLAY() view returns(uint256)
  9071  func (_BridgeTransferERC20 *BridgeTransferERC20Session) FeeOfKLAY() (*big.Int, error) {
  9072  	return _BridgeTransferERC20.Contract.FeeOfKLAY(&_BridgeTransferERC20.CallOpts)
  9073  }
  9074  
  9075  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
  9076  //
  9077  // Solidity: function feeOfKLAY() view returns(uint256)
  9078  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) FeeOfKLAY() (*big.Int, error) {
  9079  	return _BridgeTransferERC20.Contract.FeeOfKLAY(&_BridgeTransferERC20.CallOpts)
  9080  }
  9081  
  9082  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
  9083  //
  9084  // Solidity: function feeReceiver() view returns(address)
  9085  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) {
  9086  	var (
  9087  		ret0 = new(common.Address)
  9088  	)
  9089  	out := ret0
  9090  	err := _BridgeTransferERC20.contract.Call(opts, out, "feeReceiver")
  9091  	return *ret0, err
  9092  }
  9093  
  9094  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
  9095  //
  9096  // Solidity: function feeReceiver() view returns(address)
  9097  func (_BridgeTransferERC20 *BridgeTransferERC20Session) FeeReceiver() (common.Address, error) {
  9098  	return _BridgeTransferERC20.Contract.FeeReceiver(&_BridgeTransferERC20.CallOpts)
  9099  }
  9100  
  9101  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
  9102  //
  9103  // Solidity: function feeReceiver() view returns(address)
  9104  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) FeeReceiver() (common.Address, error) {
  9105  	return _BridgeTransferERC20.Contract.FeeReceiver(&_BridgeTransferERC20.CallOpts)
  9106  }
  9107  
  9108  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
  9109  //
  9110  // Solidity: function getOperatorList() view returns(address[])
  9111  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) {
  9112  	var (
  9113  		ret0 = new([]common.Address)
  9114  	)
  9115  	out := ret0
  9116  	err := _BridgeTransferERC20.contract.Call(opts, out, "getOperatorList")
  9117  	return *ret0, err
  9118  }
  9119  
  9120  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
  9121  //
  9122  // Solidity: function getOperatorList() view returns(address[])
  9123  func (_BridgeTransferERC20 *BridgeTransferERC20Session) GetOperatorList() ([]common.Address, error) {
  9124  	return _BridgeTransferERC20.Contract.GetOperatorList(&_BridgeTransferERC20.CallOpts)
  9125  }
  9126  
  9127  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
  9128  //
  9129  // Solidity: function getOperatorList() view returns(address[])
  9130  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) GetOperatorList() ([]common.Address, error) {
  9131  	return _BridgeTransferERC20.Contract.GetOperatorList(&_BridgeTransferERC20.CallOpts)
  9132  }
  9133  
  9134  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
  9135  //
  9136  // Solidity: function getRegisteredTokenList() view returns(address[])
  9137  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) {
  9138  	var (
  9139  		ret0 = new([]common.Address)
  9140  	)
  9141  	out := ret0
  9142  	err := _BridgeTransferERC20.contract.Call(opts, out, "getRegisteredTokenList")
  9143  	return *ret0, err
  9144  }
  9145  
  9146  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
  9147  //
  9148  // Solidity: function getRegisteredTokenList() view returns(address[])
  9149  func (_BridgeTransferERC20 *BridgeTransferERC20Session) GetRegisteredTokenList() ([]common.Address, error) {
  9150  	return _BridgeTransferERC20.Contract.GetRegisteredTokenList(&_BridgeTransferERC20.CallOpts)
  9151  }
  9152  
  9153  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
  9154  //
  9155  // Solidity: function getRegisteredTokenList() view returns(address[])
  9156  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) GetRegisteredTokenList() ([]common.Address, error) {
  9157  	return _BridgeTransferERC20.Contract.GetRegisteredTokenList(&_BridgeTransferERC20.CallOpts)
  9158  }
  9159  
  9160  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
  9161  //
  9162  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
  9163  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) {
  9164  	var (
  9165  		ret0 = new(uint64)
  9166  	)
  9167  	out := ret0
  9168  	err := _BridgeTransferERC20.contract.Call(opts, out, "handleNoncesToBlockNums", arg0)
  9169  	return *ret0, err
  9170  }
  9171  
  9172  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
  9173  //
  9174  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
  9175  func (_BridgeTransferERC20 *BridgeTransferERC20Session) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) {
  9176  	return _BridgeTransferERC20.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC20.CallOpts, arg0)
  9177  }
  9178  
  9179  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
  9180  //
  9181  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
  9182  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) {
  9183  	return _BridgeTransferERC20.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC20.CallOpts, arg0)
  9184  }
  9185  
  9186  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
  9187  //
  9188  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
  9189  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) {
  9190  	var (
  9191  		ret0 = new(bool)
  9192  	)
  9193  	out := ret0
  9194  	err := _BridgeTransferERC20.contract.Call(opts, out, "handledRequestTx", arg0)
  9195  	return *ret0, err
  9196  }
  9197  
  9198  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
  9199  //
  9200  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
  9201  func (_BridgeTransferERC20 *BridgeTransferERC20Session) HandledRequestTx(arg0 [32]byte) (bool, error) {
  9202  	return _BridgeTransferERC20.Contract.HandledRequestTx(&_BridgeTransferERC20.CallOpts, arg0)
  9203  }
  9204  
  9205  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
  9206  //
  9207  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
  9208  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) {
  9209  	return _BridgeTransferERC20.Contract.HandledRequestTx(&_BridgeTransferERC20.CallOpts, arg0)
  9210  }
  9211  
  9212  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
  9213  //
  9214  // Solidity: function indexOfTokens(address ) view returns(uint256)
  9215  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
  9216  	var (
  9217  		ret0 = new(*big.Int)
  9218  	)
  9219  	out := ret0
  9220  	err := _BridgeTransferERC20.contract.Call(opts, out, "indexOfTokens", arg0)
  9221  	return *ret0, err
  9222  }
  9223  
  9224  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
  9225  //
  9226  // Solidity: function indexOfTokens(address ) view returns(uint256)
  9227  func (_BridgeTransferERC20 *BridgeTransferERC20Session) IndexOfTokens(arg0 common.Address) (*big.Int, error) {
  9228  	return _BridgeTransferERC20.Contract.IndexOfTokens(&_BridgeTransferERC20.CallOpts, arg0)
  9229  }
  9230  
  9231  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
  9232  //
  9233  // Solidity: function indexOfTokens(address ) view returns(uint256)
  9234  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) {
  9235  	return _BridgeTransferERC20.Contract.IndexOfTokens(&_BridgeTransferERC20.CallOpts, arg0)
  9236  }
  9237  
  9238  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  9239  //
  9240  // Solidity: function isOwner() view returns(bool)
  9241  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) IsOwner(opts *bind.CallOpts) (bool, error) {
  9242  	var (
  9243  		ret0 = new(bool)
  9244  	)
  9245  	out := ret0
  9246  	err := _BridgeTransferERC20.contract.Call(opts, out, "isOwner")
  9247  	return *ret0, err
  9248  }
  9249  
  9250  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  9251  //
  9252  // Solidity: function isOwner() view returns(bool)
  9253  func (_BridgeTransferERC20 *BridgeTransferERC20Session) IsOwner() (bool, error) {
  9254  	return _BridgeTransferERC20.Contract.IsOwner(&_BridgeTransferERC20.CallOpts)
  9255  }
  9256  
  9257  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  9258  //
  9259  // Solidity: function isOwner() view returns(bool)
  9260  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) IsOwner() (bool, error) {
  9261  	return _BridgeTransferERC20.Contract.IsOwner(&_BridgeTransferERC20.CallOpts)
  9262  }
  9263  
  9264  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
  9265  //
  9266  // Solidity: function isRunning() view returns(bool)
  9267  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) IsRunning(opts *bind.CallOpts) (bool, error) {
  9268  	var (
  9269  		ret0 = new(bool)
  9270  	)
  9271  	out := ret0
  9272  	err := _BridgeTransferERC20.contract.Call(opts, out, "isRunning")
  9273  	return *ret0, err
  9274  }
  9275  
  9276  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
  9277  //
  9278  // Solidity: function isRunning() view returns(bool)
  9279  func (_BridgeTransferERC20 *BridgeTransferERC20Session) IsRunning() (bool, error) {
  9280  	return _BridgeTransferERC20.Contract.IsRunning(&_BridgeTransferERC20.CallOpts)
  9281  }
  9282  
  9283  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
  9284  //
  9285  // Solidity: function isRunning() view returns(bool)
  9286  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) IsRunning() (bool, error) {
  9287  	return _BridgeTransferERC20.Contract.IsRunning(&_BridgeTransferERC20.CallOpts)
  9288  }
  9289  
  9290  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
  9291  //
  9292  // Solidity: function lockedTokens(address ) view returns(bool)
  9293  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
  9294  	var (
  9295  		ret0 = new(bool)
  9296  	)
  9297  	out := ret0
  9298  	err := _BridgeTransferERC20.contract.Call(opts, out, "lockedTokens", arg0)
  9299  	return *ret0, err
  9300  }
  9301  
  9302  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
  9303  //
  9304  // Solidity: function lockedTokens(address ) view returns(bool)
  9305  func (_BridgeTransferERC20 *BridgeTransferERC20Session) LockedTokens(arg0 common.Address) (bool, error) {
  9306  	return _BridgeTransferERC20.Contract.LockedTokens(&_BridgeTransferERC20.CallOpts, arg0)
  9307  }
  9308  
  9309  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
  9310  //
  9311  // Solidity: function lockedTokens(address ) view returns(bool)
  9312  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) LockedTokens(arg0 common.Address) (bool, error) {
  9313  	return _BridgeTransferERC20.Contract.LockedTokens(&_BridgeTransferERC20.CallOpts, arg0)
  9314  }
  9315  
  9316  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
  9317  //
  9318  // Solidity: function lowerHandleNonce() view returns(uint64)
  9319  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) {
  9320  	var (
  9321  		ret0 = new(uint64)
  9322  	)
  9323  	out := ret0
  9324  	err := _BridgeTransferERC20.contract.Call(opts, out, "lowerHandleNonce")
  9325  	return *ret0, err
  9326  }
  9327  
  9328  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
  9329  //
  9330  // Solidity: function lowerHandleNonce() view returns(uint64)
  9331  func (_BridgeTransferERC20 *BridgeTransferERC20Session) LowerHandleNonce() (uint64, error) {
  9332  	return _BridgeTransferERC20.Contract.LowerHandleNonce(&_BridgeTransferERC20.CallOpts)
  9333  }
  9334  
  9335  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
  9336  //
  9337  // Solidity: function lowerHandleNonce() view returns(uint64)
  9338  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) LowerHandleNonce() (uint64, error) {
  9339  	return _BridgeTransferERC20.Contract.LowerHandleNonce(&_BridgeTransferERC20.CallOpts)
  9340  }
  9341  
  9342  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
  9343  //
  9344  // Solidity: function modeMintBurn() view returns(bool)
  9345  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) ModeMintBurn(opts *bind.CallOpts) (bool, error) {
  9346  	var (
  9347  		ret0 = new(bool)
  9348  	)
  9349  	out := ret0
  9350  	err := _BridgeTransferERC20.contract.Call(opts, out, "modeMintBurn")
  9351  	return *ret0, err
  9352  }
  9353  
  9354  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
  9355  //
  9356  // Solidity: function modeMintBurn() view returns(bool)
  9357  func (_BridgeTransferERC20 *BridgeTransferERC20Session) ModeMintBurn() (bool, error) {
  9358  	return _BridgeTransferERC20.Contract.ModeMintBurn(&_BridgeTransferERC20.CallOpts)
  9359  }
  9360  
  9361  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
  9362  //
  9363  // Solidity: function modeMintBurn() view returns(bool)
  9364  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) ModeMintBurn() (bool, error) {
  9365  	return _BridgeTransferERC20.Contract.ModeMintBurn(&_BridgeTransferERC20.CallOpts)
  9366  }
  9367  
  9368  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
  9369  //
  9370  // Solidity: function operatorList(uint256 ) view returns(address)
  9371  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
  9372  	var (
  9373  		ret0 = new(common.Address)
  9374  	)
  9375  	out := ret0
  9376  	err := _BridgeTransferERC20.contract.Call(opts, out, "operatorList", arg0)
  9377  	return *ret0, err
  9378  }
  9379  
  9380  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
  9381  //
  9382  // Solidity: function operatorList(uint256 ) view returns(address)
  9383  func (_BridgeTransferERC20 *BridgeTransferERC20Session) OperatorList(arg0 *big.Int) (common.Address, error) {
  9384  	return _BridgeTransferERC20.Contract.OperatorList(&_BridgeTransferERC20.CallOpts, arg0)
  9385  }
  9386  
  9387  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
  9388  //
  9389  // Solidity: function operatorList(uint256 ) view returns(address)
  9390  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) OperatorList(arg0 *big.Int) (common.Address, error) {
  9391  	return _BridgeTransferERC20.Contract.OperatorList(&_BridgeTransferERC20.CallOpts, arg0)
  9392  }
  9393  
  9394  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
  9395  //
  9396  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
  9397  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) {
  9398  	var (
  9399  		ret0 = new(uint8)
  9400  	)
  9401  	out := ret0
  9402  	err := _BridgeTransferERC20.contract.Call(opts, out, "operatorThresholds", arg0)
  9403  	return *ret0, err
  9404  }
  9405  
  9406  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
  9407  //
  9408  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
  9409  func (_BridgeTransferERC20 *BridgeTransferERC20Session) OperatorThresholds(arg0 uint8) (uint8, error) {
  9410  	return _BridgeTransferERC20.Contract.OperatorThresholds(&_BridgeTransferERC20.CallOpts, arg0)
  9411  }
  9412  
  9413  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
  9414  //
  9415  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
  9416  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) OperatorThresholds(arg0 uint8) (uint8, error) {
  9417  	return _BridgeTransferERC20.Contract.OperatorThresholds(&_BridgeTransferERC20.CallOpts, arg0)
  9418  }
  9419  
  9420  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
  9421  //
  9422  // Solidity: function operators(address ) view returns(bool)
  9423  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
  9424  	var (
  9425  		ret0 = new(bool)
  9426  	)
  9427  	out := ret0
  9428  	err := _BridgeTransferERC20.contract.Call(opts, out, "operators", arg0)
  9429  	return *ret0, err
  9430  }
  9431  
  9432  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
  9433  //
  9434  // Solidity: function operators(address ) view returns(bool)
  9435  func (_BridgeTransferERC20 *BridgeTransferERC20Session) Operators(arg0 common.Address) (bool, error) {
  9436  	return _BridgeTransferERC20.Contract.Operators(&_BridgeTransferERC20.CallOpts, arg0)
  9437  }
  9438  
  9439  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
  9440  //
  9441  // Solidity: function operators(address ) view returns(bool)
  9442  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) Operators(arg0 common.Address) (bool, error) {
  9443  	return _BridgeTransferERC20.Contract.Operators(&_BridgeTransferERC20.CallOpts, arg0)
  9444  }
  9445  
  9446  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  9447  //
  9448  // Solidity: function owner() view returns(address)
  9449  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) Owner(opts *bind.CallOpts) (common.Address, error) {
  9450  	var (
  9451  		ret0 = new(common.Address)
  9452  	)
  9453  	out := ret0
  9454  	err := _BridgeTransferERC20.contract.Call(opts, out, "owner")
  9455  	return *ret0, err
  9456  }
  9457  
  9458  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  9459  //
  9460  // Solidity: function owner() view returns(address)
  9461  func (_BridgeTransferERC20 *BridgeTransferERC20Session) Owner() (common.Address, error) {
  9462  	return _BridgeTransferERC20.Contract.Owner(&_BridgeTransferERC20.CallOpts)
  9463  }
  9464  
  9465  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  9466  //
  9467  // Solidity: function owner() view returns(address)
  9468  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) Owner() (common.Address, error) {
  9469  	return _BridgeTransferERC20.Contract.Owner(&_BridgeTransferERC20.CallOpts)
  9470  }
  9471  
  9472  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
  9473  //
  9474  // Solidity: function recoveryBlockNumber() view returns(uint64)
  9475  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) {
  9476  	var (
  9477  		ret0 = new(uint64)
  9478  	)
  9479  	out := ret0
  9480  	err := _BridgeTransferERC20.contract.Call(opts, out, "recoveryBlockNumber")
  9481  	return *ret0, err
  9482  }
  9483  
  9484  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
  9485  //
  9486  // Solidity: function recoveryBlockNumber() view returns(uint64)
  9487  func (_BridgeTransferERC20 *BridgeTransferERC20Session) RecoveryBlockNumber() (uint64, error) {
  9488  	return _BridgeTransferERC20.Contract.RecoveryBlockNumber(&_BridgeTransferERC20.CallOpts)
  9489  }
  9490  
  9491  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
  9492  //
  9493  // Solidity: function recoveryBlockNumber() view returns(uint64)
  9494  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RecoveryBlockNumber() (uint64, error) {
  9495  	return _BridgeTransferERC20.Contract.RecoveryBlockNumber(&_BridgeTransferERC20.CallOpts)
  9496  }
  9497  
  9498  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
  9499  //
  9500  // Solidity: function registeredTokenList(uint256 ) view returns(address)
  9501  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
  9502  	var (
  9503  		ret0 = new(common.Address)
  9504  	)
  9505  	out := ret0
  9506  	err := _BridgeTransferERC20.contract.Call(opts, out, "registeredTokenList", arg0)
  9507  	return *ret0, err
  9508  }
  9509  
  9510  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
  9511  //
  9512  // Solidity: function registeredTokenList(uint256 ) view returns(address)
  9513  func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisteredTokenList(arg0 *big.Int) (common.Address, error) {
  9514  	return _BridgeTransferERC20.Contract.RegisteredTokenList(&_BridgeTransferERC20.CallOpts, arg0)
  9515  }
  9516  
  9517  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
  9518  //
  9519  // Solidity: function registeredTokenList(uint256 ) view returns(address)
  9520  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) {
  9521  	return _BridgeTransferERC20.Contract.RegisteredTokenList(&_BridgeTransferERC20.CallOpts, arg0)
  9522  }
  9523  
  9524  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
  9525  //
  9526  // Solidity: function registeredTokens(address ) view returns(address)
  9527  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) {
  9528  	var (
  9529  		ret0 = new(common.Address)
  9530  	)
  9531  	out := ret0
  9532  	err := _BridgeTransferERC20.contract.Call(opts, out, "registeredTokens", arg0)
  9533  	return *ret0, err
  9534  }
  9535  
  9536  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
  9537  //
  9538  // Solidity: function registeredTokens(address ) view returns(address)
  9539  func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisteredTokens(arg0 common.Address) (common.Address, error) {
  9540  	return _BridgeTransferERC20.Contract.RegisteredTokens(&_BridgeTransferERC20.CallOpts, arg0)
  9541  }
  9542  
  9543  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
  9544  //
  9545  // Solidity: function registeredTokens(address ) view returns(address)
  9546  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RegisteredTokens(arg0 common.Address) (common.Address, error) {
  9547  	return _BridgeTransferERC20.Contract.RegisteredTokens(&_BridgeTransferERC20.CallOpts, arg0)
  9548  }
  9549  
  9550  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
  9551  //
  9552  // Solidity: function requestNonce() view returns(uint64)
  9553  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RequestNonce(opts *bind.CallOpts) (uint64, error) {
  9554  	var (
  9555  		ret0 = new(uint64)
  9556  	)
  9557  	out := ret0
  9558  	err := _BridgeTransferERC20.contract.Call(opts, out, "requestNonce")
  9559  	return *ret0, err
  9560  }
  9561  
  9562  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
  9563  //
  9564  // Solidity: function requestNonce() view returns(uint64)
  9565  func (_BridgeTransferERC20 *BridgeTransferERC20Session) RequestNonce() (uint64, error) {
  9566  	return _BridgeTransferERC20.Contract.RequestNonce(&_BridgeTransferERC20.CallOpts)
  9567  }
  9568  
  9569  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
  9570  //
  9571  // Solidity: function requestNonce() view returns(uint64)
  9572  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RequestNonce() (uint64, error) {
  9573  	return _BridgeTransferERC20.Contract.RequestNonce(&_BridgeTransferERC20.CallOpts)
  9574  }
  9575  
  9576  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
  9577  //
  9578  // Solidity: function upperHandleNonce() view returns(uint64)
  9579  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) {
  9580  	var (
  9581  		ret0 = new(uint64)
  9582  	)
  9583  	out := ret0
  9584  	err := _BridgeTransferERC20.contract.Call(opts, out, "upperHandleNonce")
  9585  	return *ret0, err
  9586  }
  9587  
  9588  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
  9589  //
  9590  // Solidity: function upperHandleNonce() view returns(uint64)
  9591  func (_BridgeTransferERC20 *BridgeTransferERC20Session) UpperHandleNonce() (uint64, error) {
  9592  	return _BridgeTransferERC20.Contract.UpperHandleNonce(&_BridgeTransferERC20.CallOpts)
  9593  }
  9594  
  9595  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
  9596  //
  9597  // Solidity: function upperHandleNonce() view returns(uint64)
  9598  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) UpperHandleNonce() (uint64, error) {
  9599  	return _BridgeTransferERC20.Contract.UpperHandleNonce(&_BridgeTransferERC20.CallOpts)
  9600  }
  9601  
  9602  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  9603  //
  9604  // Solidity: function deregisterOperator(address _operator) returns()
  9605  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
  9606  	return _BridgeTransferERC20.contract.Transact(opts, "deregisterOperator", _operator)
  9607  }
  9608  
  9609  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  9610  //
  9611  // Solidity: function deregisterOperator(address _operator) returns()
  9612  func (_BridgeTransferERC20 *BridgeTransferERC20Session) DeregisterOperator(_operator common.Address) (*types.Transaction, error) {
  9613  	return _BridgeTransferERC20.Contract.DeregisterOperator(&_BridgeTransferERC20.TransactOpts, _operator)
  9614  }
  9615  
  9616  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  9617  //
  9618  // Solidity: function deregisterOperator(address _operator) returns()
  9619  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) {
  9620  	return _BridgeTransferERC20.Contract.DeregisterOperator(&_BridgeTransferERC20.TransactOpts, _operator)
  9621  }
  9622  
  9623  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
  9624  //
  9625  // Solidity: function deregisterToken(address _token) returns()
  9626  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) DeregisterToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
  9627  	return _BridgeTransferERC20.contract.Transact(opts, "deregisterToken", _token)
  9628  }
  9629  
  9630  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
  9631  //
  9632  // Solidity: function deregisterToken(address _token) returns()
  9633  func (_BridgeTransferERC20 *BridgeTransferERC20Session) DeregisterToken(_token common.Address) (*types.Transaction, error) {
  9634  	return _BridgeTransferERC20.Contract.DeregisterToken(&_BridgeTransferERC20.TransactOpts, _token)
  9635  }
  9636  
  9637  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
  9638  //
  9639  // Solidity: function deregisterToken(address _token) returns()
  9640  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) DeregisterToken(_token common.Address) (*types.Transaction, error) {
  9641  	return _BridgeTransferERC20.Contract.DeregisterToken(&_BridgeTransferERC20.TransactOpts, _token)
  9642  }
  9643  
  9644  // HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae.
  9645  //
  9646  // Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns()
  9647  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) HandleERC20Transfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) {
  9648  	return _BridgeTransferERC20.contract.Transact(opts, "handleERC20Transfer", _requestTxHash, _from, _to, _tokenAddress, _value, _requestedNonce, _requestedBlockNumber, _extraData)
  9649  }
  9650  
  9651  // HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae.
  9652  //
  9653  // Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns()
  9654  func (_BridgeTransferERC20 *BridgeTransferERC20Session) HandleERC20Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) {
  9655  	return _BridgeTransferERC20.Contract.HandleERC20Transfer(&_BridgeTransferERC20.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _value, _requestedNonce, _requestedBlockNumber, _extraData)
  9656  }
  9657  
  9658  // HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae.
  9659  //
  9660  // Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns()
  9661  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) HandleERC20Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) {
  9662  	return _BridgeTransferERC20.Contract.HandleERC20Transfer(&_BridgeTransferERC20.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _value, _requestedNonce, _requestedBlockNumber, _extraData)
  9663  }
  9664  
  9665  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
  9666  //
  9667  // Solidity: function lockToken(address _token) returns()
  9668  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) LockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
  9669  	return _BridgeTransferERC20.contract.Transact(opts, "lockToken", _token)
  9670  }
  9671  
  9672  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
  9673  //
  9674  // Solidity: function lockToken(address _token) returns()
  9675  func (_BridgeTransferERC20 *BridgeTransferERC20Session) LockToken(_token common.Address) (*types.Transaction, error) {
  9676  	return _BridgeTransferERC20.Contract.LockToken(&_BridgeTransferERC20.TransactOpts, _token)
  9677  }
  9678  
  9679  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
  9680  //
  9681  // Solidity: function lockToken(address _token) returns()
  9682  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) LockToken(_token common.Address) (*types.Transaction, error) {
  9683  	return _BridgeTransferERC20.Contract.LockToken(&_BridgeTransferERC20.TransactOpts, _token)
  9684  }
  9685  
  9686  // OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53.
  9687  //
  9688  // Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
  9689  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) OnERC20Received(opts *bind.TransactOpts, _from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  9690  	return _BridgeTransferERC20.contract.Transact(opts, "onERC20Received", _from, _to, _value, _feeLimit, _extraData)
  9691  }
  9692  
  9693  // OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53.
  9694  //
  9695  // Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
  9696  func (_BridgeTransferERC20 *BridgeTransferERC20Session) OnERC20Received(_from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  9697  	return _BridgeTransferERC20.Contract.OnERC20Received(&_BridgeTransferERC20.TransactOpts, _from, _to, _value, _feeLimit, _extraData)
  9698  }
  9699  
  9700  // OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53.
  9701  //
  9702  // Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
  9703  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) OnERC20Received(_from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  9704  	return _BridgeTransferERC20.Contract.OnERC20Received(&_BridgeTransferERC20.TransactOpts, _from, _to, _value, _feeLimit, _extraData)
  9705  }
  9706  
  9707  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  9708  //
  9709  // Solidity: function registerOperator(address _operator) returns()
  9710  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
  9711  	return _BridgeTransferERC20.contract.Transact(opts, "registerOperator", _operator)
  9712  }
  9713  
  9714  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  9715  //
  9716  // Solidity: function registerOperator(address _operator) returns()
  9717  func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisterOperator(_operator common.Address) (*types.Transaction, error) {
  9718  	return _BridgeTransferERC20.Contract.RegisterOperator(&_BridgeTransferERC20.TransactOpts, _operator)
  9719  }
  9720  
  9721  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  9722  //
  9723  // Solidity: function registerOperator(address _operator) returns()
  9724  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) {
  9725  	return _BridgeTransferERC20.Contract.RegisterOperator(&_BridgeTransferERC20.TransactOpts, _operator)
  9726  }
  9727  
  9728  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
  9729  //
  9730  // Solidity: function registerToken(address _token, address _cToken) returns()
  9731  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RegisterToken(opts *bind.TransactOpts, _token common.Address, _cToken common.Address) (*types.Transaction, error) {
  9732  	return _BridgeTransferERC20.contract.Transact(opts, "registerToken", _token, _cToken)
  9733  }
  9734  
  9735  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
  9736  //
  9737  // Solidity: function registerToken(address _token, address _cToken) returns()
  9738  func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) {
  9739  	return _BridgeTransferERC20.Contract.RegisterToken(&_BridgeTransferERC20.TransactOpts, _token, _cToken)
  9740  }
  9741  
  9742  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
  9743  //
  9744  // Solidity: function registerToken(address _token, address _cToken) returns()
  9745  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) {
  9746  	return _BridgeTransferERC20.Contract.RegisterToken(&_BridgeTransferERC20.TransactOpts, _token, _cToken)
  9747  }
  9748  
  9749  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  9750  //
  9751  // Solidity: function renounceOwnership() returns()
  9752  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  9753  	return _BridgeTransferERC20.contract.Transact(opts, "renounceOwnership")
  9754  }
  9755  
  9756  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  9757  //
  9758  // Solidity: function renounceOwnership() returns()
  9759  func (_BridgeTransferERC20 *BridgeTransferERC20Session) RenounceOwnership() (*types.Transaction, error) {
  9760  	return _BridgeTransferERC20.Contract.RenounceOwnership(&_BridgeTransferERC20.TransactOpts)
  9761  }
  9762  
  9763  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  9764  //
  9765  // Solidity: function renounceOwnership() returns()
  9766  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RenounceOwnership() (*types.Transaction, error) {
  9767  	return _BridgeTransferERC20.Contract.RenounceOwnership(&_BridgeTransferERC20.TransactOpts)
  9768  }
  9769  
  9770  // RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54.
  9771  //
  9772  // Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
  9773  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RequestERC20Transfer(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  9774  	return _BridgeTransferERC20.contract.Transact(opts, "requestERC20Transfer", _tokenAddress, _to, _value, _feeLimit, _extraData)
  9775  }
  9776  
  9777  // RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54.
  9778  //
  9779  // Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
  9780  func (_BridgeTransferERC20 *BridgeTransferERC20Session) RequestERC20Transfer(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  9781  	return _BridgeTransferERC20.Contract.RequestERC20Transfer(&_BridgeTransferERC20.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _extraData)
  9782  }
  9783  
  9784  // RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54.
  9785  //
  9786  // Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
  9787  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RequestERC20Transfer(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  9788  	return _BridgeTransferERC20.Contract.RequestERC20Transfer(&_BridgeTransferERC20.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _extraData)
  9789  }
  9790  
  9791  // SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c.
  9792  //
  9793  // Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns()
  9794  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) SetERC20Fee(opts *bind.TransactOpts, _token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) {
  9795  	return _BridgeTransferERC20.contract.Transact(opts, "setERC20Fee", _token, _fee, _requestNonce)
  9796  }
  9797  
  9798  // SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c.
  9799  //
  9800  // Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns()
  9801  func (_BridgeTransferERC20 *BridgeTransferERC20Session) SetERC20Fee(_token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) {
  9802  	return _BridgeTransferERC20.Contract.SetERC20Fee(&_BridgeTransferERC20.TransactOpts, _token, _fee, _requestNonce)
  9803  }
  9804  
  9805  // SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c.
  9806  //
  9807  // Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns()
  9808  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) SetERC20Fee(_token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) {
  9809  	return _BridgeTransferERC20.Contract.SetERC20Fee(&_BridgeTransferERC20.TransactOpts, _token, _fee, _requestNonce)
  9810  }
  9811  
  9812  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
  9813  //
  9814  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
  9815  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) {
  9816  	return _BridgeTransferERC20.contract.Transact(opts, "setFeeReceiver", _feeReceiver)
  9817  }
  9818  
  9819  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
  9820  //
  9821  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
  9822  func (_BridgeTransferERC20 *BridgeTransferERC20Session) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) {
  9823  	return _BridgeTransferERC20.Contract.SetFeeReceiver(&_BridgeTransferERC20.TransactOpts, _feeReceiver)
  9824  }
  9825  
  9826  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
  9827  //
  9828  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
  9829  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) {
  9830  	return _BridgeTransferERC20.Contract.SetFeeReceiver(&_BridgeTransferERC20.TransactOpts, _feeReceiver)
  9831  }
  9832  
  9833  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  9834  //
  9835  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  9836  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) {
  9837  	return _BridgeTransferERC20.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold)
  9838  }
  9839  
  9840  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  9841  //
  9842  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  9843  func (_BridgeTransferERC20 *BridgeTransferERC20Session) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) {
  9844  	return _BridgeTransferERC20.Contract.SetOperatorThreshold(&_BridgeTransferERC20.TransactOpts, _voteType, _threshold)
  9845  }
  9846  
  9847  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  9848  //
  9849  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  9850  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) {
  9851  	return _BridgeTransferERC20.Contract.SetOperatorThreshold(&_BridgeTransferERC20.TransactOpts, _voteType, _threshold)
  9852  }
  9853  
  9854  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
  9855  //
  9856  // Solidity: function start(bool _status) returns()
  9857  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) {
  9858  	return _BridgeTransferERC20.contract.Transact(opts, "start", _status)
  9859  }
  9860  
  9861  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
  9862  //
  9863  // Solidity: function start(bool _status) returns()
  9864  func (_BridgeTransferERC20 *BridgeTransferERC20Session) Start(_status bool) (*types.Transaction, error) {
  9865  	return _BridgeTransferERC20.Contract.Start(&_BridgeTransferERC20.TransactOpts, _status)
  9866  }
  9867  
  9868  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
  9869  //
  9870  // Solidity: function start(bool _status) returns()
  9871  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) Start(_status bool) (*types.Transaction, error) {
  9872  	return _BridgeTransferERC20.Contract.Start(&_BridgeTransferERC20.TransactOpts, _status)
  9873  }
  9874  
  9875  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  9876  //
  9877  // Solidity: function transferOwnership(address newOwner) returns()
  9878  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  9879  	return _BridgeTransferERC20.contract.Transact(opts, "transferOwnership", newOwner)
  9880  }
  9881  
  9882  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  9883  //
  9884  // Solidity: function transferOwnership(address newOwner) returns()
  9885  func (_BridgeTransferERC20 *BridgeTransferERC20Session) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  9886  	return _BridgeTransferERC20.Contract.TransferOwnership(&_BridgeTransferERC20.TransactOpts, newOwner)
  9887  }
  9888  
  9889  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  9890  //
  9891  // Solidity: function transferOwnership(address newOwner) returns()
  9892  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  9893  	return _BridgeTransferERC20.Contract.TransferOwnership(&_BridgeTransferERC20.TransactOpts, newOwner)
  9894  }
  9895  
  9896  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
  9897  //
  9898  // Solidity: function unlockToken(address _token) returns()
  9899  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) UnlockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
  9900  	return _BridgeTransferERC20.contract.Transact(opts, "unlockToken", _token)
  9901  }
  9902  
  9903  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
  9904  //
  9905  // Solidity: function unlockToken(address _token) returns()
  9906  func (_BridgeTransferERC20 *BridgeTransferERC20Session) UnlockToken(_token common.Address) (*types.Transaction, error) {
  9907  	return _BridgeTransferERC20.Contract.UnlockToken(&_BridgeTransferERC20.TransactOpts, _token)
  9908  }
  9909  
  9910  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
  9911  //
  9912  // Solidity: function unlockToken(address _token) returns()
  9913  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) UnlockToken(_token common.Address) (*types.Transaction, error) {
  9914  	return _BridgeTransferERC20.Contract.UnlockToken(&_BridgeTransferERC20.TransactOpts, _token)
  9915  }
  9916  
  9917  // BridgeTransferERC20ERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeTransferERC20 contract.
  9918  type BridgeTransferERC20ERC20FeeChangedIterator struct {
  9919  	Event *BridgeTransferERC20ERC20FeeChanged // Event containing the contract specifics and raw log
  9920  
  9921  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9922  	event    string              // Event name to use for unpacking event data
  9923  
  9924  	logs chan types.Log      // Log channel receiving the found contract events
  9925  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  9926  	done bool                // Whether the subscription completed delivering logs
  9927  	fail error               // Occurred error to stop iteration
  9928  }
  9929  
  9930  // Next advances the iterator to the subsequent event, returning whether there
  9931  // are any more events found. In case of a retrieval or parsing error, false is
  9932  // returned and Error() can be queried for the exact failure.
  9933  func (it *BridgeTransferERC20ERC20FeeChangedIterator) Next() bool {
  9934  	// If the iterator failed, stop iterating
  9935  	if it.fail != nil {
  9936  		return false
  9937  	}
  9938  	// If the iterator completed, deliver directly whatever's available
  9939  	if it.done {
  9940  		select {
  9941  		case log := <-it.logs:
  9942  			it.Event = new(BridgeTransferERC20ERC20FeeChanged)
  9943  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9944  				it.fail = err
  9945  				return false
  9946  			}
  9947  			it.Event.Raw = log
  9948  			return true
  9949  
  9950  		default:
  9951  			return false
  9952  		}
  9953  	}
  9954  	// Iterator still in progress, wait for either a data or an error event
  9955  	select {
  9956  	case log := <-it.logs:
  9957  		it.Event = new(BridgeTransferERC20ERC20FeeChanged)
  9958  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9959  			it.fail = err
  9960  			return false
  9961  		}
  9962  		it.Event.Raw = log
  9963  		return true
  9964  
  9965  	case err := <-it.sub.Err():
  9966  		it.done = true
  9967  		it.fail = err
  9968  		return it.Next()
  9969  	}
  9970  }
  9971  
  9972  // Error returns any retrieval or parsing error occurred during filtering.
  9973  func (it *BridgeTransferERC20ERC20FeeChangedIterator) Error() error {
  9974  	return it.fail
  9975  }
  9976  
  9977  // Close terminates the iteration process, releasing any pending underlying
  9978  // resources.
  9979  func (it *BridgeTransferERC20ERC20FeeChangedIterator) Close() error {
  9980  	it.sub.Unsubscribe()
  9981  	return nil
  9982  }
  9983  
  9984  // BridgeTransferERC20ERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeTransferERC20 contract.
  9985  type BridgeTransferERC20ERC20FeeChanged struct {
  9986  	Token common.Address
  9987  	Fee   *big.Int
  9988  	Raw   types.Log // Blockchain specific contextual infos
  9989  }
  9990  
  9991  // FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
  9992  //
  9993  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
  9994  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeTransferERC20ERC20FeeChangedIterator, error) {
  9995  
  9996  	var tokenRule []interface{}
  9997  	for _, tokenItem := range token {
  9998  		tokenRule = append(tokenRule, tokenItem)
  9999  	}
 10000  	var feeRule []interface{}
 10001  	for _, feeItem := range fee {
 10002  		feeRule = append(feeRule, feeItem)
 10003  	}
 10004  
 10005  	logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule)
 10006  	if err != nil {
 10007  		return nil, err
 10008  	}
 10009  	return &BridgeTransferERC20ERC20FeeChangedIterator{contract: _BridgeTransferERC20.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil
 10010  }
 10011  
 10012  // WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
 10013  //
 10014  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
 10015  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20ERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) {
 10016  
 10017  	var tokenRule []interface{}
 10018  	for _, tokenItem := range token {
 10019  		tokenRule = append(tokenRule, tokenItem)
 10020  	}
 10021  	var feeRule []interface{}
 10022  	for _, feeItem := range fee {
 10023  		feeRule = append(feeRule, feeItem)
 10024  	}
 10025  
 10026  	logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule)
 10027  	if err != nil {
 10028  		return nil, err
 10029  	}
 10030  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10031  		defer sub.Unsubscribe()
 10032  		for {
 10033  			select {
 10034  			case log := <-logs:
 10035  				// New log arrived, parse the event and forward to the user
 10036  				event := new(BridgeTransferERC20ERC20FeeChanged)
 10037  				if err := _BridgeTransferERC20.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil {
 10038  					return err
 10039  				}
 10040  				event.Raw = log
 10041  
 10042  				select {
 10043  				case sink <- event:
 10044  				case err := <-sub.Err():
 10045  					return err
 10046  				case <-quit:
 10047  					return nil
 10048  				}
 10049  			case err := <-sub.Err():
 10050  				return err
 10051  			case <-quit:
 10052  				return nil
 10053  			}
 10054  		}
 10055  	}), nil
 10056  }
 10057  
 10058  // ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
 10059  //
 10060  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
 10061  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseERC20FeeChanged(log types.Log) (*BridgeTransferERC20ERC20FeeChanged, error) {
 10062  	event := new(BridgeTransferERC20ERC20FeeChanged)
 10063  	if err := _BridgeTransferERC20.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil {
 10064  		return nil, err
 10065  	}
 10066  	return event, nil
 10067  }
 10068  
 10069  // BridgeTransferERC20FeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeTransferERC20 contract.
 10070  type BridgeTransferERC20FeeReceiverChangedIterator struct {
 10071  	Event *BridgeTransferERC20FeeReceiverChanged // Event containing the contract specifics and raw log
 10072  
 10073  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10074  	event    string              // Event name to use for unpacking event data
 10075  
 10076  	logs chan types.Log      // Log channel receiving the found contract events
 10077  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 10078  	done bool                // Whether the subscription completed delivering logs
 10079  	fail error               // Occurred error to stop iteration
 10080  }
 10081  
 10082  // Next advances the iterator to the subsequent event, returning whether there
 10083  // are any more events found. In case of a retrieval or parsing error, false is
 10084  // returned and Error() can be queried for the exact failure.
 10085  func (it *BridgeTransferERC20FeeReceiverChangedIterator) Next() bool {
 10086  	// If the iterator failed, stop iterating
 10087  	if it.fail != nil {
 10088  		return false
 10089  	}
 10090  	// If the iterator completed, deliver directly whatever's available
 10091  	if it.done {
 10092  		select {
 10093  		case log := <-it.logs:
 10094  			it.Event = new(BridgeTransferERC20FeeReceiverChanged)
 10095  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10096  				it.fail = err
 10097  				return false
 10098  			}
 10099  			it.Event.Raw = log
 10100  			return true
 10101  
 10102  		default:
 10103  			return false
 10104  		}
 10105  	}
 10106  	// Iterator still in progress, wait for either a data or an error event
 10107  	select {
 10108  	case log := <-it.logs:
 10109  		it.Event = new(BridgeTransferERC20FeeReceiverChanged)
 10110  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10111  			it.fail = err
 10112  			return false
 10113  		}
 10114  		it.Event.Raw = log
 10115  		return true
 10116  
 10117  	case err := <-it.sub.Err():
 10118  		it.done = true
 10119  		it.fail = err
 10120  		return it.Next()
 10121  	}
 10122  }
 10123  
 10124  // Error returns any retrieval or parsing error occurred during filtering.
 10125  func (it *BridgeTransferERC20FeeReceiverChangedIterator) Error() error {
 10126  	return it.fail
 10127  }
 10128  
 10129  // Close terminates the iteration process, releasing any pending underlying
 10130  // resources.
 10131  func (it *BridgeTransferERC20FeeReceiverChangedIterator) Close() error {
 10132  	it.sub.Unsubscribe()
 10133  	return nil
 10134  }
 10135  
 10136  // BridgeTransferERC20FeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeTransferERC20 contract.
 10137  type BridgeTransferERC20FeeReceiverChanged struct {
 10138  	FeeReceiver common.Address
 10139  	Raw         types.Log // Blockchain specific contextual infos
 10140  }
 10141  
 10142  // FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
 10143  //
 10144  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
 10145  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeTransferERC20FeeReceiverChangedIterator, error) {
 10146  
 10147  	var feeReceiverRule []interface{}
 10148  	for _, feeReceiverItem := range feeReceiver {
 10149  		feeReceiverRule = append(feeReceiverRule, feeReceiverItem)
 10150  	}
 10151  
 10152  	logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule)
 10153  	if err != nil {
 10154  		return nil, err
 10155  	}
 10156  	return &BridgeTransferERC20FeeReceiverChangedIterator{contract: _BridgeTransferERC20.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil
 10157  }
 10158  
 10159  // WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
 10160  //
 10161  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
 10162  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20FeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) {
 10163  
 10164  	var feeReceiverRule []interface{}
 10165  	for _, feeReceiverItem := range feeReceiver {
 10166  		feeReceiverRule = append(feeReceiverRule, feeReceiverItem)
 10167  	}
 10168  
 10169  	logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule)
 10170  	if err != nil {
 10171  		return nil, err
 10172  	}
 10173  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10174  		defer sub.Unsubscribe()
 10175  		for {
 10176  			select {
 10177  			case log := <-logs:
 10178  				// New log arrived, parse the event and forward to the user
 10179  				event := new(BridgeTransferERC20FeeReceiverChanged)
 10180  				if err := _BridgeTransferERC20.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil {
 10181  					return err
 10182  				}
 10183  				event.Raw = log
 10184  
 10185  				select {
 10186  				case sink <- event:
 10187  				case err := <-sub.Err():
 10188  					return err
 10189  				case <-quit:
 10190  					return nil
 10191  				}
 10192  			case err := <-sub.Err():
 10193  				return err
 10194  			case <-quit:
 10195  				return nil
 10196  			}
 10197  		}
 10198  	}), nil
 10199  }
 10200  
 10201  // ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
 10202  //
 10203  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
 10204  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseFeeReceiverChanged(log types.Log) (*BridgeTransferERC20FeeReceiverChanged, error) {
 10205  	event := new(BridgeTransferERC20FeeReceiverChanged)
 10206  	if err := _BridgeTransferERC20.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil {
 10207  		return nil, err
 10208  	}
 10209  	return event, nil
 10210  }
 10211  
 10212  // BridgeTransferERC20HandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the BridgeTransferERC20 contract.
 10213  type BridgeTransferERC20HandleValueTransferIterator struct {
 10214  	Event *BridgeTransferERC20HandleValueTransfer // Event containing the contract specifics and raw log
 10215  
 10216  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10217  	event    string              // Event name to use for unpacking event data
 10218  
 10219  	logs chan types.Log      // Log channel receiving the found contract events
 10220  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 10221  	done bool                // Whether the subscription completed delivering logs
 10222  	fail error               // Occurred error to stop iteration
 10223  }
 10224  
 10225  // Next advances the iterator to the subsequent event, returning whether there
 10226  // are any more events found. In case of a retrieval or parsing error, false is
 10227  // returned and Error() can be queried for the exact failure.
 10228  func (it *BridgeTransferERC20HandleValueTransferIterator) Next() bool {
 10229  	// If the iterator failed, stop iterating
 10230  	if it.fail != nil {
 10231  		return false
 10232  	}
 10233  	// If the iterator completed, deliver directly whatever's available
 10234  	if it.done {
 10235  		select {
 10236  		case log := <-it.logs:
 10237  			it.Event = new(BridgeTransferERC20HandleValueTransfer)
 10238  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10239  				it.fail = err
 10240  				return false
 10241  			}
 10242  			it.Event.Raw = log
 10243  			return true
 10244  
 10245  		default:
 10246  			return false
 10247  		}
 10248  	}
 10249  	// Iterator still in progress, wait for either a data or an error event
 10250  	select {
 10251  	case log := <-it.logs:
 10252  		it.Event = new(BridgeTransferERC20HandleValueTransfer)
 10253  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10254  			it.fail = err
 10255  			return false
 10256  		}
 10257  		it.Event.Raw = log
 10258  		return true
 10259  
 10260  	case err := <-it.sub.Err():
 10261  		it.done = true
 10262  		it.fail = err
 10263  		return it.Next()
 10264  	}
 10265  }
 10266  
 10267  // Error returns any retrieval or parsing error occurred during filtering.
 10268  func (it *BridgeTransferERC20HandleValueTransferIterator) Error() error {
 10269  	return it.fail
 10270  }
 10271  
 10272  // Close terminates the iteration process, releasing any pending underlying
 10273  // resources.
 10274  func (it *BridgeTransferERC20HandleValueTransferIterator) Close() error {
 10275  	it.sub.Unsubscribe()
 10276  	return nil
 10277  }
 10278  
 10279  // BridgeTransferERC20HandleValueTransfer represents a HandleValueTransfer event raised by the BridgeTransferERC20 contract.
 10280  type BridgeTransferERC20HandleValueTransfer struct {
 10281  	RequestTxHash    [32]byte
 10282  	TokenType        uint8
 10283  	From             common.Address
 10284  	To               common.Address
 10285  	TokenAddress     common.Address
 10286  	ValueOrTokenId   *big.Int
 10287  	HandleNonce      uint64
 10288  	LowerHandleNonce uint64
 10289  	ExtraData        []byte
 10290  	Raw              types.Log // Blockchain specific contextual infos
 10291  }
 10292  
 10293  // FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
 10294  //
 10295  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
 10296  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC20HandleValueTransferIterator, error) {
 10297  
 10298  	var fromRule []interface{}
 10299  	for _, fromItem := range from {
 10300  		fromRule = append(fromRule, fromItem)
 10301  	}
 10302  	var toRule []interface{}
 10303  	for _, toItem := range to {
 10304  		toRule = append(toRule, toItem)
 10305  	}
 10306  	var tokenAddressRule []interface{}
 10307  	for _, tokenAddressItem := range tokenAddress {
 10308  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 10309  	}
 10310  
 10311  	logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule)
 10312  	if err != nil {
 10313  		return nil, err
 10314  	}
 10315  	return &BridgeTransferERC20HandleValueTransferIterator{contract: _BridgeTransferERC20.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil
 10316  }
 10317  
 10318  // WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
 10319  //
 10320  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
 10321  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20HandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
 10322  
 10323  	var fromRule []interface{}
 10324  	for _, fromItem := range from {
 10325  		fromRule = append(fromRule, fromItem)
 10326  	}
 10327  	var toRule []interface{}
 10328  	for _, toItem := range to {
 10329  		toRule = append(toRule, toItem)
 10330  	}
 10331  	var tokenAddressRule []interface{}
 10332  	for _, tokenAddressItem := range tokenAddress {
 10333  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 10334  	}
 10335  
 10336  	logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule)
 10337  	if err != nil {
 10338  		return nil, err
 10339  	}
 10340  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10341  		defer sub.Unsubscribe()
 10342  		for {
 10343  			select {
 10344  			case log := <-logs:
 10345  				// New log arrived, parse the event and forward to the user
 10346  				event := new(BridgeTransferERC20HandleValueTransfer)
 10347  				if err := _BridgeTransferERC20.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil {
 10348  					return err
 10349  				}
 10350  				event.Raw = log
 10351  
 10352  				select {
 10353  				case sink <- event:
 10354  				case err := <-sub.Err():
 10355  					return err
 10356  				case <-quit:
 10357  					return nil
 10358  				}
 10359  			case err := <-sub.Err():
 10360  				return err
 10361  			case <-quit:
 10362  				return nil
 10363  			}
 10364  		}
 10365  	}), nil
 10366  }
 10367  
 10368  // ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
 10369  //
 10370  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
 10371  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseHandleValueTransfer(log types.Log) (*BridgeTransferERC20HandleValueTransfer, error) {
 10372  	event := new(BridgeTransferERC20HandleValueTransfer)
 10373  	if err := _BridgeTransferERC20.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil {
 10374  		return nil, err
 10375  	}
 10376  	return event, nil
 10377  }
 10378  
 10379  // BridgeTransferERC20KLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeTransferERC20 contract.
 10380  type BridgeTransferERC20KLAYFeeChangedIterator struct {
 10381  	Event *BridgeTransferERC20KLAYFeeChanged // Event containing the contract specifics and raw log
 10382  
 10383  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10384  	event    string              // Event name to use for unpacking event data
 10385  
 10386  	logs chan types.Log      // Log channel receiving the found contract events
 10387  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 10388  	done bool                // Whether the subscription completed delivering logs
 10389  	fail error               // Occurred error to stop iteration
 10390  }
 10391  
 10392  // Next advances the iterator to the subsequent event, returning whether there
 10393  // are any more events found. In case of a retrieval or parsing error, false is
 10394  // returned and Error() can be queried for the exact failure.
 10395  func (it *BridgeTransferERC20KLAYFeeChangedIterator) Next() bool {
 10396  	// If the iterator failed, stop iterating
 10397  	if it.fail != nil {
 10398  		return false
 10399  	}
 10400  	// If the iterator completed, deliver directly whatever's available
 10401  	if it.done {
 10402  		select {
 10403  		case log := <-it.logs:
 10404  			it.Event = new(BridgeTransferERC20KLAYFeeChanged)
 10405  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10406  				it.fail = err
 10407  				return false
 10408  			}
 10409  			it.Event.Raw = log
 10410  			return true
 10411  
 10412  		default:
 10413  			return false
 10414  		}
 10415  	}
 10416  	// Iterator still in progress, wait for either a data or an error event
 10417  	select {
 10418  	case log := <-it.logs:
 10419  		it.Event = new(BridgeTransferERC20KLAYFeeChanged)
 10420  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10421  			it.fail = err
 10422  			return false
 10423  		}
 10424  		it.Event.Raw = log
 10425  		return true
 10426  
 10427  	case err := <-it.sub.Err():
 10428  		it.done = true
 10429  		it.fail = err
 10430  		return it.Next()
 10431  	}
 10432  }
 10433  
 10434  // Error returns any retrieval or parsing error occurred during filtering.
 10435  func (it *BridgeTransferERC20KLAYFeeChangedIterator) Error() error {
 10436  	return it.fail
 10437  }
 10438  
 10439  // Close terminates the iteration process, releasing any pending underlying
 10440  // resources.
 10441  func (it *BridgeTransferERC20KLAYFeeChangedIterator) Close() error {
 10442  	it.sub.Unsubscribe()
 10443  	return nil
 10444  }
 10445  
 10446  // BridgeTransferERC20KLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeTransferERC20 contract.
 10447  type BridgeTransferERC20KLAYFeeChanged struct {
 10448  	Fee *big.Int
 10449  	Raw types.Log // Blockchain specific contextual infos
 10450  }
 10451  
 10452  // FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
 10453  //
 10454  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
 10455  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeTransferERC20KLAYFeeChangedIterator, error) {
 10456  
 10457  	var feeRule []interface{}
 10458  	for _, feeItem := range fee {
 10459  		feeRule = append(feeRule, feeItem)
 10460  	}
 10461  
 10462  	logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule)
 10463  	if err != nil {
 10464  		return nil, err
 10465  	}
 10466  	return &BridgeTransferERC20KLAYFeeChangedIterator{contract: _BridgeTransferERC20.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil
 10467  }
 10468  
 10469  // WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
 10470  //
 10471  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
 10472  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20KLAYFeeChanged, fee []*big.Int) (event.Subscription, error) {
 10473  
 10474  	var feeRule []interface{}
 10475  	for _, feeItem := range fee {
 10476  		feeRule = append(feeRule, feeItem)
 10477  	}
 10478  
 10479  	logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule)
 10480  	if err != nil {
 10481  		return nil, err
 10482  	}
 10483  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10484  		defer sub.Unsubscribe()
 10485  		for {
 10486  			select {
 10487  			case log := <-logs:
 10488  				// New log arrived, parse the event and forward to the user
 10489  				event := new(BridgeTransferERC20KLAYFeeChanged)
 10490  				if err := _BridgeTransferERC20.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil {
 10491  					return err
 10492  				}
 10493  				event.Raw = log
 10494  
 10495  				select {
 10496  				case sink <- event:
 10497  				case err := <-sub.Err():
 10498  					return err
 10499  				case <-quit:
 10500  					return nil
 10501  				}
 10502  			case err := <-sub.Err():
 10503  				return err
 10504  			case <-quit:
 10505  				return nil
 10506  			}
 10507  		}
 10508  	}), nil
 10509  }
 10510  
 10511  // ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
 10512  //
 10513  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
 10514  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseKLAYFeeChanged(log types.Log) (*BridgeTransferERC20KLAYFeeChanged, error) {
 10515  	event := new(BridgeTransferERC20KLAYFeeChanged)
 10516  	if err := _BridgeTransferERC20.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil {
 10517  		return nil, err
 10518  	}
 10519  	return event, nil
 10520  }
 10521  
 10522  // BridgeTransferERC20OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTransferERC20 contract.
 10523  type BridgeTransferERC20OwnershipTransferredIterator struct {
 10524  	Event *BridgeTransferERC20OwnershipTransferred // Event containing the contract specifics and raw log
 10525  
 10526  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10527  	event    string              // Event name to use for unpacking event data
 10528  
 10529  	logs chan types.Log      // Log channel receiving the found contract events
 10530  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 10531  	done bool                // Whether the subscription completed delivering logs
 10532  	fail error               // Occurred error to stop iteration
 10533  }
 10534  
 10535  // Next advances the iterator to the subsequent event, returning whether there
 10536  // are any more events found. In case of a retrieval or parsing error, false is
 10537  // returned and Error() can be queried for the exact failure.
 10538  func (it *BridgeTransferERC20OwnershipTransferredIterator) Next() bool {
 10539  	// If the iterator failed, stop iterating
 10540  	if it.fail != nil {
 10541  		return false
 10542  	}
 10543  	// If the iterator completed, deliver directly whatever's available
 10544  	if it.done {
 10545  		select {
 10546  		case log := <-it.logs:
 10547  			it.Event = new(BridgeTransferERC20OwnershipTransferred)
 10548  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10549  				it.fail = err
 10550  				return false
 10551  			}
 10552  			it.Event.Raw = log
 10553  			return true
 10554  
 10555  		default:
 10556  			return false
 10557  		}
 10558  	}
 10559  	// Iterator still in progress, wait for either a data or an error event
 10560  	select {
 10561  	case log := <-it.logs:
 10562  		it.Event = new(BridgeTransferERC20OwnershipTransferred)
 10563  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10564  			it.fail = err
 10565  			return false
 10566  		}
 10567  		it.Event.Raw = log
 10568  		return true
 10569  
 10570  	case err := <-it.sub.Err():
 10571  		it.done = true
 10572  		it.fail = err
 10573  		return it.Next()
 10574  	}
 10575  }
 10576  
 10577  // Error returns any retrieval or parsing error occurred during filtering.
 10578  func (it *BridgeTransferERC20OwnershipTransferredIterator) Error() error {
 10579  	return it.fail
 10580  }
 10581  
 10582  // Close terminates the iteration process, releasing any pending underlying
 10583  // resources.
 10584  func (it *BridgeTransferERC20OwnershipTransferredIterator) Close() error {
 10585  	it.sub.Unsubscribe()
 10586  	return nil
 10587  }
 10588  
 10589  // BridgeTransferERC20OwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTransferERC20 contract.
 10590  type BridgeTransferERC20OwnershipTransferred struct {
 10591  	PreviousOwner common.Address
 10592  	NewOwner      common.Address
 10593  	Raw           types.Log // Blockchain specific contextual infos
 10594  }
 10595  
 10596  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 10597  //
 10598  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 10599  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTransferERC20OwnershipTransferredIterator, error) {
 10600  
 10601  	var previousOwnerRule []interface{}
 10602  	for _, previousOwnerItem := range previousOwner {
 10603  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 10604  	}
 10605  	var newOwnerRule []interface{}
 10606  	for _, newOwnerItem := range newOwner {
 10607  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 10608  	}
 10609  
 10610  	logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 10611  	if err != nil {
 10612  		return nil, err
 10613  	}
 10614  	return &BridgeTransferERC20OwnershipTransferredIterator{contract: _BridgeTransferERC20.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
 10615  }
 10616  
 10617  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 10618  //
 10619  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 10620  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
 10621  
 10622  	var previousOwnerRule []interface{}
 10623  	for _, previousOwnerItem := range previousOwner {
 10624  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 10625  	}
 10626  	var newOwnerRule []interface{}
 10627  	for _, newOwnerItem := range newOwner {
 10628  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 10629  	}
 10630  
 10631  	logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 10632  	if err != nil {
 10633  		return nil, err
 10634  	}
 10635  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10636  		defer sub.Unsubscribe()
 10637  		for {
 10638  			select {
 10639  			case log := <-logs:
 10640  				// New log arrived, parse the event and forward to the user
 10641  				event := new(BridgeTransferERC20OwnershipTransferred)
 10642  				if err := _BridgeTransferERC20.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 10643  					return err
 10644  				}
 10645  				event.Raw = log
 10646  
 10647  				select {
 10648  				case sink <- event:
 10649  				case err := <-sub.Err():
 10650  					return err
 10651  				case <-quit:
 10652  					return nil
 10653  				}
 10654  			case err := <-sub.Err():
 10655  				return err
 10656  			case <-quit:
 10657  				return nil
 10658  			}
 10659  		}
 10660  	}), nil
 10661  }
 10662  
 10663  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 10664  //
 10665  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 10666  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseOwnershipTransferred(log types.Log) (*BridgeTransferERC20OwnershipTransferred, error) {
 10667  	event := new(BridgeTransferERC20OwnershipTransferred)
 10668  	if err := _BridgeTransferERC20.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 10669  		return nil, err
 10670  	}
 10671  	return event, nil
 10672  }
 10673  
 10674  // BridgeTransferERC20RequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the BridgeTransferERC20 contract.
 10675  type BridgeTransferERC20RequestValueTransferIterator struct {
 10676  	Event *BridgeTransferERC20RequestValueTransfer // Event containing the contract specifics and raw log
 10677  
 10678  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10679  	event    string              // Event name to use for unpacking event data
 10680  
 10681  	logs chan types.Log      // Log channel receiving the found contract events
 10682  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 10683  	done bool                // Whether the subscription completed delivering logs
 10684  	fail error               // Occurred error to stop iteration
 10685  }
 10686  
 10687  // Next advances the iterator to the subsequent event, returning whether there
 10688  // are any more events found. In case of a retrieval or parsing error, false is
 10689  // returned and Error() can be queried for the exact failure.
 10690  func (it *BridgeTransferERC20RequestValueTransferIterator) Next() bool {
 10691  	// If the iterator failed, stop iterating
 10692  	if it.fail != nil {
 10693  		return false
 10694  	}
 10695  	// If the iterator completed, deliver directly whatever's available
 10696  	if it.done {
 10697  		select {
 10698  		case log := <-it.logs:
 10699  			it.Event = new(BridgeTransferERC20RequestValueTransfer)
 10700  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10701  				it.fail = err
 10702  				return false
 10703  			}
 10704  			it.Event.Raw = log
 10705  			return true
 10706  
 10707  		default:
 10708  			return false
 10709  		}
 10710  	}
 10711  	// Iterator still in progress, wait for either a data or an error event
 10712  	select {
 10713  	case log := <-it.logs:
 10714  		it.Event = new(BridgeTransferERC20RequestValueTransfer)
 10715  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10716  			it.fail = err
 10717  			return false
 10718  		}
 10719  		it.Event.Raw = log
 10720  		return true
 10721  
 10722  	case err := <-it.sub.Err():
 10723  		it.done = true
 10724  		it.fail = err
 10725  		return it.Next()
 10726  	}
 10727  }
 10728  
 10729  // Error returns any retrieval or parsing error occurred during filtering.
 10730  func (it *BridgeTransferERC20RequestValueTransferIterator) Error() error {
 10731  	return it.fail
 10732  }
 10733  
 10734  // Close terminates the iteration process, releasing any pending underlying
 10735  // resources.
 10736  func (it *BridgeTransferERC20RequestValueTransferIterator) Close() error {
 10737  	it.sub.Unsubscribe()
 10738  	return nil
 10739  }
 10740  
 10741  // BridgeTransferERC20RequestValueTransfer represents a RequestValueTransfer event raised by the BridgeTransferERC20 contract.
 10742  type BridgeTransferERC20RequestValueTransfer struct {
 10743  	TokenType      uint8
 10744  	From           common.Address
 10745  	To             common.Address
 10746  	TokenAddress   common.Address
 10747  	ValueOrTokenId *big.Int
 10748  	RequestNonce   uint64
 10749  	Fee            *big.Int
 10750  	ExtraData      []byte
 10751  	Raw            types.Log // Blockchain specific contextual infos
 10752  }
 10753  
 10754  // FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
 10755  //
 10756  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
 10757  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC20RequestValueTransferIterator, error) {
 10758  
 10759  	var fromRule []interface{}
 10760  	for _, fromItem := range from {
 10761  		fromRule = append(fromRule, fromItem)
 10762  	}
 10763  	var toRule []interface{}
 10764  	for _, toItem := range to {
 10765  		toRule = append(toRule, toItem)
 10766  	}
 10767  	var tokenAddressRule []interface{}
 10768  	for _, tokenAddressItem := range tokenAddress {
 10769  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 10770  	}
 10771  
 10772  	logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule)
 10773  	if err != nil {
 10774  		return nil, err
 10775  	}
 10776  	return &BridgeTransferERC20RequestValueTransferIterator{contract: _BridgeTransferERC20.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil
 10777  }
 10778  
 10779  // WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
 10780  //
 10781  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
 10782  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20RequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
 10783  
 10784  	var fromRule []interface{}
 10785  	for _, fromItem := range from {
 10786  		fromRule = append(fromRule, fromItem)
 10787  	}
 10788  	var toRule []interface{}
 10789  	for _, toItem := range to {
 10790  		toRule = append(toRule, toItem)
 10791  	}
 10792  	var tokenAddressRule []interface{}
 10793  	for _, tokenAddressItem := range tokenAddress {
 10794  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 10795  	}
 10796  
 10797  	logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule)
 10798  	if err != nil {
 10799  		return nil, err
 10800  	}
 10801  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10802  		defer sub.Unsubscribe()
 10803  		for {
 10804  			select {
 10805  			case log := <-logs:
 10806  				// New log arrived, parse the event and forward to the user
 10807  				event := new(BridgeTransferERC20RequestValueTransfer)
 10808  				if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil {
 10809  					return err
 10810  				}
 10811  				event.Raw = log
 10812  
 10813  				select {
 10814  				case sink <- event:
 10815  				case err := <-sub.Err():
 10816  					return err
 10817  				case <-quit:
 10818  					return nil
 10819  				}
 10820  			case err := <-sub.Err():
 10821  				return err
 10822  			case <-quit:
 10823  				return nil
 10824  			}
 10825  		}
 10826  	}), nil
 10827  }
 10828  
 10829  // ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
 10830  //
 10831  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
 10832  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseRequestValueTransfer(log types.Log) (*BridgeTransferERC20RequestValueTransfer, error) {
 10833  	event := new(BridgeTransferERC20RequestValueTransfer)
 10834  	if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil {
 10835  		return nil, err
 10836  	}
 10837  	return event, nil
 10838  }
 10839  
 10840  // BridgeTransferERC20RequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the BridgeTransferERC20 contract.
 10841  type BridgeTransferERC20RequestValueTransferEncodedIterator struct {
 10842  	Event *BridgeTransferERC20RequestValueTransferEncoded // Event containing the contract specifics and raw log
 10843  
 10844  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10845  	event    string              // Event name to use for unpacking event data
 10846  
 10847  	logs chan types.Log      // Log channel receiving the found contract events
 10848  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 10849  	done bool                // Whether the subscription completed delivering logs
 10850  	fail error               // Occurred error to stop iteration
 10851  }
 10852  
 10853  // Next advances the iterator to the subsequent event, returning whether there
 10854  // are any more events found. In case of a retrieval or parsing error, false is
 10855  // returned and Error() can be queried for the exact failure.
 10856  func (it *BridgeTransferERC20RequestValueTransferEncodedIterator) Next() bool {
 10857  	// If the iterator failed, stop iterating
 10858  	if it.fail != nil {
 10859  		return false
 10860  	}
 10861  	// If the iterator completed, deliver directly whatever's available
 10862  	if it.done {
 10863  		select {
 10864  		case log := <-it.logs:
 10865  			it.Event = new(BridgeTransferERC20RequestValueTransferEncoded)
 10866  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10867  				it.fail = err
 10868  				return false
 10869  			}
 10870  			it.Event.Raw = log
 10871  			return true
 10872  
 10873  		default:
 10874  			return false
 10875  		}
 10876  	}
 10877  	// Iterator still in progress, wait for either a data or an error event
 10878  	select {
 10879  	case log := <-it.logs:
 10880  		it.Event = new(BridgeTransferERC20RequestValueTransferEncoded)
 10881  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10882  			it.fail = err
 10883  			return false
 10884  		}
 10885  		it.Event.Raw = log
 10886  		return true
 10887  
 10888  	case err := <-it.sub.Err():
 10889  		it.done = true
 10890  		it.fail = err
 10891  		return it.Next()
 10892  	}
 10893  }
 10894  
 10895  // Error returns any retrieval or parsing error occurred during filtering.
 10896  func (it *BridgeTransferERC20RequestValueTransferEncodedIterator) Error() error {
 10897  	return it.fail
 10898  }
 10899  
 10900  // Close terminates the iteration process, releasing any pending underlying
 10901  // resources.
 10902  func (it *BridgeTransferERC20RequestValueTransferEncodedIterator) Close() error {
 10903  	it.sub.Unsubscribe()
 10904  	return nil
 10905  }
 10906  
 10907  // BridgeTransferERC20RequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the BridgeTransferERC20 contract.
 10908  type BridgeTransferERC20RequestValueTransferEncoded struct {
 10909  	TokenType      uint8
 10910  	From           common.Address
 10911  	To             common.Address
 10912  	TokenAddress   common.Address
 10913  	ValueOrTokenId *big.Int
 10914  	RequestNonce   uint64
 10915  	Fee            *big.Int
 10916  	ExtraData      []byte
 10917  	EncodingVer    uint8
 10918  	EncodedData    []byte
 10919  	Raw            types.Log // Blockchain specific contextual infos
 10920  }
 10921  
 10922  // FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
 10923  //
 10924  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
 10925  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC20RequestValueTransferEncodedIterator, error) {
 10926  
 10927  	var fromRule []interface{}
 10928  	for _, fromItem := range from {
 10929  		fromRule = append(fromRule, fromItem)
 10930  	}
 10931  	var toRule []interface{}
 10932  	for _, toItem := range to {
 10933  		toRule = append(toRule, toItem)
 10934  	}
 10935  	var tokenAddressRule []interface{}
 10936  	for _, tokenAddressItem := range tokenAddress {
 10937  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 10938  	}
 10939  
 10940  	logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule)
 10941  	if err != nil {
 10942  		return nil, err
 10943  	}
 10944  	return &BridgeTransferERC20RequestValueTransferEncodedIterator{contract: _BridgeTransferERC20.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil
 10945  }
 10946  
 10947  // WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
 10948  //
 10949  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
 10950  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20RequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
 10951  
 10952  	var fromRule []interface{}
 10953  	for _, fromItem := range from {
 10954  		fromRule = append(fromRule, fromItem)
 10955  	}
 10956  	var toRule []interface{}
 10957  	for _, toItem := range to {
 10958  		toRule = append(toRule, toItem)
 10959  	}
 10960  	var tokenAddressRule []interface{}
 10961  	for _, tokenAddressItem := range tokenAddress {
 10962  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 10963  	}
 10964  
 10965  	logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule)
 10966  	if err != nil {
 10967  		return nil, err
 10968  	}
 10969  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10970  		defer sub.Unsubscribe()
 10971  		for {
 10972  			select {
 10973  			case log := <-logs:
 10974  				// New log arrived, parse the event and forward to the user
 10975  				event := new(BridgeTransferERC20RequestValueTransferEncoded)
 10976  				if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil {
 10977  					return err
 10978  				}
 10979  				event.Raw = log
 10980  
 10981  				select {
 10982  				case sink <- event:
 10983  				case err := <-sub.Err():
 10984  					return err
 10985  				case <-quit:
 10986  					return nil
 10987  				}
 10988  			case err := <-sub.Err():
 10989  				return err
 10990  			case <-quit:
 10991  				return nil
 10992  			}
 10993  		}
 10994  	}), nil
 10995  }
 10996  
 10997  // ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
 10998  //
 10999  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
 11000  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseRequestValueTransferEncoded(log types.Log) (*BridgeTransferERC20RequestValueTransferEncoded, error) {
 11001  	event := new(BridgeTransferERC20RequestValueTransferEncoded)
 11002  	if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil {
 11003  		return nil, err
 11004  	}
 11005  	return event, nil
 11006  }
 11007  
 11008  // BridgeTransferERC20TokenDeregisteredIterator is returned from FilterTokenDeregistered and is used to iterate over the raw logs and unpacked data for TokenDeregistered events raised by the BridgeTransferERC20 contract.
 11009  type BridgeTransferERC20TokenDeregisteredIterator struct {
 11010  	Event *BridgeTransferERC20TokenDeregistered // Event containing the contract specifics and raw log
 11011  
 11012  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11013  	event    string              // Event name to use for unpacking event data
 11014  
 11015  	logs chan types.Log      // Log channel receiving the found contract events
 11016  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 11017  	done bool                // Whether the subscription completed delivering logs
 11018  	fail error               // Occurred error to stop iteration
 11019  }
 11020  
 11021  // Next advances the iterator to the subsequent event, returning whether there
 11022  // are any more events found. In case of a retrieval or parsing error, false is
 11023  // returned and Error() can be queried for the exact failure.
 11024  func (it *BridgeTransferERC20TokenDeregisteredIterator) Next() bool {
 11025  	// If the iterator failed, stop iterating
 11026  	if it.fail != nil {
 11027  		return false
 11028  	}
 11029  	// If the iterator completed, deliver directly whatever's available
 11030  	if it.done {
 11031  		select {
 11032  		case log := <-it.logs:
 11033  			it.Event = new(BridgeTransferERC20TokenDeregistered)
 11034  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11035  				it.fail = err
 11036  				return false
 11037  			}
 11038  			it.Event.Raw = log
 11039  			return true
 11040  
 11041  		default:
 11042  			return false
 11043  		}
 11044  	}
 11045  	// Iterator still in progress, wait for either a data or an error event
 11046  	select {
 11047  	case log := <-it.logs:
 11048  		it.Event = new(BridgeTransferERC20TokenDeregistered)
 11049  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11050  			it.fail = err
 11051  			return false
 11052  		}
 11053  		it.Event.Raw = log
 11054  		return true
 11055  
 11056  	case err := <-it.sub.Err():
 11057  		it.done = true
 11058  		it.fail = err
 11059  		return it.Next()
 11060  	}
 11061  }
 11062  
 11063  // Error returns any retrieval or parsing error occurred during filtering.
 11064  func (it *BridgeTransferERC20TokenDeregisteredIterator) Error() error {
 11065  	return it.fail
 11066  }
 11067  
 11068  // Close terminates the iteration process, releasing any pending underlying
 11069  // resources.
 11070  func (it *BridgeTransferERC20TokenDeregisteredIterator) Close() error {
 11071  	it.sub.Unsubscribe()
 11072  	return nil
 11073  }
 11074  
 11075  // BridgeTransferERC20TokenDeregistered represents a TokenDeregistered event raised by the BridgeTransferERC20 contract.
 11076  type BridgeTransferERC20TokenDeregistered struct {
 11077  	Token common.Address
 11078  	Raw   types.Log // Blockchain specific contextual infos
 11079  }
 11080  
 11081  // FilterTokenDeregistered is a free log retrieval operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
 11082  //
 11083  // Solidity: event TokenDeregistered(address indexed token)
 11084  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenDeregisteredIterator, error) {
 11085  
 11086  	var tokenRule []interface{}
 11087  	for _, tokenItem := range token {
 11088  		tokenRule = append(tokenRule, tokenItem)
 11089  	}
 11090  
 11091  	logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenDeregistered", tokenRule)
 11092  	if err != nil {
 11093  		return nil, err
 11094  	}
 11095  	return &BridgeTransferERC20TokenDeregisteredIterator{contract: _BridgeTransferERC20.contract, event: "TokenDeregistered", logs: logs, sub: sub}, nil
 11096  }
 11097  
 11098  // WatchTokenDeregistered is a free log subscription operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
 11099  //
 11100  // Solidity: event TokenDeregistered(address indexed token)
 11101  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenDeregistered, token []common.Address) (event.Subscription, error) {
 11102  
 11103  	var tokenRule []interface{}
 11104  	for _, tokenItem := range token {
 11105  		tokenRule = append(tokenRule, tokenItem)
 11106  	}
 11107  
 11108  	logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenDeregistered", tokenRule)
 11109  	if err != nil {
 11110  		return nil, err
 11111  	}
 11112  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11113  		defer sub.Unsubscribe()
 11114  		for {
 11115  			select {
 11116  			case log := <-logs:
 11117  				// New log arrived, parse the event and forward to the user
 11118  				event := new(BridgeTransferERC20TokenDeregistered)
 11119  				if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenDeregistered", log); err != nil {
 11120  					return err
 11121  				}
 11122  				event.Raw = log
 11123  
 11124  				select {
 11125  				case sink <- event:
 11126  				case err := <-sub.Err():
 11127  					return err
 11128  				case <-quit:
 11129  					return nil
 11130  				}
 11131  			case err := <-sub.Err():
 11132  				return err
 11133  			case <-quit:
 11134  				return nil
 11135  			}
 11136  		}
 11137  	}), nil
 11138  }
 11139  
 11140  // ParseTokenDeregistered is a log parse operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
 11141  //
 11142  // Solidity: event TokenDeregistered(address indexed token)
 11143  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenDeregistered(log types.Log) (*BridgeTransferERC20TokenDeregistered, error) {
 11144  	event := new(BridgeTransferERC20TokenDeregistered)
 11145  	if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenDeregistered", log); err != nil {
 11146  		return nil, err
 11147  	}
 11148  	return event, nil
 11149  }
 11150  
 11151  // BridgeTransferERC20TokenLockedIterator is returned from FilterTokenLocked and is used to iterate over the raw logs and unpacked data for TokenLocked events raised by the BridgeTransferERC20 contract.
 11152  type BridgeTransferERC20TokenLockedIterator struct {
 11153  	Event *BridgeTransferERC20TokenLocked // Event containing the contract specifics and raw log
 11154  
 11155  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11156  	event    string              // Event name to use for unpacking event data
 11157  
 11158  	logs chan types.Log      // Log channel receiving the found contract events
 11159  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 11160  	done bool                // Whether the subscription completed delivering logs
 11161  	fail error               // Occurred error to stop iteration
 11162  }
 11163  
 11164  // Next advances the iterator to the subsequent event, returning whether there
 11165  // are any more events found. In case of a retrieval or parsing error, false is
 11166  // returned and Error() can be queried for the exact failure.
 11167  func (it *BridgeTransferERC20TokenLockedIterator) Next() bool {
 11168  	// If the iterator failed, stop iterating
 11169  	if it.fail != nil {
 11170  		return false
 11171  	}
 11172  	// If the iterator completed, deliver directly whatever's available
 11173  	if it.done {
 11174  		select {
 11175  		case log := <-it.logs:
 11176  			it.Event = new(BridgeTransferERC20TokenLocked)
 11177  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11178  				it.fail = err
 11179  				return false
 11180  			}
 11181  			it.Event.Raw = log
 11182  			return true
 11183  
 11184  		default:
 11185  			return false
 11186  		}
 11187  	}
 11188  	// Iterator still in progress, wait for either a data or an error event
 11189  	select {
 11190  	case log := <-it.logs:
 11191  		it.Event = new(BridgeTransferERC20TokenLocked)
 11192  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11193  			it.fail = err
 11194  			return false
 11195  		}
 11196  		it.Event.Raw = log
 11197  		return true
 11198  
 11199  	case err := <-it.sub.Err():
 11200  		it.done = true
 11201  		it.fail = err
 11202  		return it.Next()
 11203  	}
 11204  }
 11205  
 11206  // Error returns any retrieval or parsing error occurred during filtering.
 11207  func (it *BridgeTransferERC20TokenLockedIterator) Error() error {
 11208  	return it.fail
 11209  }
 11210  
 11211  // Close terminates the iteration process, releasing any pending underlying
 11212  // resources.
 11213  func (it *BridgeTransferERC20TokenLockedIterator) Close() error {
 11214  	it.sub.Unsubscribe()
 11215  	return nil
 11216  }
 11217  
 11218  // BridgeTransferERC20TokenLocked represents a TokenLocked event raised by the BridgeTransferERC20 contract.
 11219  type BridgeTransferERC20TokenLocked struct {
 11220  	Token common.Address
 11221  	Raw   types.Log // Blockchain specific contextual infos
 11222  }
 11223  
 11224  // FilterTokenLocked is a free log retrieval operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
 11225  //
 11226  // Solidity: event TokenLocked(address indexed token)
 11227  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenLockedIterator, error) {
 11228  
 11229  	var tokenRule []interface{}
 11230  	for _, tokenItem := range token {
 11231  		tokenRule = append(tokenRule, tokenItem)
 11232  	}
 11233  
 11234  	logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenLocked", tokenRule)
 11235  	if err != nil {
 11236  		return nil, err
 11237  	}
 11238  	return &BridgeTransferERC20TokenLockedIterator{contract: _BridgeTransferERC20.contract, event: "TokenLocked", logs: logs, sub: sub}, nil
 11239  }
 11240  
 11241  // WatchTokenLocked is a free log subscription operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
 11242  //
 11243  // Solidity: event TokenLocked(address indexed token)
 11244  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenLocked, token []common.Address) (event.Subscription, error) {
 11245  
 11246  	var tokenRule []interface{}
 11247  	for _, tokenItem := range token {
 11248  		tokenRule = append(tokenRule, tokenItem)
 11249  	}
 11250  
 11251  	logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenLocked", tokenRule)
 11252  	if err != nil {
 11253  		return nil, err
 11254  	}
 11255  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11256  		defer sub.Unsubscribe()
 11257  		for {
 11258  			select {
 11259  			case log := <-logs:
 11260  				// New log arrived, parse the event and forward to the user
 11261  				event := new(BridgeTransferERC20TokenLocked)
 11262  				if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenLocked", log); err != nil {
 11263  					return err
 11264  				}
 11265  				event.Raw = log
 11266  
 11267  				select {
 11268  				case sink <- event:
 11269  				case err := <-sub.Err():
 11270  					return err
 11271  				case <-quit:
 11272  					return nil
 11273  				}
 11274  			case err := <-sub.Err():
 11275  				return err
 11276  			case <-quit:
 11277  				return nil
 11278  			}
 11279  		}
 11280  	}), nil
 11281  }
 11282  
 11283  // ParseTokenLocked is a log parse operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
 11284  //
 11285  // Solidity: event TokenLocked(address indexed token)
 11286  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenLocked(log types.Log) (*BridgeTransferERC20TokenLocked, error) {
 11287  	event := new(BridgeTransferERC20TokenLocked)
 11288  	if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenLocked", log); err != nil {
 11289  		return nil, err
 11290  	}
 11291  	return event, nil
 11292  }
 11293  
 11294  // BridgeTransferERC20TokenRegisteredIterator is returned from FilterTokenRegistered and is used to iterate over the raw logs and unpacked data for TokenRegistered events raised by the BridgeTransferERC20 contract.
 11295  type BridgeTransferERC20TokenRegisteredIterator struct {
 11296  	Event *BridgeTransferERC20TokenRegistered // Event containing the contract specifics and raw log
 11297  
 11298  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11299  	event    string              // Event name to use for unpacking event data
 11300  
 11301  	logs chan types.Log      // Log channel receiving the found contract events
 11302  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 11303  	done bool                // Whether the subscription completed delivering logs
 11304  	fail error               // Occurred error to stop iteration
 11305  }
 11306  
 11307  // Next advances the iterator to the subsequent event, returning whether there
 11308  // are any more events found. In case of a retrieval or parsing error, false is
 11309  // returned and Error() can be queried for the exact failure.
 11310  func (it *BridgeTransferERC20TokenRegisteredIterator) Next() bool {
 11311  	// If the iterator failed, stop iterating
 11312  	if it.fail != nil {
 11313  		return false
 11314  	}
 11315  	// If the iterator completed, deliver directly whatever's available
 11316  	if it.done {
 11317  		select {
 11318  		case log := <-it.logs:
 11319  			it.Event = new(BridgeTransferERC20TokenRegistered)
 11320  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11321  				it.fail = err
 11322  				return false
 11323  			}
 11324  			it.Event.Raw = log
 11325  			return true
 11326  
 11327  		default:
 11328  			return false
 11329  		}
 11330  	}
 11331  	// Iterator still in progress, wait for either a data or an error event
 11332  	select {
 11333  	case log := <-it.logs:
 11334  		it.Event = new(BridgeTransferERC20TokenRegistered)
 11335  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11336  			it.fail = err
 11337  			return false
 11338  		}
 11339  		it.Event.Raw = log
 11340  		return true
 11341  
 11342  	case err := <-it.sub.Err():
 11343  		it.done = true
 11344  		it.fail = err
 11345  		return it.Next()
 11346  	}
 11347  }
 11348  
 11349  // Error returns any retrieval or parsing error occurred during filtering.
 11350  func (it *BridgeTransferERC20TokenRegisteredIterator) Error() error {
 11351  	return it.fail
 11352  }
 11353  
 11354  // Close terminates the iteration process, releasing any pending underlying
 11355  // resources.
 11356  func (it *BridgeTransferERC20TokenRegisteredIterator) Close() error {
 11357  	it.sub.Unsubscribe()
 11358  	return nil
 11359  }
 11360  
 11361  // BridgeTransferERC20TokenRegistered represents a TokenRegistered event raised by the BridgeTransferERC20 contract.
 11362  type BridgeTransferERC20TokenRegistered struct {
 11363  	Token common.Address
 11364  	Raw   types.Log // Blockchain specific contextual infos
 11365  }
 11366  
 11367  // FilterTokenRegistered is a free log retrieval operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
 11368  //
 11369  // Solidity: event TokenRegistered(address indexed token)
 11370  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenRegisteredIterator, error) {
 11371  
 11372  	var tokenRule []interface{}
 11373  	for _, tokenItem := range token {
 11374  		tokenRule = append(tokenRule, tokenItem)
 11375  	}
 11376  
 11377  	logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenRegistered", tokenRule)
 11378  	if err != nil {
 11379  		return nil, err
 11380  	}
 11381  	return &BridgeTransferERC20TokenRegisteredIterator{contract: _BridgeTransferERC20.contract, event: "TokenRegistered", logs: logs, sub: sub}, nil
 11382  }
 11383  
 11384  // WatchTokenRegistered is a free log subscription operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
 11385  //
 11386  // Solidity: event TokenRegistered(address indexed token)
 11387  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenRegistered, token []common.Address) (event.Subscription, error) {
 11388  
 11389  	var tokenRule []interface{}
 11390  	for _, tokenItem := range token {
 11391  		tokenRule = append(tokenRule, tokenItem)
 11392  	}
 11393  
 11394  	logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenRegistered", tokenRule)
 11395  	if err != nil {
 11396  		return nil, err
 11397  	}
 11398  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11399  		defer sub.Unsubscribe()
 11400  		for {
 11401  			select {
 11402  			case log := <-logs:
 11403  				// New log arrived, parse the event and forward to the user
 11404  				event := new(BridgeTransferERC20TokenRegistered)
 11405  				if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenRegistered", log); err != nil {
 11406  					return err
 11407  				}
 11408  				event.Raw = log
 11409  
 11410  				select {
 11411  				case sink <- event:
 11412  				case err := <-sub.Err():
 11413  					return err
 11414  				case <-quit:
 11415  					return nil
 11416  				}
 11417  			case err := <-sub.Err():
 11418  				return err
 11419  			case <-quit:
 11420  				return nil
 11421  			}
 11422  		}
 11423  	}), nil
 11424  }
 11425  
 11426  // ParseTokenRegistered is a log parse operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
 11427  //
 11428  // Solidity: event TokenRegistered(address indexed token)
 11429  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenRegistered(log types.Log) (*BridgeTransferERC20TokenRegistered, error) {
 11430  	event := new(BridgeTransferERC20TokenRegistered)
 11431  	if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenRegistered", log); err != nil {
 11432  		return nil, err
 11433  	}
 11434  	return event, nil
 11435  }
 11436  
 11437  // BridgeTransferERC20TokenUnlockedIterator is returned from FilterTokenUnlocked and is used to iterate over the raw logs and unpacked data for TokenUnlocked events raised by the BridgeTransferERC20 contract.
 11438  type BridgeTransferERC20TokenUnlockedIterator struct {
 11439  	Event *BridgeTransferERC20TokenUnlocked // Event containing the contract specifics and raw log
 11440  
 11441  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11442  	event    string              // Event name to use for unpacking event data
 11443  
 11444  	logs chan types.Log      // Log channel receiving the found contract events
 11445  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 11446  	done bool                // Whether the subscription completed delivering logs
 11447  	fail error               // Occurred error to stop iteration
 11448  }
 11449  
 11450  // Next advances the iterator to the subsequent event, returning whether there
 11451  // are any more events found. In case of a retrieval or parsing error, false is
 11452  // returned and Error() can be queried for the exact failure.
 11453  func (it *BridgeTransferERC20TokenUnlockedIterator) Next() bool {
 11454  	// If the iterator failed, stop iterating
 11455  	if it.fail != nil {
 11456  		return false
 11457  	}
 11458  	// If the iterator completed, deliver directly whatever's available
 11459  	if it.done {
 11460  		select {
 11461  		case log := <-it.logs:
 11462  			it.Event = new(BridgeTransferERC20TokenUnlocked)
 11463  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11464  				it.fail = err
 11465  				return false
 11466  			}
 11467  			it.Event.Raw = log
 11468  			return true
 11469  
 11470  		default:
 11471  			return false
 11472  		}
 11473  	}
 11474  	// Iterator still in progress, wait for either a data or an error event
 11475  	select {
 11476  	case log := <-it.logs:
 11477  		it.Event = new(BridgeTransferERC20TokenUnlocked)
 11478  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11479  			it.fail = err
 11480  			return false
 11481  		}
 11482  		it.Event.Raw = log
 11483  		return true
 11484  
 11485  	case err := <-it.sub.Err():
 11486  		it.done = true
 11487  		it.fail = err
 11488  		return it.Next()
 11489  	}
 11490  }
 11491  
 11492  // Error returns any retrieval or parsing error occurred during filtering.
 11493  func (it *BridgeTransferERC20TokenUnlockedIterator) Error() error {
 11494  	return it.fail
 11495  }
 11496  
 11497  // Close terminates the iteration process, releasing any pending underlying
 11498  // resources.
 11499  func (it *BridgeTransferERC20TokenUnlockedIterator) Close() error {
 11500  	it.sub.Unsubscribe()
 11501  	return nil
 11502  }
 11503  
 11504  // BridgeTransferERC20TokenUnlocked represents a TokenUnlocked event raised by the BridgeTransferERC20 contract.
 11505  type BridgeTransferERC20TokenUnlocked struct {
 11506  	Token common.Address
 11507  	Raw   types.Log // Blockchain specific contextual infos
 11508  }
 11509  
 11510  // FilterTokenUnlocked is a free log retrieval operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
 11511  //
 11512  // Solidity: event TokenUnlocked(address indexed token)
 11513  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenUnlockedIterator, error) {
 11514  
 11515  	var tokenRule []interface{}
 11516  	for _, tokenItem := range token {
 11517  		tokenRule = append(tokenRule, tokenItem)
 11518  	}
 11519  
 11520  	logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenUnlocked", tokenRule)
 11521  	if err != nil {
 11522  		return nil, err
 11523  	}
 11524  	return &BridgeTransferERC20TokenUnlockedIterator{contract: _BridgeTransferERC20.contract, event: "TokenUnlocked", logs: logs, sub: sub}, nil
 11525  }
 11526  
 11527  // WatchTokenUnlocked is a free log subscription operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
 11528  //
 11529  // Solidity: event TokenUnlocked(address indexed token)
 11530  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenUnlocked, token []common.Address) (event.Subscription, error) {
 11531  
 11532  	var tokenRule []interface{}
 11533  	for _, tokenItem := range token {
 11534  		tokenRule = append(tokenRule, tokenItem)
 11535  	}
 11536  
 11537  	logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenUnlocked", tokenRule)
 11538  	if err != nil {
 11539  		return nil, err
 11540  	}
 11541  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11542  		defer sub.Unsubscribe()
 11543  		for {
 11544  			select {
 11545  			case log := <-logs:
 11546  				// New log arrived, parse the event and forward to the user
 11547  				event := new(BridgeTransferERC20TokenUnlocked)
 11548  				if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenUnlocked", log); err != nil {
 11549  					return err
 11550  				}
 11551  				event.Raw = log
 11552  
 11553  				select {
 11554  				case sink <- event:
 11555  				case err := <-sub.Err():
 11556  					return err
 11557  				case <-quit:
 11558  					return nil
 11559  				}
 11560  			case err := <-sub.Err():
 11561  				return err
 11562  			case <-quit:
 11563  				return nil
 11564  			}
 11565  		}
 11566  	}), nil
 11567  }
 11568  
 11569  // ParseTokenUnlocked is a log parse operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
 11570  //
 11571  // Solidity: event TokenUnlocked(address indexed token)
 11572  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenUnlocked(log types.Log) (*BridgeTransferERC20TokenUnlocked, error) {
 11573  	event := new(BridgeTransferERC20TokenUnlocked)
 11574  	if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenUnlocked", log); err != nil {
 11575  		return nil, err
 11576  	}
 11577  	return event, nil
 11578  }
 11579  
 11580  // BridgeTransferERC721ABI is the input ABI used to generate the binding from.
 11581  const BridgeTransferERC721ABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"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\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_tokenURI\",\"type\":\"string\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"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\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]"
 11582  
 11583  // BridgeTransferERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 11584  const BridgeTransferERC721BinRuntime = ``
 11585  
 11586  // BridgeTransferERC721FuncSigs maps the 4-byte function signature to its string representation.
 11587  var BridgeTransferERC721FuncSigs = map[string]string{
 11588  	"3a3099d1": "MAX_OPERATOR()",
 11589  	"9832c1d7": "closedValueTransferVotes(uint64)",
 11590  	"ac6fff0b": "configurationNonce()",
 11591  	"d8cf98ca": "deregisterOperator(address)",
 11592  	"bab2af1d": "deregisterToken(address)",
 11593  	"488af871": "feeOfERC20(address)",
 11594  	"c263b5d6": "feeOfKLAY()",
 11595  	"b3f00674": "feeReceiver()",
 11596  	"b2c01030": "getOperatorList()",
 11597  	"ea21eade": "getRegisteredTokenList()",
 11598  	"afb60223": "handleERC721Transfer(bytes32,address,address,address,uint256,uint64,uint64,string,bytes)",
 11599  	"13a6738a": "handleNoncesToBlockNums(uint64)",
 11600  	"8a75eee2": "handledRequestTx(bytes32)",
 11601  	"48a18a6a": "indexOfTokens(address)",
 11602  	"8f32d59b": "isOwner()",
 11603  	"2014e5d1": "isRunning()",
 11604  	"10693fcd": "lockToken(address)",
 11605  	"5eb7413a": "lockedTokens(address)",
 11606  	"4b40b826": "lowerHandleNonce()",
 11607  	"6e176ec2": "modeMintBurn()",
 11608  	"cf0da290": "onERC721Received(address,uint256,address,bytes)",
 11609  	"cb38f407": "operatorList(uint256)",
 11610  	"5526f76b": "operatorThresholds(uint8)",
 11611  	"13e7c9d8": "operators(address)",
 11612  	"8da5cb5b": "owner()",
 11613  	"989ba0d3": "recoveryBlockNumber()",
 11614  	"3682a450": "registerOperator(address)",
 11615  	"4739f7e5": "registerToken(address,address)",
 11616  	"3e4fe949": "registeredTokenList(uint256)",
 11617  	"8c0bd916": "registeredTokens(address)",
 11618  	"715018a6": "renounceOwnership()",
 11619  	"22604742": "requestERC721Transfer(address,address,uint256,bytes)",
 11620  	"7c1a0302": "requestNonce()",
 11621  	"efdcd974": "setFeeReceiver(address)",
 11622  	"ee2aec65": "setOperatorThreshold(uint8,uint8)",
 11623  	"c877cf37": "start(bool)",
 11624  	"f2fde38b": "transferOwnership(address)",
 11625  	"9ef2017b": "unlockToken(address)",
 11626  	"54edad72": "upperHandleNonce()",
 11627  }
 11628  
 11629  // BridgeTransferERC721 is an auto generated Go binding around a Klaytn contract.
 11630  type BridgeTransferERC721 struct {
 11631  	BridgeTransferERC721Caller     // Read-only binding to the contract
 11632  	BridgeTransferERC721Transactor // Write-only binding to the contract
 11633  	BridgeTransferERC721Filterer   // Log filterer for contract events
 11634  }
 11635  
 11636  // BridgeTransferERC721Caller is an auto generated read-only Go binding around a Klaytn contract.
 11637  type BridgeTransferERC721Caller struct {
 11638  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11639  }
 11640  
 11641  // BridgeTransferERC721Transactor is an auto generated write-only Go binding around a Klaytn contract.
 11642  type BridgeTransferERC721Transactor struct {
 11643  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11644  }
 11645  
 11646  // BridgeTransferERC721Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
 11647  type BridgeTransferERC721Filterer struct {
 11648  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11649  }
 11650  
 11651  // BridgeTransferERC721Session is an auto generated Go binding around a Klaytn contract,
 11652  // with pre-set call and transact options.
 11653  type BridgeTransferERC721Session struct {
 11654  	Contract     *BridgeTransferERC721 // Generic contract binding to set the session for
 11655  	CallOpts     bind.CallOpts         // Call options to use throughout this session
 11656  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
 11657  }
 11658  
 11659  // BridgeTransferERC721CallerSession is an auto generated read-only Go binding around a Klaytn contract,
 11660  // with pre-set call options.
 11661  type BridgeTransferERC721CallerSession struct {
 11662  	Contract *BridgeTransferERC721Caller // Generic contract caller binding to set the session for
 11663  	CallOpts bind.CallOpts               // Call options to use throughout this session
 11664  }
 11665  
 11666  // BridgeTransferERC721TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 11667  // with pre-set transact options.
 11668  type BridgeTransferERC721TransactorSession struct {
 11669  	Contract     *BridgeTransferERC721Transactor // Generic contract transactor binding to set the session for
 11670  	TransactOpts bind.TransactOpts               // Transaction auth options to use throughout this session
 11671  }
 11672  
 11673  // BridgeTransferERC721Raw is an auto generated low-level Go binding around a Klaytn contract.
 11674  type BridgeTransferERC721Raw struct {
 11675  	Contract *BridgeTransferERC721 // Generic contract binding to access the raw methods on
 11676  }
 11677  
 11678  // BridgeTransferERC721CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 11679  type BridgeTransferERC721CallerRaw struct {
 11680  	Contract *BridgeTransferERC721Caller // Generic read-only contract binding to access the raw methods on
 11681  }
 11682  
 11683  // BridgeTransferERC721TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 11684  type BridgeTransferERC721TransactorRaw struct {
 11685  	Contract *BridgeTransferERC721Transactor // Generic write-only contract binding to access the raw methods on
 11686  }
 11687  
 11688  // NewBridgeTransferERC721 creates a new instance of BridgeTransferERC721, bound to a specific deployed contract.
 11689  func NewBridgeTransferERC721(address common.Address, backend bind.ContractBackend) (*BridgeTransferERC721, error) {
 11690  	contract, err := bindBridgeTransferERC721(address, backend, backend, backend)
 11691  	if err != nil {
 11692  		return nil, err
 11693  	}
 11694  	return &BridgeTransferERC721{BridgeTransferERC721Caller: BridgeTransferERC721Caller{contract: contract}, BridgeTransferERC721Transactor: BridgeTransferERC721Transactor{contract: contract}, BridgeTransferERC721Filterer: BridgeTransferERC721Filterer{contract: contract}}, nil
 11695  }
 11696  
 11697  // NewBridgeTransferERC721Caller creates a new read-only instance of BridgeTransferERC721, bound to a specific deployed contract.
 11698  func NewBridgeTransferERC721Caller(address common.Address, caller bind.ContractCaller) (*BridgeTransferERC721Caller, error) {
 11699  	contract, err := bindBridgeTransferERC721(address, caller, nil, nil)
 11700  	if err != nil {
 11701  		return nil, err
 11702  	}
 11703  	return &BridgeTransferERC721Caller{contract: contract}, nil
 11704  }
 11705  
 11706  // NewBridgeTransferERC721Transactor creates a new write-only instance of BridgeTransferERC721, bound to a specific deployed contract.
 11707  func NewBridgeTransferERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransferERC721Transactor, error) {
 11708  	contract, err := bindBridgeTransferERC721(address, nil, transactor, nil)
 11709  	if err != nil {
 11710  		return nil, err
 11711  	}
 11712  	return &BridgeTransferERC721Transactor{contract: contract}, nil
 11713  }
 11714  
 11715  // NewBridgeTransferERC721Filterer creates a new log filterer instance of BridgeTransferERC721, bound to a specific deployed contract.
 11716  func NewBridgeTransferERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTransferERC721Filterer, error) {
 11717  	contract, err := bindBridgeTransferERC721(address, nil, nil, filterer)
 11718  	if err != nil {
 11719  		return nil, err
 11720  	}
 11721  	return &BridgeTransferERC721Filterer{contract: contract}, nil
 11722  }
 11723  
 11724  // bindBridgeTransferERC721 binds a generic wrapper to an already deployed contract.
 11725  func bindBridgeTransferERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 11726  	parsed, err := abi.JSON(strings.NewReader(BridgeTransferERC721ABI))
 11727  	if err != nil {
 11728  		return nil, err
 11729  	}
 11730  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 11731  }
 11732  
 11733  // Call invokes the (constant) contract method with params as input values and
 11734  // sets the output to result. The result type might be a single field for simple
 11735  // returns, a slice of interfaces for anonymous returns and a struct for named
 11736  // returns.
 11737  func (_BridgeTransferERC721 *BridgeTransferERC721Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 11738  	return _BridgeTransferERC721.Contract.BridgeTransferERC721Caller.contract.Call(opts, result, method, params...)
 11739  }
 11740  
 11741  // Transfer initiates a plain transaction to move funds to the contract, calling
 11742  // its default method if one is available.
 11743  func (_BridgeTransferERC721 *BridgeTransferERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 11744  	return _BridgeTransferERC721.Contract.BridgeTransferERC721Transactor.contract.Transfer(opts)
 11745  }
 11746  
 11747  // Transact invokes the (paid) contract method with params as input values.
 11748  func (_BridgeTransferERC721 *BridgeTransferERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 11749  	return _BridgeTransferERC721.Contract.BridgeTransferERC721Transactor.contract.Transact(opts, method, params...)
 11750  }
 11751  
 11752  // Call invokes the (constant) contract method with params as input values and
 11753  // sets the output to result. The result type might be a single field for simple
 11754  // returns, a slice of interfaces for anonymous returns and a struct for named
 11755  // returns.
 11756  func (_BridgeTransferERC721 *BridgeTransferERC721CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 11757  	return _BridgeTransferERC721.Contract.contract.Call(opts, result, method, params...)
 11758  }
 11759  
 11760  // Transfer initiates a plain transaction to move funds to the contract, calling
 11761  // its default method if one is available.
 11762  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 11763  	return _BridgeTransferERC721.Contract.contract.Transfer(opts)
 11764  }
 11765  
 11766  // Transact invokes the (paid) contract method with params as input values.
 11767  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 11768  	return _BridgeTransferERC721.Contract.contract.Transact(opts, method, params...)
 11769  }
 11770  
 11771  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
 11772  //
 11773  // Solidity: function MAX_OPERATOR() view returns(uint64)
 11774  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) {
 11775  	var (
 11776  		ret0 = new(uint64)
 11777  	)
 11778  	out := ret0
 11779  	err := _BridgeTransferERC721.contract.Call(opts, out, "MAX_OPERATOR")
 11780  	return *ret0, err
 11781  }
 11782  
 11783  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
 11784  //
 11785  // Solidity: function MAX_OPERATOR() view returns(uint64)
 11786  func (_BridgeTransferERC721 *BridgeTransferERC721Session) MAXOPERATOR() (uint64, error) {
 11787  	return _BridgeTransferERC721.Contract.MAXOPERATOR(&_BridgeTransferERC721.CallOpts)
 11788  }
 11789  
 11790  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
 11791  //
 11792  // Solidity: function MAX_OPERATOR() view returns(uint64)
 11793  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) MAXOPERATOR() (uint64, error) {
 11794  	return _BridgeTransferERC721.Contract.MAXOPERATOR(&_BridgeTransferERC721.CallOpts)
 11795  }
 11796  
 11797  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
 11798  //
 11799  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
 11800  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) {
 11801  	var (
 11802  		ret0 = new(bool)
 11803  	)
 11804  	out := ret0
 11805  	err := _BridgeTransferERC721.contract.Call(opts, out, "closedValueTransferVotes", arg0)
 11806  	return *ret0, err
 11807  }
 11808  
 11809  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
 11810  //
 11811  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
 11812  func (_BridgeTransferERC721 *BridgeTransferERC721Session) ClosedValueTransferVotes(arg0 uint64) (bool, error) {
 11813  	return _BridgeTransferERC721.Contract.ClosedValueTransferVotes(&_BridgeTransferERC721.CallOpts, arg0)
 11814  }
 11815  
 11816  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
 11817  //
 11818  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
 11819  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) {
 11820  	return _BridgeTransferERC721.Contract.ClosedValueTransferVotes(&_BridgeTransferERC721.CallOpts, arg0)
 11821  }
 11822  
 11823  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
 11824  //
 11825  // Solidity: function configurationNonce() view returns(uint64)
 11826  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) {
 11827  	var (
 11828  		ret0 = new(uint64)
 11829  	)
 11830  	out := ret0
 11831  	err := _BridgeTransferERC721.contract.Call(opts, out, "configurationNonce")
 11832  	return *ret0, err
 11833  }
 11834  
 11835  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
 11836  //
 11837  // Solidity: function configurationNonce() view returns(uint64)
 11838  func (_BridgeTransferERC721 *BridgeTransferERC721Session) ConfigurationNonce() (uint64, error) {
 11839  	return _BridgeTransferERC721.Contract.ConfigurationNonce(&_BridgeTransferERC721.CallOpts)
 11840  }
 11841  
 11842  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
 11843  //
 11844  // Solidity: function configurationNonce() view returns(uint64)
 11845  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) ConfigurationNonce() (uint64, error) {
 11846  	return _BridgeTransferERC721.Contract.ConfigurationNonce(&_BridgeTransferERC721.CallOpts)
 11847  }
 11848  
 11849  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
 11850  //
 11851  // Solidity: function feeOfERC20(address ) view returns(uint256)
 11852  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
 11853  	var (
 11854  		ret0 = new(*big.Int)
 11855  	)
 11856  	out := ret0
 11857  	err := _BridgeTransferERC721.contract.Call(opts, out, "feeOfERC20", arg0)
 11858  	return *ret0, err
 11859  }
 11860  
 11861  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
 11862  //
 11863  // Solidity: function feeOfERC20(address ) view returns(uint256)
 11864  func (_BridgeTransferERC721 *BridgeTransferERC721Session) FeeOfERC20(arg0 common.Address) (*big.Int, error) {
 11865  	return _BridgeTransferERC721.Contract.FeeOfERC20(&_BridgeTransferERC721.CallOpts, arg0)
 11866  }
 11867  
 11868  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
 11869  //
 11870  // Solidity: function feeOfERC20(address ) view returns(uint256)
 11871  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) {
 11872  	return _BridgeTransferERC721.Contract.FeeOfERC20(&_BridgeTransferERC721.CallOpts, arg0)
 11873  }
 11874  
 11875  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
 11876  //
 11877  // Solidity: function feeOfKLAY() view returns(uint256)
 11878  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) {
 11879  	var (
 11880  		ret0 = new(*big.Int)
 11881  	)
 11882  	out := ret0
 11883  	err := _BridgeTransferERC721.contract.Call(opts, out, "feeOfKLAY")
 11884  	return *ret0, err
 11885  }
 11886  
 11887  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
 11888  //
 11889  // Solidity: function feeOfKLAY() view returns(uint256)
 11890  func (_BridgeTransferERC721 *BridgeTransferERC721Session) FeeOfKLAY() (*big.Int, error) {
 11891  	return _BridgeTransferERC721.Contract.FeeOfKLAY(&_BridgeTransferERC721.CallOpts)
 11892  }
 11893  
 11894  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
 11895  //
 11896  // Solidity: function feeOfKLAY() view returns(uint256)
 11897  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) FeeOfKLAY() (*big.Int, error) {
 11898  	return _BridgeTransferERC721.Contract.FeeOfKLAY(&_BridgeTransferERC721.CallOpts)
 11899  }
 11900  
 11901  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
 11902  //
 11903  // Solidity: function feeReceiver() view returns(address)
 11904  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) {
 11905  	var (
 11906  		ret0 = new(common.Address)
 11907  	)
 11908  	out := ret0
 11909  	err := _BridgeTransferERC721.contract.Call(opts, out, "feeReceiver")
 11910  	return *ret0, err
 11911  }
 11912  
 11913  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
 11914  //
 11915  // Solidity: function feeReceiver() view returns(address)
 11916  func (_BridgeTransferERC721 *BridgeTransferERC721Session) FeeReceiver() (common.Address, error) {
 11917  	return _BridgeTransferERC721.Contract.FeeReceiver(&_BridgeTransferERC721.CallOpts)
 11918  }
 11919  
 11920  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
 11921  //
 11922  // Solidity: function feeReceiver() view returns(address)
 11923  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) FeeReceiver() (common.Address, error) {
 11924  	return _BridgeTransferERC721.Contract.FeeReceiver(&_BridgeTransferERC721.CallOpts)
 11925  }
 11926  
 11927  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
 11928  //
 11929  // Solidity: function getOperatorList() view returns(address[])
 11930  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) {
 11931  	var (
 11932  		ret0 = new([]common.Address)
 11933  	)
 11934  	out := ret0
 11935  	err := _BridgeTransferERC721.contract.Call(opts, out, "getOperatorList")
 11936  	return *ret0, err
 11937  }
 11938  
 11939  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
 11940  //
 11941  // Solidity: function getOperatorList() view returns(address[])
 11942  func (_BridgeTransferERC721 *BridgeTransferERC721Session) GetOperatorList() ([]common.Address, error) {
 11943  	return _BridgeTransferERC721.Contract.GetOperatorList(&_BridgeTransferERC721.CallOpts)
 11944  }
 11945  
 11946  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
 11947  //
 11948  // Solidity: function getOperatorList() view returns(address[])
 11949  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) GetOperatorList() ([]common.Address, error) {
 11950  	return _BridgeTransferERC721.Contract.GetOperatorList(&_BridgeTransferERC721.CallOpts)
 11951  }
 11952  
 11953  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
 11954  //
 11955  // Solidity: function getRegisteredTokenList() view returns(address[])
 11956  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) {
 11957  	var (
 11958  		ret0 = new([]common.Address)
 11959  	)
 11960  	out := ret0
 11961  	err := _BridgeTransferERC721.contract.Call(opts, out, "getRegisteredTokenList")
 11962  	return *ret0, err
 11963  }
 11964  
 11965  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
 11966  //
 11967  // Solidity: function getRegisteredTokenList() view returns(address[])
 11968  func (_BridgeTransferERC721 *BridgeTransferERC721Session) GetRegisteredTokenList() ([]common.Address, error) {
 11969  	return _BridgeTransferERC721.Contract.GetRegisteredTokenList(&_BridgeTransferERC721.CallOpts)
 11970  }
 11971  
 11972  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
 11973  //
 11974  // Solidity: function getRegisteredTokenList() view returns(address[])
 11975  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) GetRegisteredTokenList() ([]common.Address, error) {
 11976  	return _BridgeTransferERC721.Contract.GetRegisteredTokenList(&_BridgeTransferERC721.CallOpts)
 11977  }
 11978  
 11979  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
 11980  //
 11981  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
 11982  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) {
 11983  	var (
 11984  		ret0 = new(uint64)
 11985  	)
 11986  	out := ret0
 11987  	err := _BridgeTransferERC721.contract.Call(opts, out, "handleNoncesToBlockNums", arg0)
 11988  	return *ret0, err
 11989  }
 11990  
 11991  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
 11992  //
 11993  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
 11994  func (_BridgeTransferERC721 *BridgeTransferERC721Session) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) {
 11995  	return _BridgeTransferERC721.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC721.CallOpts, arg0)
 11996  }
 11997  
 11998  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
 11999  //
 12000  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
 12001  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) {
 12002  	return _BridgeTransferERC721.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC721.CallOpts, arg0)
 12003  }
 12004  
 12005  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
 12006  //
 12007  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
 12008  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) {
 12009  	var (
 12010  		ret0 = new(bool)
 12011  	)
 12012  	out := ret0
 12013  	err := _BridgeTransferERC721.contract.Call(opts, out, "handledRequestTx", arg0)
 12014  	return *ret0, err
 12015  }
 12016  
 12017  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
 12018  //
 12019  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
 12020  func (_BridgeTransferERC721 *BridgeTransferERC721Session) HandledRequestTx(arg0 [32]byte) (bool, error) {
 12021  	return _BridgeTransferERC721.Contract.HandledRequestTx(&_BridgeTransferERC721.CallOpts, arg0)
 12022  }
 12023  
 12024  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
 12025  //
 12026  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
 12027  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) {
 12028  	return _BridgeTransferERC721.Contract.HandledRequestTx(&_BridgeTransferERC721.CallOpts, arg0)
 12029  }
 12030  
 12031  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
 12032  //
 12033  // Solidity: function indexOfTokens(address ) view returns(uint256)
 12034  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
 12035  	var (
 12036  		ret0 = new(*big.Int)
 12037  	)
 12038  	out := ret0
 12039  	err := _BridgeTransferERC721.contract.Call(opts, out, "indexOfTokens", arg0)
 12040  	return *ret0, err
 12041  }
 12042  
 12043  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
 12044  //
 12045  // Solidity: function indexOfTokens(address ) view returns(uint256)
 12046  func (_BridgeTransferERC721 *BridgeTransferERC721Session) IndexOfTokens(arg0 common.Address) (*big.Int, error) {
 12047  	return _BridgeTransferERC721.Contract.IndexOfTokens(&_BridgeTransferERC721.CallOpts, arg0)
 12048  }
 12049  
 12050  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
 12051  //
 12052  // Solidity: function indexOfTokens(address ) view returns(uint256)
 12053  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) {
 12054  	return _BridgeTransferERC721.Contract.IndexOfTokens(&_BridgeTransferERC721.CallOpts, arg0)
 12055  }
 12056  
 12057  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 12058  //
 12059  // Solidity: function isOwner() view returns(bool)
 12060  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) IsOwner(opts *bind.CallOpts) (bool, error) {
 12061  	var (
 12062  		ret0 = new(bool)
 12063  	)
 12064  	out := ret0
 12065  	err := _BridgeTransferERC721.contract.Call(opts, out, "isOwner")
 12066  	return *ret0, err
 12067  }
 12068  
 12069  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 12070  //
 12071  // Solidity: function isOwner() view returns(bool)
 12072  func (_BridgeTransferERC721 *BridgeTransferERC721Session) IsOwner() (bool, error) {
 12073  	return _BridgeTransferERC721.Contract.IsOwner(&_BridgeTransferERC721.CallOpts)
 12074  }
 12075  
 12076  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 12077  //
 12078  // Solidity: function isOwner() view returns(bool)
 12079  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) IsOwner() (bool, error) {
 12080  	return _BridgeTransferERC721.Contract.IsOwner(&_BridgeTransferERC721.CallOpts)
 12081  }
 12082  
 12083  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
 12084  //
 12085  // Solidity: function isRunning() view returns(bool)
 12086  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) IsRunning(opts *bind.CallOpts) (bool, error) {
 12087  	var (
 12088  		ret0 = new(bool)
 12089  	)
 12090  	out := ret0
 12091  	err := _BridgeTransferERC721.contract.Call(opts, out, "isRunning")
 12092  	return *ret0, err
 12093  }
 12094  
 12095  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
 12096  //
 12097  // Solidity: function isRunning() view returns(bool)
 12098  func (_BridgeTransferERC721 *BridgeTransferERC721Session) IsRunning() (bool, error) {
 12099  	return _BridgeTransferERC721.Contract.IsRunning(&_BridgeTransferERC721.CallOpts)
 12100  }
 12101  
 12102  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
 12103  //
 12104  // Solidity: function isRunning() view returns(bool)
 12105  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) IsRunning() (bool, error) {
 12106  	return _BridgeTransferERC721.Contract.IsRunning(&_BridgeTransferERC721.CallOpts)
 12107  }
 12108  
 12109  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
 12110  //
 12111  // Solidity: function lockedTokens(address ) view returns(bool)
 12112  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
 12113  	var (
 12114  		ret0 = new(bool)
 12115  	)
 12116  	out := ret0
 12117  	err := _BridgeTransferERC721.contract.Call(opts, out, "lockedTokens", arg0)
 12118  	return *ret0, err
 12119  }
 12120  
 12121  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
 12122  //
 12123  // Solidity: function lockedTokens(address ) view returns(bool)
 12124  func (_BridgeTransferERC721 *BridgeTransferERC721Session) LockedTokens(arg0 common.Address) (bool, error) {
 12125  	return _BridgeTransferERC721.Contract.LockedTokens(&_BridgeTransferERC721.CallOpts, arg0)
 12126  }
 12127  
 12128  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
 12129  //
 12130  // Solidity: function lockedTokens(address ) view returns(bool)
 12131  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) LockedTokens(arg0 common.Address) (bool, error) {
 12132  	return _BridgeTransferERC721.Contract.LockedTokens(&_BridgeTransferERC721.CallOpts, arg0)
 12133  }
 12134  
 12135  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
 12136  //
 12137  // Solidity: function lowerHandleNonce() view returns(uint64)
 12138  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) {
 12139  	var (
 12140  		ret0 = new(uint64)
 12141  	)
 12142  	out := ret0
 12143  	err := _BridgeTransferERC721.contract.Call(opts, out, "lowerHandleNonce")
 12144  	return *ret0, err
 12145  }
 12146  
 12147  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
 12148  //
 12149  // Solidity: function lowerHandleNonce() view returns(uint64)
 12150  func (_BridgeTransferERC721 *BridgeTransferERC721Session) LowerHandleNonce() (uint64, error) {
 12151  	return _BridgeTransferERC721.Contract.LowerHandleNonce(&_BridgeTransferERC721.CallOpts)
 12152  }
 12153  
 12154  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
 12155  //
 12156  // Solidity: function lowerHandleNonce() view returns(uint64)
 12157  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) LowerHandleNonce() (uint64, error) {
 12158  	return _BridgeTransferERC721.Contract.LowerHandleNonce(&_BridgeTransferERC721.CallOpts)
 12159  }
 12160  
 12161  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
 12162  //
 12163  // Solidity: function modeMintBurn() view returns(bool)
 12164  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) ModeMintBurn(opts *bind.CallOpts) (bool, error) {
 12165  	var (
 12166  		ret0 = new(bool)
 12167  	)
 12168  	out := ret0
 12169  	err := _BridgeTransferERC721.contract.Call(opts, out, "modeMintBurn")
 12170  	return *ret0, err
 12171  }
 12172  
 12173  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
 12174  //
 12175  // Solidity: function modeMintBurn() view returns(bool)
 12176  func (_BridgeTransferERC721 *BridgeTransferERC721Session) ModeMintBurn() (bool, error) {
 12177  	return _BridgeTransferERC721.Contract.ModeMintBurn(&_BridgeTransferERC721.CallOpts)
 12178  }
 12179  
 12180  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
 12181  //
 12182  // Solidity: function modeMintBurn() view returns(bool)
 12183  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) ModeMintBurn() (bool, error) {
 12184  	return _BridgeTransferERC721.Contract.ModeMintBurn(&_BridgeTransferERC721.CallOpts)
 12185  }
 12186  
 12187  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
 12188  //
 12189  // Solidity: function operatorList(uint256 ) view returns(address)
 12190  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
 12191  	var (
 12192  		ret0 = new(common.Address)
 12193  	)
 12194  	out := ret0
 12195  	err := _BridgeTransferERC721.contract.Call(opts, out, "operatorList", arg0)
 12196  	return *ret0, err
 12197  }
 12198  
 12199  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
 12200  //
 12201  // Solidity: function operatorList(uint256 ) view returns(address)
 12202  func (_BridgeTransferERC721 *BridgeTransferERC721Session) OperatorList(arg0 *big.Int) (common.Address, error) {
 12203  	return _BridgeTransferERC721.Contract.OperatorList(&_BridgeTransferERC721.CallOpts, arg0)
 12204  }
 12205  
 12206  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
 12207  //
 12208  // Solidity: function operatorList(uint256 ) view returns(address)
 12209  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) OperatorList(arg0 *big.Int) (common.Address, error) {
 12210  	return _BridgeTransferERC721.Contract.OperatorList(&_BridgeTransferERC721.CallOpts, arg0)
 12211  }
 12212  
 12213  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
 12214  //
 12215  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
 12216  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) {
 12217  	var (
 12218  		ret0 = new(uint8)
 12219  	)
 12220  	out := ret0
 12221  	err := _BridgeTransferERC721.contract.Call(opts, out, "operatorThresholds", arg0)
 12222  	return *ret0, err
 12223  }
 12224  
 12225  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
 12226  //
 12227  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
 12228  func (_BridgeTransferERC721 *BridgeTransferERC721Session) OperatorThresholds(arg0 uint8) (uint8, error) {
 12229  	return _BridgeTransferERC721.Contract.OperatorThresholds(&_BridgeTransferERC721.CallOpts, arg0)
 12230  }
 12231  
 12232  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
 12233  //
 12234  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
 12235  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) OperatorThresholds(arg0 uint8) (uint8, error) {
 12236  	return _BridgeTransferERC721.Contract.OperatorThresholds(&_BridgeTransferERC721.CallOpts, arg0)
 12237  }
 12238  
 12239  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
 12240  //
 12241  // Solidity: function operators(address ) view returns(bool)
 12242  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
 12243  	var (
 12244  		ret0 = new(bool)
 12245  	)
 12246  	out := ret0
 12247  	err := _BridgeTransferERC721.contract.Call(opts, out, "operators", arg0)
 12248  	return *ret0, err
 12249  }
 12250  
 12251  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
 12252  //
 12253  // Solidity: function operators(address ) view returns(bool)
 12254  func (_BridgeTransferERC721 *BridgeTransferERC721Session) Operators(arg0 common.Address) (bool, error) {
 12255  	return _BridgeTransferERC721.Contract.Operators(&_BridgeTransferERC721.CallOpts, arg0)
 12256  }
 12257  
 12258  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
 12259  //
 12260  // Solidity: function operators(address ) view returns(bool)
 12261  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) Operators(arg0 common.Address) (bool, error) {
 12262  	return _BridgeTransferERC721.Contract.Operators(&_BridgeTransferERC721.CallOpts, arg0)
 12263  }
 12264  
 12265  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 12266  //
 12267  // Solidity: function owner() view returns(address)
 12268  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) Owner(opts *bind.CallOpts) (common.Address, error) {
 12269  	var (
 12270  		ret0 = new(common.Address)
 12271  	)
 12272  	out := ret0
 12273  	err := _BridgeTransferERC721.contract.Call(opts, out, "owner")
 12274  	return *ret0, err
 12275  }
 12276  
 12277  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 12278  //
 12279  // Solidity: function owner() view returns(address)
 12280  func (_BridgeTransferERC721 *BridgeTransferERC721Session) Owner() (common.Address, error) {
 12281  	return _BridgeTransferERC721.Contract.Owner(&_BridgeTransferERC721.CallOpts)
 12282  }
 12283  
 12284  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 12285  //
 12286  // Solidity: function owner() view returns(address)
 12287  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) Owner() (common.Address, error) {
 12288  	return _BridgeTransferERC721.Contract.Owner(&_BridgeTransferERC721.CallOpts)
 12289  }
 12290  
 12291  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
 12292  //
 12293  // Solidity: function recoveryBlockNumber() view returns(uint64)
 12294  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) {
 12295  	var (
 12296  		ret0 = new(uint64)
 12297  	)
 12298  	out := ret0
 12299  	err := _BridgeTransferERC721.contract.Call(opts, out, "recoveryBlockNumber")
 12300  	return *ret0, err
 12301  }
 12302  
 12303  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
 12304  //
 12305  // Solidity: function recoveryBlockNumber() view returns(uint64)
 12306  func (_BridgeTransferERC721 *BridgeTransferERC721Session) RecoveryBlockNumber() (uint64, error) {
 12307  	return _BridgeTransferERC721.Contract.RecoveryBlockNumber(&_BridgeTransferERC721.CallOpts)
 12308  }
 12309  
 12310  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
 12311  //
 12312  // Solidity: function recoveryBlockNumber() view returns(uint64)
 12313  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RecoveryBlockNumber() (uint64, error) {
 12314  	return _BridgeTransferERC721.Contract.RecoveryBlockNumber(&_BridgeTransferERC721.CallOpts)
 12315  }
 12316  
 12317  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
 12318  //
 12319  // Solidity: function registeredTokenList(uint256 ) view returns(address)
 12320  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
 12321  	var (
 12322  		ret0 = new(common.Address)
 12323  	)
 12324  	out := ret0
 12325  	err := _BridgeTransferERC721.contract.Call(opts, out, "registeredTokenList", arg0)
 12326  	return *ret0, err
 12327  }
 12328  
 12329  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
 12330  //
 12331  // Solidity: function registeredTokenList(uint256 ) view returns(address)
 12332  func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisteredTokenList(arg0 *big.Int) (common.Address, error) {
 12333  	return _BridgeTransferERC721.Contract.RegisteredTokenList(&_BridgeTransferERC721.CallOpts, arg0)
 12334  }
 12335  
 12336  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
 12337  //
 12338  // Solidity: function registeredTokenList(uint256 ) view returns(address)
 12339  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) {
 12340  	return _BridgeTransferERC721.Contract.RegisteredTokenList(&_BridgeTransferERC721.CallOpts, arg0)
 12341  }
 12342  
 12343  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
 12344  //
 12345  // Solidity: function registeredTokens(address ) view returns(address)
 12346  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) {
 12347  	var (
 12348  		ret0 = new(common.Address)
 12349  	)
 12350  	out := ret0
 12351  	err := _BridgeTransferERC721.contract.Call(opts, out, "registeredTokens", arg0)
 12352  	return *ret0, err
 12353  }
 12354  
 12355  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
 12356  //
 12357  // Solidity: function registeredTokens(address ) view returns(address)
 12358  func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisteredTokens(arg0 common.Address) (common.Address, error) {
 12359  	return _BridgeTransferERC721.Contract.RegisteredTokens(&_BridgeTransferERC721.CallOpts, arg0)
 12360  }
 12361  
 12362  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
 12363  //
 12364  // Solidity: function registeredTokens(address ) view returns(address)
 12365  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RegisteredTokens(arg0 common.Address) (common.Address, error) {
 12366  	return _BridgeTransferERC721.Contract.RegisteredTokens(&_BridgeTransferERC721.CallOpts, arg0)
 12367  }
 12368  
 12369  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
 12370  //
 12371  // Solidity: function requestNonce() view returns(uint64)
 12372  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RequestNonce(opts *bind.CallOpts) (uint64, error) {
 12373  	var (
 12374  		ret0 = new(uint64)
 12375  	)
 12376  	out := ret0
 12377  	err := _BridgeTransferERC721.contract.Call(opts, out, "requestNonce")
 12378  	return *ret0, err
 12379  }
 12380  
 12381  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
 12382  //
 12383  // Solidity: function requestNonce() view returns(uint64)
 12384  func (_BridgeTransferERC721 *BridgeTransferERC721Session) RequestNonce() (uint64, error) {
 12385  	return _BridgeTransferERC721.Contract.RequestNonce(&_BridgeTransferERC721.CallOpts)
 12386  }
 12387  
 12388  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
 12389  //
 12390  // Solidity: function requestNonce() view returns(uint64)
 12391  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RequestNonce() (uint64, error) {
 12392  	return _BridgeTransferERC721.Contract.RequestNonce(&_BridgeTransferERC721.CallOpts)
 12393  }
 12394  
 12395  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
 12396  //
 12397  // Solidity: function upperHandleNonce() view returns(uint64)
 12398  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) {
 12399  	var (
 12400  		ret0 = new(uint64)
 12401  	)
 12402  	out := ret0
 12403  	err := _BridgeTransferERC721.contract.Call(opts, out, "upperHandleNonce")
 12404  	return *ret0, err
 12405  }
 12406  
 12407  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
 12408  //
 12409  // Solidity: function upperHandleNonce() view returns(uint64)
 12410  func (_BridgeTransferERC721 *BridgeTransferERC721Session) UpperHandleNonce() (uint64, error) {
 12411  	return _BridgeTransferERC721.Contract.UpperHandleNonce(&_BridgeTransferERC721.CallOpts)
 12412  }
 12413  
 12414  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
 12415  //
 12416  // Solidity: function upperHandleNonce() view returns(uint64)
 12417  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) UpperHandleNonce() (uint64, error) {
 12418  	return _BridgeTransferERC721.Contract.UpperHandleNonce(&_BridgeTransferERC721.CallOpts)
 12419  }
 12420  
 12421  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
 12422  //
 12423  // Solidity: function deregisterOperator(address _operator) returns()
 12424  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
 12425  	return _BridgeTransferERC721.contract.Transact(opts, "deregisterOperator", _operator)
 12426  }
 12427  
 12428  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
 12429  //
 12430  // Solidity: function deregisterOperator(address _operator) returns()
 12431  func (_BridgeTransferERC721 *BridgeTransferERC721Session) DeregisterOperator(_operator common.Address) (*types.Transaction, error) {
 12432  	return _BridgeTransferERC721.Contract.DeregisterOperator(&_BridgeTransferERC721.TransactOpts, _operator)
 12433  }
 12434  
 12435  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
 12436  //
 12437  // Solidity: function deregisterOperator(address _operator) returns()
 12438  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) {
 12439  	return _BridgeTransferERC721.Contract.DeregisterOperator(&_BridgeTransferERC721.TransactOpts, _operator)
 12440  }
 12441  
 12442  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
 12443  //
 12444  // Solidity: function deregisterToken(address _token) returns()
 12445  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) DeregisterToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
 12446  	return _BridgeTransferERC721.contract.Transact(opts, "deregisterToken", _token)
 12447  }
 12448  
 12449  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
 12450  //
 12451  // Solidity: function deregisterToken(address _token) returns()
 12452  func (_BridgeTransferERC721 *BridgeTransferERC721Session) DeregisterToken(_token common.Address) (*types.Transaction, error) {
 12453  	return _BridgeTransferERC721.Contract.DeregisterToken(&_BridgeTransferERC721.TransactOpts, _token)
 12454  }
 12455  
 12456  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
 12457  //
 12458  // Solidity: function deregisterToken(address _token) returns()
 12459  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) DeregisterToken(_token common.Address) (*types.Transaction, error) {
 12460  	return _BridgeTransferERC721.Contract.DeregisterToken(&_BridgeTransferERC721.TransactOpts, _token)
 12461  }
 12462  
 12463  // HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223.
 12464  //
 12465  // Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestedNonce, uint64 _requestedBlockNumber, string _tokenURI, bytes _extraData) returns()
 12466  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) HandleERC721Transfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) {
 12467  	return _BridgeTransferERC721.contract.Transact(opts, "handleERC721Transfer", _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestedNonce, _requestedBlockNumber, _tokenURI, _extraData)
 12468  }
 12469  
 12470  // HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223.
 12471  //
 12472  // Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestedNonce, uint64 _requestedBlockNumber, string _tokenURI, bytes _extraData) returns()
 12473  func (_BridgeTransferERC721 *BridgeTransferERC721Session) HandleERC721Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) {
 12474  	return _BridgeTransferERC721.Contract.HandleERC721Transfer(&_BridgeTransferERC721.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestedNonce, _requestedBlockNumber, _tokenURI, _extraData)
 12475  }
 12476  
 12477  // HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223.
 12478  //
 12479  // Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestedNonce, uint64 _requestedBlockNumber, string _tokenURI, bytes _extraData) returns()
 12480  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) HandleERC721Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) {
 12481  	return _BridgeTransferERC721.Contract.HandleERC721Transfer(&_BridgeTransferERC721.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestedNonce, _requestedBlockNumber, _tokenURI, _extraData)
 12482  }
 12483  
 12484  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
 12485  //
 12486  // Solidity: function lockToken(address _token) returns()
 12487  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) LockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
 12488  	return _BridgeTransferERC721.contract.Transact(opts, "lockToken", _token)
 12489  }
 12490  
 12491  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
 12492  //
 12493  // Solidity: function lockToken(address _token) returns()
 12494  func (_BridgeTransferERC721 *BridgeTransferERC721Session) LockToken(_token common.Address) (*types.Transaction, error) {
 12495  	return _BridgeTransferERC721.Contract.LockToken(&_BridgeTransferERC721.TransactOpts, _token)
 12496  }
 12497  
 12498  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
 12499  //
 12500  // Solidity: function lockToken(address _token) returns()
 12501  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) LockToken(_token common.Address) (*types.Transaction, error) {
 12502  	return _BridgeTransferERC721.Contract.LockToken(&_BridgeTransferERC721.TransactOpts, _token)
 12503  }
 12504  
 12505  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
 12506  //
 12507  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
 12508  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) OnERC721Received(opts *bind.TransactOpts, _from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
 12509  	return _BridgeTransferERC721.contract.Transact(opts, "onERC721Received", _from, _tokenId, _to, _extraData)
 12510  }
 12511  
 12512  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
 12513  //
 12514  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
 12515  func (_BridgeTransferERC721 *BridgeTransferERC721Session) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
 12516  	return _BridgeTransferERC721.Contract.OnERC721Received(&_BridgeTransferERC721.TransactOpts, _from, _tokenId, _to, _extraData)
 12517  }
 12518  
 12519  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
 12520  //
 12521  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
 12522  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
 12523  	return _BridgeTransferERC721.Contract.OnERC721Received(&_BridgeTransferERC721.TransactOpts, _from, _tokenId, _to, _extraData)
 12524  }
 12525  
 12526  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
 12527  //
 12528  // Solidity: function registerOperator(address _operator) returns()
 12529  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
 12530  	return _BridgeTransferERC721.contract.Transact(opts, "registerOperator", _operator)
 12531  }
 12532  
 12533  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
 12534  //
 12535  // Solidity: function registerOperator(address _operator) returns()
 12536  func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisterOperator(_operator common.Address) (*types.Transaction, error) {
 12537  	return _BridgeTransferERC721.Contract.RegisterOperator(&_BridgeTransferERC721.TransactOpts, _operator)
 12538  }
 12539  
 12540  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
 12541  //
 12542  // Solidity: function registerOperator(address _operator) returns()
 12543  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) {
 12544  	return _BridgeTransferERC721.Contract.RegisterOperator(&_BridgeTransferERC721.TransactOpts, _operator)
 12545  }
 12546  
 12547  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
 12548  //
 12549  // Solidity: function registerToken(address _token, address _cToken) returns()
 12550  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RegisterToken(opts *bind.TransactOpts, _token common.Address, _cToken common.Address) (*types.Transaction, error) {
 12551  	return _BridgeTransferERC721.contract.Transact(opts, "registerToken", _token, _cToken)
 12552  }
 12553  
 12554  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
 12555  //
 12556  // Solidity: function registerToken(address _token, address _cToken) returns()
 12557  func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) {
 12558  	return _BridgeTransferERC721.Contract.RegisterToken(&_BridgeTransferERC721.TransactOpts, _token, _cToken)
 12559  }
 12560  
 12561  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
 12562  //
 12563  // Solidity: function registerToken(address _token, address _cToken) returns()
 12564  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) {
 12565  	return _BridgeTransferERC721.Contract.RegisterToken(&_BridgeTransferERC721.TransactOpts, _token, _cToken)
 12566  }
 12567  
 12568  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 12569  //
 12570  // Solidity: function renounceOwnership() returns()
 12571  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
 12572  	return _BridgeTransferERC721.contract.Transact(opts, "renounceOwnership")
 12573  }
 12574  
 12575  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 12576  //
 12577  // Solidity: function renounceOwnership() returns()
 12578  func (_BridgeTransferERC721 *BridgeTransferERC721Session) RenounceOwnership() (*types.Transaction, error) {
 12579  	return _BridgeTransferERC721.Contract.RenounceOwnership(&_BridgeTransferERC721.TransactOpts)
 12580  }
 12581  
 12582  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 12583  //
 12584  // Solidity: function renounceOwnership() returns()
 12585  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RenounceOwnership() (*types.Transaction, error) {
 12586  	return _BridgeTransferERC721.Contract.RenounceOwnership(&_BridgeTransferERC721.TransactOpts)
 12587  }
 12588  
 12589  // RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742.
 12590  //
 12591  // Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns()
 12592  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RequestERC721Transfer(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) {
 12593  	return _BridgeTransferERC721.contract.Transact(opts, "requestERC721Transfer", _tokenAddress, _to, _tokenId, _extraData)
 12594  }
 12595  
 12596  // RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742.
 12597  //
 12598  // Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns()
 12599  func (_BridgeTransferERC721 *BridgeTransferERC721Session) RequestERC721Transfer(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) {
 12600  	return _BridgeTransferERC721.Contract.RequestERC721Transfer(&_BridgeTransferERC721.TransactOpts, _tokenAddress, _to, _tokenId, _extraData)
 12601  }
 12602  
 12603  // RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742.
 12604  //
 12605  // Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns()
 12606  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RequestERC721Transfer(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) {
 12607  	return _BridgeTransferERC721.Contract.RequestERC721Transfer(&_BridgeTransferERC721.TransactOpts, _tokenAddress, _to, _tokenId, _extraData)
 12608  }
 12609  
 12610  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
 12611  //
 12612  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
 12613  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) {
 12614  	return _BridgeTransferERC721.contract.Transact(opts, "setFeeReceiver", _feeReceiver)
 12615  }
 12616  
 12617  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
 12618  //
 12619  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
 12620  func (_BridgeTransferERC721 *BridgeTransferERC721Session) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) {
 12621  	return _BridgeTransferERC721.Contract.SetFeeReceiver(&_BridgeTransferERC721.TransactOpts, _feeReceiver)
 12622  }
 12623  
 12624  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
 12625  //
 12626  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
 12627  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) {
 12628  	return _BridgeTransferERC721.Contract.SetFeeReceiver(&_BridgeTransferERC721.TransactOpts, _feeReceiver)
 12629  }
 12630  
 12631  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
 12632  //
 12633  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
 12634  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) {
 12635  	return _BridgeTransferERC721.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold)
 12636  }
 12637  
 12638  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
 12639  //
 12640  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
 12641  func (_BridgeTransferERC721 *BridgeTransferERC721Session) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) {
 12642  	return _BridgeTransferERC721.Contract.SetOperatorThreshold(&_BridgeTransferERC721.TransactOpts, _voteType, _threshold)
 12643  }
 12644  
 12645  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
 12646  //
 12647  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
 12648  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) {
 12649  	return _BridgeTransferERC721.Contract.SetOperatorThreshold(&_BridgeTransferERC721.TransactOpts, _voteType, _threshold)
 12650  }
 12651  
 12652  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
 12653  //
 12654  // Solidity: function start(bool _status) returns()
 12655  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) {
 12656  	return _BridgeTransferERC721.contract.Transact(opts, "start", _status)
 12657  }
 12658  
 12659  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
 12660  //
 12661  // Solidity: function start(bool _status) returns()
 12662  func (_BridgeTransferERC721 *BridgeTransferERC721Session) Start(_status bool) (*types.Transaction, error) {
 12663  	return _BridgeTransferERC721.Contract.Start(&_BridgeTransferERC721.TransactOpts, _status)
 12664  }
 12665  
 12666  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
 12667  //
 12668  // Solidity: function start(bool _status) returns()
 12669  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) Start(_status bool) (*types.Transaction, error) {
 12670  	return _BridgeTransferERC721.Contract.Start(&_BridgeTransferERC721.TransactOpts, _status)
 12671  }
 12672  
 12673  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 12674  //
 12675  // Solidity: function transferOwnership(address newOwner) returns()
 12676  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
 12677  	return _BridgeTransferERC721.contract.Transact(opts, "transferOwnership", newOwner)
 12678  }
 12679  
 12680  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 12681  //
 12682  // Solidity: function transferOwnership(address newOwner) returns()
 12683  func (_BridgeTransferERC721 *BridgeTransferERC721Session) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
 12684  	return _BridgeTransferERC721.Contract.TransferOwnership(&_BridgeTransferERC721.TransactOpts, newOwner)
 12685  }
 12686  
 12687  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 12688  //
 12689  // Solidity: function transferOwnership(address newOwner) returns()
 12690  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
 12691  	return _BridgeTransferERC721.Contract.TransferOwnership(&_BridgeTransferERC721.TransactOpts, newOwner)
 12692  }
 12693  
 12694  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
 12695  //
 12696  // Solidity: function unlockToken(address _token) returns()
 12697  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) UnlockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
 12698  	return _BridgeTransferERC721.contract.Transact(opts, "unlockToken", _token)
 12699  }
 12700  
 12701  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
 12702  //
 12703  // Solidity: function unlockToken(address _token) returns()
 12704  func (_BridgeTransferERC721 *BridgeTransferERC721Session) UnlockToken(_token common.Address) (*types.Transaction, error) {
 12705  	return _BridgeTransferERC721.Contract.UnlockToken(&_BridgeTransferERC721.TransactOpts, _token)
 12706  }
 12707  
 12708  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
 12709  //
 12710  // Solidity: function unlockToken(address _token) returns()
 12711  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) UnlockToken(_token common.Address) (*types.Transaction, error) {
 12712  	return _BridgeTransferERC721.Contract.UnlockToken(&_BridgeTransferERC721.TransactOpts, _token)
 12713  }
 12714  
 12715  // BridgeTransferERC721ERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeTransferERC721 contract.
 12716  type BridgeTransferERC721ERC20FeeChangedIterator struct {
 12717  	Event *BridgeTransferERC721ERC20FeeChanged // Event containing the contract specifics and raw log
 12718  
 12719  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 12720  	event    string              // Event name to use for unpacking event data
 12721  
 12722  	logs chan types.Log      // Log channel receiving the found contract events
 12723  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 12724  	done bool                // Whether the subscription completed delivering logs
 12725  	fail error               // Occurred error to stop iteration
 12726  }
 12727  
 12728  // Next advances the iterator to the subsequent event, returning whether there
 12729  // are any more events found. In case of a retrieval or parsing error, false is
 12730  // returned and Error() can be queried for the exact failure.
 12731  func (it *BridgeTransferERC721ERC20FeeChangedIterator) Next() bool {
 12732  	// If the iterator failed, stop iterating
 12733  	if it.fail != nil {
 12734  		return false
 12735  	}
 12736  	// If the iterator completed, deliver directly whatever's available
 12737  	if it.done {
 12738  		select {
 12739  		case log := <-it.logs:
 12740  			it.Event = new(BridgeTransferERC721ERC20FeeChanged)
 12741  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12742  				it.fail = err
 12743  				return false
 12744  			}
 12745  			it.Event.Raw = log
 12746  			return true
 12747  
 12748  		default:
 12749  			return false
 12750  		}
 12751  	}
 12752  	// Iterator still in progress, wait for either a data or an error event
 12753  	select {
 12754  	case log := <-it.logs:
 12755  		it.Event = new(BridgeTransferERC721ERC20FeeChanged)
 12756  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12757  			it.fail = err
 12758  			return false
 12759  		}
 12760  		it.Event.Raw = log
 12761  		return true
 12762  
 12763  	case err := <-it.sub.Err():
 12764  		it.done = true
 12765  		it.fail = err
 12766  		return it.Next()
 12767  	}
 12768  }
 12769  
 12770  // Error returns any retrieval or parsing error occurred during filtering.
 12771  func (it *BridgeTransferERC721ERC20FeeChangedIterator) Error() error {
 12772  	return it.fail
 12773  }
 12774  
 12775  // Close terminates the iteration process, releasing any pending underlying
 12776  // resources.
 12777  func (it *BridgeTransferERC721ERC20FeeChangedIterator) Close() error {
 12778  	it.sub.Unsubscribe()
 12779  	return nil
 12780  }
 12781  
 12782  // BridgeTransferERC721ERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeTransferERC721 contract.
 12783  type BridgeTransferERC721ERC20FeeChanged struct {
 12784  	Token common.Address
 12785  	Fee   *big.Int
 12786  	Raw   types.Log // Blockchain specific contextual infos
 12787  }
 12788  
 12789  // FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
 12790  //
 12791  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
 12792  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeTransferERC721ERC20FeeChangedIterator, error) {
 12793  
 12794  	var tokenRule []interface{}
 12795  	for _, tokenItem := range token {
 12796  		tokenRule = append(tokenRule, tokenItem)
 12797  	}
 12798  	var feeRule []interface{}
 12799  	for _, feeItem := range fee {
 12800  		feeRule = append(feeRule, feeItem)
 12801  	}
 12802  
 12803  	logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule)
 12804  	if err != nil {
 12805  		return nil, err
 12806  	}
 12807  	return &BridgeTransferERC721ERC20FeeChangedIterator{contract: _BridgeTransferERC721.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil
 12808  }
 12809  
 12810  // WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
 12811  //
 12812  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
 12813  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721ERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) {
 12814  
 12815  	var tokenRule []interface{}
 12816  	for _, tokenItem := range token {
 12817  		tokenRule = append(tokenRule, tokenItem)
 12818  	}
 12819  	var feeRule []interface{}
 12820  	for _, feeItem := range fee {
 12821  		feeRule = append(feeRule, feeItem)
 12822  	}
 12823  
 12824  	logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule)
 12825  	if err != nil {
 12826  		return nil, err
 12827  	}
 12828  	return event.NewSubscription(func(quit <-chan struct{}) error {
 12829  		defer sub.Unsubscribe()
 12830  		for {
 12831  			select {
 12832  			case log := <-logs:
 12833  				// New log arrived, parse the event and forward to the user
 12834  				event := new(BridgeTransferERC721ERC20FeeChanged)
 12835  				if err := _BridgeTransferERC721.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil {
 12836  					return err
 12837  				}
 12838  				event.Raw = log
 12839  
 12840  				select {
 12841  				case sink <- event:
 12842  				case err := <-sub.Err():
 12843  					return err
 12844  				case <-quit:
 12845  					return nil
 12846  				}
 12847  			case err := <-sub.Err():
 12848  				return err
 12849  			case <-quit:
 12850  				return nil
 12851  			}
 12852  		}
 12853  	}), nil
 12854  }
 12855  
 12856  // ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
 12857  //
 12858  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
 12859  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseERC20FeeChanged(log types.Log) (*BridgeTransferERC721ERC20FeeChanged, error) {
 12860  	event := new(BridgeTransferERC721ERC20FeeChanged)
 12861  	if err := _BridgeTransferERC721.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil {
 12862  		return nil, err
 12863  	}
 12864  	return event, nil
 12865  }
 12866  
 12867  // BridgeTransferERC721FeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeTransferERC721 contract.
 12868  type BridgeTransferERC721FeeReceiverChangedIterator struct {
 12869  	Event *BridgeTransferERC721FeeReceiverChanged // Event containing the contract specifics and raw log
 12870  
 12871  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 12872  	event    string              // Event name to use for unpacking event data
 12873  
 12874  	logs chan types.Log      // Log channel receiving the found contract events
 12875  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 12876  	done bool                // Whether the subscription completed delivering logs
 12877  	fail error               // Occurred error to stop iteration
 12878  }
 12879  
 12880  // Next advances the iterator to the subsequent event, returning whether there
 12881  // are any more events found. In case of a retrieval or parsing error, false is
 12882  // returned and Error() can be queried for the exact failure.
 12883  func (it *BridgeTransferERC721FeeReceiverChangedIterator) Next() bool {
 12884  	// If the iterator failed, stop iterating
 12885  	if it.fail != nil {
 12886  		return false
 12887  	}
 12888  	// If the iterator completed, deliver directly whatever's available
 12889  	if it.done {
 12890  		select {
 12891  		case log := <-it.logs:
 12892  			it.Event = new(BridgeTransferERC721FeeReceiverChanged)
 12893  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12894  				it.fail = err
 12895  				return false
 12896  			}
 12897  			it.Event.Raw = log
 12898  			return true
 12899  
 12900  		default:
 12901  			return false
 12902  		}
 12903  	}
 12904  	// Iterator still in progress, wait for either a data or an error event
 12905  	select {
 12906  	case log := <-it.logs:
 12907  		it.Event = new(BridgeTransferERC721FeeReceiverChanged)
 12908  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12909  			it.fail = err
 12910  			return false
 12911  		}
 12912  		it.Event.Raw = log
 12913  		return true
 12914  
 12915  	case err := <-it.sub.Err():
 12916  		it.done = true
 12917  		it.fail = err
 12918  		return it.Next()
 12919  	}
 12920  }
 12921  
 12922  // Error returns any retrieval or parsing error occurred during filtering.
 12923  func (it *BridgeTransferERC721FeeReceiverChangedIterator) Error() error {
 12924  	return it.fail
 12925  }
 12926  
 12927  // Close terminates the iteration process, releasing any pending underlying
 12928  // resources.
 12929  func (it *BridgeTransferERC721FeeReceiverChangedIterator) Close() error {
 12930  	it.sub.Unsubscribe()
 12931  	return nil
 12932  }
 12933  
 12934  // BridgeTransferERC721FeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeTransferERC721 contract.
 12935  type BridgeTransferERC721FeeReceiverChanged struct {
 12936  	FeeReceiver common.Address
 12937  	Raw         types.Log // Blockchain specific contextual infos
 12938  }
 12939  
 12940  // FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
 12941  //
 12942  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
 12943  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeTransferERC721FeeReceiverChangedIterator, error) {
 12944  
 12945  	var feeReceiverRule []interface{}
 12946  	for _, feeReceiverItem := range feeReceiver {
 12947  		feeReceiverRule = append(feeReceiverRule, feeReceiverItem)
 12948  	}
 12949  
 12950  	logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule)
 12951  	if err != nil {
 12952  		return nil, err
 12953  	}
 12954  	return &BridgeTransferERC721FeeReceiverChangedIterator{contract: _BridgeTransferERC721.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil
 12955  }
 12956  
 12957  // WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
 12958  //
 12959  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
 12960  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721FeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) {
 12961  
 12962  	var feeReceiverRule []interface{}
 12963  	for _, feeReceiverItem := range feeReceiver {
 12964  		feeReceiverRule = append(feeReceiverRule, feeReceiverItem)
 12965  	}
 12966  
 12967  	logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule)
 12968  	if err != nil {
 12969  		return nil, err
 12970  	}
 12971  	return event.NewSubscription(func(quit <-chan struct{}) error {
 12972  		defer sub.Unsubscribe()
 12973  		for {
 12974  			select {
 12975  			case log := <-logs:
 12976  				// New log arrived, parse the event and forward to the user
 12977  				event := new(BridgeTransferERC721FeeReceiverChanged)
 12978  				if err := _BridgeTransferERC721.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil {
 12979  					return err
 12980  				}
 12981  				event.Raw = log
 12982  
 12983  				select {
 12984  				case sink <- event:
 12985  				case err := <-sub.Err():
 12986  					return err
 12987  				case <-quit:
 12988  					return nil
 12989  				}
 12990  			case err := <-sub.Err():
 12991  				return err
 12992  			case <-quit:
 12993  				return nil
 12994  			}
 12995  		}
 12996  	}), nil
 12997  }
 12998  
 12999  // ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
 13000  //
 13001  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
 13002  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseFeeReceiverChanged(log types.Log) (*BridgeTransferERC721FeeReceiverChanged, error) {
 13003  	event := new(BridgeTransferERC721FeeReceiverChanged)
 13004  	if err := _BridgeTransferERC721.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil {
 13005  		return nil, err
 13006  	}
 13007  	return event, nil
 13008  }
 13009  
 13010  // BridgeTransferERC721HandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the BridgeTransferERC721 contract.
 13011  type BridgeTransferERC721HandleValueTransferIterator struct {
 13012  	Event *BridgeTransferERC721HandleValueTransfer // Event containing the contract specifics and raw log
 13013  
 13014  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 13015  	event    string              // Event name to use for unpacking event data
 13016  
 13017  	logs chan types.Log      // Log channel receiving the found contract events
 13018  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 13019  	done bool                // Whether the subscription completed delivering logs
 13020  	fail error               // Occurred error to stop iteration
 13021  }
 13022  
 13023  // Next advances the iterator to the subsequent event, returning whether there
 13024  // are any more events found. In case of a retrieval or parsing error, false is
 13025  // returned and Error() can be queried for the exact failure.
 13026  func (it *BridgeTransferERC721HandleValueTransferIterator) Next() bool {
 13027  	// If the iterator failed, stop iterating
 13028  	if it.fail != nil {
 13029  		return false
 13030  	}
 13031  	// If the iterator completed, deliver directly whatever's available
 13032  	if it.done {
 13033  		select {
 13034  		case log := <-it.logs:
 13035  			it.Event = new(BridgeTransferERC721HandleValueTransfer)
 13036  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13037  				it.fail = err
 13038  				return false
 13039  			}
 13040  			it.Event.Raw = log
 13041  			return true
 13042  
 13043  		default:
 13044  			return false
 13045  		}
 13046  	}
 13047  	// Iterator still in progress, wait for either a data or an error event
 13048  	select {
 13049  	case log := <-it.logs:
 13050  		it.Event = new(BridgeTransferERC721HandleValueTransfer)
 13051  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13052  			it.fail = err
 13053  			return false
 13054  		}
 13055  		it.Event.Raw = log
 13056  		return true
 13057  
 13058  	case err := <-it.sub.Err():
 13059  		it.done = true
 13060  		it.fail = err
 13061  		return it.Next()
 13062  	}
 13063  }
 13064  
 13065  // Error returns any retrieval or parsing error occurred during filtering.
 13066  func (it *BridgeTransferERC721HandleValueTransferIterator) Error() error {
 13067  	return it.fail
 13068  }
 13069  
 13070  // Close terminates the iteration process, releasing any pending underlying
 13071  // resources.
 13072  func (it *BridgeTransferERC721HandleValueTransferIterator) Close() error {
 13073  	it.sub.Unsubscribe()
 13074  	return nil
 13075  }
 13076  
 13077  // BridgeTransferERC721HandleValueTransfer represents a HandleValueTransfer event raised by the BridgeTransferERC721 contract.
 13078  type BridgeTransferERC721HandleValueTransfer struct {
 13079  	RequestTxHash    [32]byte
 13080  	TokenType        uint8
 13081  	From             common.Address
 13082  	To               common.Address
 13083  	TokenAddress     common.Address
 13084  	ValueOrTokenId   *big.Int
 13085  	HandleNonce      uint64
 13086  	LowerHandleNonce uint64
 13087  	ExtraData        []byte
 13088  	Raw              types.Log // Blockchain specific contextual infos
 13089  }
 13090  
 13091  // FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
 13092  //
 13093  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
 13094  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC721HandleValueTransferIterator, error) {
 13095  
 13096  	var fromRule []interface{}
 13097  	for _, fromItem := range from {
 13098  		fromRule = append(fromRule, fromItem)
 13099  	}
 13100  	var toRule []interface{}
 13101  	for _, toItem := range to {
 13102  		toRule = append(toRule, toItem)
 13103  	}
 13104  	var tokenAddressRule []interface{}
 13105  	for _, tokenAddressItem := range tokenAddress {
 13106  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 13107  	}
 13108  
 13109  	logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule)
 13110  	if err != nil {
 13111  		return nil, err
 13112  	}
 13113  	return &BridgeTransferERC721HandleValueTransferIterator{contract: _BridgeTransferERC721.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil
 13114  }
 13115  
 13116  // WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
 13117  //
 13118  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
 13119  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721HandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
 13120  
 13121  	var fromRule []interface{}
 13122  	for _, fromItem := range from {
 13123  		fromRule = append(fromRule, fromItem)
 13124  	}
 13125  	var toRule []interface{}
 13126  	for _, toItem := range to {
 13127  		toRule = append(toRule, toItem)
 13128  	}
 13129  	var tokenAddressRule []interface{}
 13130  	for _, tokenAddressItem := range tokenAddress {
 13131  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 13132  	}
 13133  
 13134  	logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule)
 13135  	if err != nil {
 13136  		return nil, err
 13137  	}
 13138  	return event.NewSubscription(func(quit <-chan struct{}) error {
 13139  		defer sub.Unsubscribe()
 13140  		for {
 13141  			select {
 13142  			case log := <-logs:
 13143  				// New log arrived, parse the event and forward to the user
 13144  				event := new(BridgeTransferERC721HandleValueTransfer)
 13145  				if err := _BridgeTransferERC721.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil {
 13146  					return err
 13147  				}
 13148  				event.Raw = log
 13149  
 13150  				select {
 13151  				case sink <- event:
 13152  				case err := <-sub.Err():
 13153  					return err
 13154  				case <-quit:
 13155  					return nil
 13156  				}
 13157  			case err := <-sub.Err():
 13158  				return err
 13159  			case <-quit:
 13160  				return nil
 13161  			}
 13162  		}
 13163  	}), nil
 13164  }
 13165  
 13166  // ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
 13167  //
 13168  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
 13169  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseHandleValueTransfer(log types.Log) (*BridgeTransferERC721HandleValueTransfer, error) {
 13170  	event := new(BridgeTransferERC721HandleValueTransfer)
 13171  	if err := _BridgeTransferERC721.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil {
 13172  		return nil, err
 13173  	}
 13174  	return event, nil
 13175  }
 13176  
 13177  // BridgeTransferERC721KLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeTransferERC721 contract.
 13178  type BridgeTransferERC721KLAYFeeChangedIterator struct {
 13179  	Event *BridgeTransferERC721KLAYFeeChanged // Event containing the contract specifics and raw log
 13180  
 13181  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 13182  	event    string              // Event name to use for unpacking event data
 13183  
 13184  	logs chan types.Log      // Log channel receiving the found contract events
 13185  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 13186  	done bool                // Whether the subscription completed delivering logs
 13187  	fail error               // Occurred error to stop iteration
 13188  }
 13189  
 13190  // Next advances the iterator to the subsequent event, returning whether there
 13191  // are any more events found. In case of a retrieval or parsing error, false is
 13192  // returned and Error() can be queried for the exact failure.
 13193  func (it *BridgeTransferERC721KLAYFeeChangedIterator) Next() bool {
 13194  	// If the iterator failed, stop iterating
 13195  	if it.fail != nil {
 13196  		return false
 13197  	}
 13198  	// If the iterator completed, deliver directly whatever's available
 13199  	if it.done {
 13200  		select {
 13201  		case log := <-it.logs:
 13202  			it.Event = new(BridgeTransferERC721KLAYFeeChanged)
 13203  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13204  				it.fail = err
 13205  				return false
 13206  			}
 13207  			it.Event.Raw = log
 13208  			return true
 13209  
 13210  		default:
 13211  			return false
 13212  		}
 13213  	}
 13214  	// Iterator still in progress, wait for either a data or an error event
 13215  	select {
 13216  	case log := <-it.logs:
 13217  		it.Event = new(BridgeTransferERC721KLAYFeeChanged)
 13218  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13219  			it.fail = err
 13220  			return false
 13221  		}
 13222  		it.Event.Raw = log
 13223  		return true
 13224  
 13225  	case err := <-it.sub.Err():
 13226  		it.done = true
 13227  		it.fail = err
 13228  		return it.Next()
 13229  	}
 13230  }
 13231  
 13232  // Error returns any retrieval or parsing error occurred during filtering.
 13233  func (it *BridgeTransferERC721KLAYFeeChangedIterator) Error() error {
 13234  	return it.fail
 13235  }
 13236  
 13237  // Close terminates the iteration process, releasing any pending underlying
 13238  // resources.
 13239  func (it *BridgeTransferERC721KLAYFeeChangedIterator) Close() error {
 13240  	it.sub.Unsubscribe()
 13241  	return nil
 13242  }
 13243  
 13244  // BridgeTransferERC721KLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeTransferERC721 contract.
 13245  type BridgeTransferERC721KLAYFeeChanged struct {
 13246  	Fee *big.Int
 13247  	Raw types.Log // Blockchain specific contextual infos
 13248  }
 13249  
 13250  // FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
 13251  //
 13252  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
 13253  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeTransferERC721KLAYFeeChangedIterator, error) {
 13254  
 13255  	var feeRule []interface{}
 13256  	for _, feeItem := range fee {
 13257  		feeRule = append(feeRule, feeItem)
 13258  	}
 13259  
 13260  	logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule)
 13261  	if err != nil {
 13262  		return nil, err
 13263  	}
 13264  	return &BridgeTransferERC721KLAYFeeChangedIterator{contract: _BridgeTransferERC721.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil
 13265  }
 13266  
 13267  // WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
 13268  //
 13269  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
 13270  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721KLAYFeeChanged, fee []*big.Int) (event.Subscription, error) {
 13271  
 13272  	var feeRule []interface{}
 13273  	for _, feeItem := range fee {
 13274  		feeRule = append(feeRule, feeItem)
 13275  	}
 13276  
 13277  	logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule)
 13278  	if err != nil {
 13279  		return nil, err
 13280  	}
 13281  	return event.NewSubscription(func(quit <-chan struct{}) error {
 13282  		defer sub.Unsubscribe()
 13283  		for {
 13284  			select {
 13285  			case log := <-logs:
 13286  				// New log arrived, parse the event and forward to the user
 13287  				event := new(BridgeTransferERC721KLAYFeeChanged)
 13288  				if err := _BridgeTransferERC721.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil {
 13289  					return err
 13290  				}
 13291  				event.Raw = log
 13292  
 13293  				select {
 13294  				case sink <- event:
 13295  				case err := <-sub.Err():
 13296  					return err
 13297  				case <-quit:
 13298  					return nil
 13299  				}
 13300  			case err := <-sub.Err():
 13301  				return err
 13302  			case <-quit:
 13303  				return nil
 13304  			}
 13305  		}
 13306  	}), nil
 13307  }
 13308  
 13309  // ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
 13310  //
 13311  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
 13312  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseKLAYFeeChanged(log types.Log) (*BridgeTransferERC721KLAYFeeChanged, error) {
 13313  	event := new(BridgeTransferERC721KLAYFeeChanged)
 13314  	if err := _BridgeTransferERC721.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil {
 13315  		return nil, err
 13316  	}
 13317  	return event, nil
 13318  }
 13319  
 13320  // BridgeTransferERC721OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTransferERC721 contract.
 13321  type BridgeTransferERC721OwnershipTransferredIterator struct {
 13322  	Event *BridgeTransferERC721OwnershipTransferred // Event containing the contract specifics and raw log
 13323  
 13324  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 13325  	event    string              // Event name to use for unpacking event data
 13326  
 13327  	logs chan types.Log      // Log channel receiving the found contract events
 13328  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 13329  	done bool                // Whether the subscription completed delivering logs
 13330  	fail error               // Occurred error to stop iteration
 13331  }
 13332  
 13333  // Next advances the iterator to the subsequent event, returning whether there
 13334  // are any more events found. In case of a retrieval or parsing error, false is
 13335  // returned and Error() can be queried for the exact failure.
 13336  func (it *BridgeTransferERC721OwnershipTransferredIterator) Next() bool {
 13337  	// If the iterator failed, stop iterating
 13338  	if it.fail != nil {
 13339  		return false
 13340  	}
 13341  	// If the iterator completed, deliver directly whatever's available
 13342  	if it.done {
 13343  		select {
 13344  		case log := <-it.logs:
 13345  			it.Event = new(BridgeTransferERC721OwnershipTransferred)
 13346  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13347  				it.fail = err
 13348  				return false
 13349  			}
 13350  			it.Event.Raw = log
 13351  			return true
 13352  
 13353  		default:
 13354  			return false
 13355  		}
 13356  	}
 13357  	// Iterator still in progress, wait for either a data or an error event
 13358  	select {
 13359  	case log := <-it.logs:
 13360  		it.Event = new(BridgeTransferERC721OwnershipTransferred)
 13361  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13362  			it.fail = err
 13363  			return false
 13364  		}
 13365  		it.Event.Raw = log
 13366  		return true
 13367  
 13368  	case err := <-it.sub.Err():
 13369  		it.done = true
 13370  		it.fail = err
 13371  		return it.Next()
 13372  	}
 13373  }
 13374  
 13375  // Error returns any retrieval or parsing error occurred during filtering.
 13376  func (it *BridgeTransferERC721OwnershipTransferredIterator) Error() error {
 13377  	return it.fail
 13378  }
 13379  
 13380  // Close terminates the iteration process, releasing any pending underlying
 13381  // resources.
 13382  func (it *BridgeTransferERC721OwnershipTransferredIterator) Close() error {
 13383  	it.sub.Unsubscribe()
 13384  	return nil
 13385  }
 13386  
 13387  // BridgeTransferERC721OwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTransferERC721 contract.
 13388  type BridgeTransferERC721OwnershipTransferred struct {
 13389  	PreviousOwner common.Address
 13390  	NewOwner      common.Address
 13391  	Raw           types.Log // Blockchain specific contextual infos
 13392  }
 13393  
 13394  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 13395  //
 13396  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 13397  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTransferERC721OwnershipTransferredIterator, error) {
 13398  
 13399  	var previousOwnerRule []interface{}
 13400  	for _, previousOwnerItem := range previousOwner {
 13401  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 13402  	}
 13403  	var newOwnerRule []interface{}
 13404  	for _, newOwnerItem := range newOwner {
 13405  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 13406  	}
 13407  
 13408  	logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 13409  	if err != nil {
 13410  		return nil, err
 13411  	}
 13412  	return &BridgeTransferERC721OwnershipTransferredIterator{contract: _BridgeTransferERC721.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
 13413  }
 13414  
 13415  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 13416  //
 13417  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 13418  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
 13419  
 13420  	var previousOwnerRule []interface{}
 13421  	for _, previousOwnerItem := range previousOwner {
 13422  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 13423  	}
 13424  	var newOwnerRule []interface{}
 13425  	for _, newOwnerItem := range newOwner {
 13426  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 13427  	}
 13428  
 13429  	logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 13430  	if err != nil {
 13431  		return nil, err
 13432  	}
 13433  	return event.NewSubscription(func(quit <-chan struct{}) error {
 13434  		defer sub.Unsubscribe()
 13435  		for {
 13436  			select {
 13437  			case log := <-logs:
 13438  				// New log arrived, parse the event and forward to the user
 13439  				event := new(BridgeTransferERC721OwnershipTransferred)
 13440  				if err := _BridgeTransferERC721.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 13441  					return err
 13442  				}
 13443  				event.Raw = log
 13444  
 13445  				select {
 13446  				case sink <- event:
 13447  				case err := <-sub.Err():
 13448  					return err
 13449  				case <-quit:
 13450  					return nil
 13451  				}
 13452  			case err := <-sub.Err():
 13453  				return err
 13454  			case <-quit:
 13455  				return nil
 13456  			}
 13457  		}
 13458  	}), nil
 13459  }
 13460  
 13461  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 13462  //
 13463  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 13464  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseOwnershipTransferred(log types.Log) (*BridgeTransferERC721OwnershipTransferred, error) {
 13465  	event := new(BridgeTransferERC721OwnershipTransferred)
 13466  	if err := _BridgeTransferERC721.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 13467  		return nil, err
 13468  	}
 13469  	return event, nil
 13470  }
 13471  
 13472  // BridgeTransferERC721RequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the BridgeTransferERC721 contract.
 13473  type BridgeTransferERC721RequestValueTransferIterator struct {
 13474  	Event *BridgeTransferERC721RequestValueTransfer // Event containing the contract specifics and raw log
 13475  
 13476  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 13477  	event    string              // Event name to use for unpacking event data
 13478  
 13479  	logs chan types.Log      // Log channel receiving the found contract events
 13480  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 13481  	done bool                // Whether the subscription completed delivering logs
 13482  	fail error               // Occurred error to stop iteration
 13483  }
 13484  
 13485  // Next advances the iterator to the subsequent event, returning whether there
 13486  // are any more events found. In case of a retrieval or parsing error, false is
 13487  // returned and Error() can be queried for the exact failure.
 13488  func (it *BridgeTransferERC721RequestValueTransferIterator) Next() bool {
 13489  	// If the iterator failed, stop iterating
 13490  	if it.fail != nil {
 13491  		return false
 13492  	}
 13493  	// If the iterator completed, deliver directly whatever's available
 13494  	if it.done {
 13495  		select {
 13496  		case log := <-it.logs:
 13497  			it.Event = new(BridgeTransferERC721RequestValueTransfer)
 13498  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13499  				it.fail = err
 13500  				return false
 13501  			}
 13502  			it.Event.Raw = log
 13503  			return true
 13504  
 13505  		default:
 13506  			return false
 13507  		}
 13508  	}
 13509  	// Iterator still in progress, wait for either a data or an error event
 13510  	select {
 13511  	case log := <-it.logs:
 13512  		it.Event = new(BridgeTransferERC721RequestValueTransfer)
 13513  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13514  			it.fail = err
 13515  			return false
 13516  		}
 13517  		it.Event.Raw = log
 13518  		return true
 13519  
 13520  	case err := <-it.sub.Err():
 13521  		it.done = true
 13522  		it.fail = err
 13523  		return it.Next()
 13524  	}
 13525  }
 13526  
 13527  // Error returns any retrieval or parsing error occurred during filtering.
 13528  func (it *BridgeTransferERC721RequestValueTransferIterator) Error() error {
 13529  	return it.fail
 13530  }
 13531  
 13532  // Close terminates the iteration process, releasing any pending underlying
 13533  // resources.
 13534  func (it *BridgeTransferERC721RequestValueTransferIterator) Close() error {
 13535  	it.sub.Unsubscribe()
 13536  	return nil
 13537  }
 13538  
 13539  // BridgeTransferERC721RequestValueTransfer represents a RequestValueTransfer event raised by the BridgeTransferERC721 contract.
 13540  type BridgeTransferERC721RequestValueTransfer struct {
 13541  	TokenType      uint8
 13542  	From           common.Address
 13543  	To             common.Address
 13544  	TokenAddress   common.Address
 13545  	ValueOrTokenId *big.Int
 13546  	RequestNonce   uint64
 13547  	Fee            *big.Int
 13548  	ExtraData      []byte
 13549  	Raw            types.Log // Blockchain specific contextual infos
 13550  }
 13551  
 13552  // FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
 13553  //
 13554  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
 13555  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC721RequestValueTransferIterator, error) {
 13556  
 13557  	var fromRule []interface{}
 13558  	for _, fromItem := range from {
 13559  		fromRule = append(fromRule, fromItem)
 13560  	}
 13561  	var toRule []interface{}
 13562  	for _, toItem := range to {
 13563  		toRule = append(toRule, toItem)
 13564  	}
 13565  	var tokenAddressRule []interface{}
 13566  	for _, tokenAddressItem := range tokenAddress {
 13567  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 13568  	}
 13569  
 13570  	logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule)
 13571  	if err != nil {
 13572  		return nil, err
 13573  	}
 13574  	return &BridgeTransferERC721RequestValueTransferIterator{contract: _BridgeTransferERC721.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil
 13575  }
 13576  
 13577  // WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
 13578  //
 13579  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
 13580  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721RequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
 13581  
 13582  	var fromRule []interface{}
 13583  	for _, fromItem := range from {
 13584  		fromRule = append(fromRule, fromItem)
 13585  	}
 13586  	var toRule []interface{}
 13587  	for _, toItem := range to {
 13588  		toRule = append(toRule, toItem)
 13589  	}
 13590  	var tokenAddressRule []interface{}
 13591  	for _, tokenAddressItem := range tokenAddress {
 13592  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 13593  	}
 13594  
 13595  	logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule)
 13596  	if err != nil {
 13597  		return nil, err
 13598  	}
 13599  	return event.NewSubscription(func(quit <-chan struct{}) error {
 13600  		defer sub.Unsubscribe()
 13601  		for {
 13602  			select {
 13603  			case log := <-logs:
 13604  				// New log arrived, parse the event and forward to the user
 13605  				event := new(BridgeTransferERC721RequestValueTransfer)
 13606  				if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil {
 13607  					return err
 13608  				}
 13609  				event.Raw = log
 13610  
 13611  				select {
 13612  				case sink <- event:
 13613  				case err := <-sub.Err():
 13614  					return err
 13615  				case <-quit:
 13616  					return nil
 13617  				}
 13618  			case err := <-sub.Err():
 13619  				return err
 13620  			case <-quit:
 13621  				return nil
 13622  			}
 13623  		}
 13624  	}), nil
 13625  }
 13626  
 13627  // ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
 13628  //
 13629  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
 13630  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseRequestValueTransfer(log types.Log) (*BridgeTransferERC721RequestValueTransfer, error) {
 13631  	event := new(BridgeTransferERC721RequestValueTransfer)
 13632  	if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil {
 13633  		return nil, err
 13634  	}
 13635  	return event, nil
 13636  }
 13637  
 13638  // BridgeTransferERC721RequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the BridgeTransferERC721 contract.
 13639  type BridgeTransferERC721RequestValueTransferEncodedIterator struct {
 13640  	Event *BridgeTransferERC721RequestValueTransferEncoded // Event containing the contract specifics and raw log
 13641  
 13642  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 13643  	event    string              // Event name to use for unpacking event data
 13644  
 13645  	logs chan types.Log      // Log channel receiving the found contract events
 13646  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 13647  	done bool                // Whether the subscription completed delivering logs
 13648  	fail error               // Occurred error to stop iteration
 13649  }
 13650  
 13651  // Next advances the iterator to the subsequent event, returning whether there
 13652  // are any more events found. In case of a retrieval or parsing error, false is
 13653  // returned and Error() can be queried for the exact failure.
 13654  func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Next() bool {
 13655  	// If the iterator failed, stop iterating
 13656  	if it.fail != nil {
 13657  		return false
 13658  	}
 13659  	// If the iterator completed, deliver directly whatever's available
 13660  	if it.done {
 13661  		select {
 13662  		case log := <-it.logs:
 13663  			it.Event = new(BridgeTransferERC721RequestValueTransferEncoded)
 13664  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13665  				it.fail = err
 13666  				return false
 13667  			}
 13668  			it.Event.Raw = log
 13669  			return true
 13670  
 13671  		default:
 13672  			return false
 13673  		}
 13674  	}
 13675  	// Iterator still in progress, wait for either a data or an error event
 13676  	select {
 13677  	case log := <-it.logs:
 13678  		it.Event = new(BridgeTransferERC721RequestValueTransferEncoded)
 13679  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13680  			it.fail = err
 13681  			return false
 13682  		}
 13683  		it.Event.Raw = log
 13684  		return true
 13685  
 13686  	case err := <-it.sub.Err():
 13687  		it.done = true
 13688  		it.fail = err
 13689  		return it.Next()
 13690  	}
 13691  }
 13692  
 13693  // Error returns any retrieval or parsing error occurred during filtering.
 13694  func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Error() error {
 13695  	return it.fail
 13696  }
 13697  
 13698  // Close terminates the iteration process, releasing any pending underlying
 13699  // resources.
 13700  func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Close() error {
 13701  	it.sub.Unsubscribe()
 13702  	return nil
 13703  }
 13704  
 13705  // BridgeTransferERC721RequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the BridgeTransferERC721 contract.
 13706  type BridgeTransferERC721RequestValueTransferEncoded struct {
 13707  	TokenType      uint8
 13708  	From           common.Address
 13709  	To             common.Address
 13710  	TokenAddress   common.Address
 13711  	ValueOrTokenId *big.Int
 13712  	RequestNonce   uint64
 13713  	Fee            *big.Int
 13714  	ExtraData      []byte
 13715  	EncodingVer    uint8
 13716  	EncodedData    []byte
 13717  	Raw            types.Log // Blockchain specific contextual infos
 13718  }
 13719  
 13720  // FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
 13721  //
 13722  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
 13723  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC721RequestValueTransferEncodedIterator, error) {
 13724  
 13725  	var fromRule []interface{}
 13726  	for _, fromItem := range from {
 13727  		fromRule = append(fromRule, fromItem)
 13728  	}
 13729  	var toRule []interface{}
 13730  	for _, toItem := range to {
 13731  		toRule = append(toRule, toItem)
 13732  	}
 13733  	var tokenAddressRule []interface{}
 13734  	for _, tokenAddressItem := range tokenAddress {
 13735  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 13736  	}
 13737  
 13738  	logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule)
 13739  	if err != nil {
 13740  		return nil, err
 13741  	}
 13742  	return &BridgeTransferERC721RequestValueTransferEncodedIterator{contract: _BridgeTransferERC721.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil
 13743  }
 13744  
 13745  // WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
 13746  //
 13747  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
 13748  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721RequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
 13749  
 13750  	var fromRule []interface{}
 13751  	for _, fromItem := range from {
 13752  		fromRule = append(fromRule, fromItem)
 13753  	}
 13754  	var toRule []interface{}
 13755  	for _, toItem := range to {
 13756  		toRule = append(toRule, toItem)
 13757  	}
 13758  	var tokenAddressRule []interface{}
 13759  	for _, tokenAddressItem := range tokenAddress {
 13760  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 13761  	}
 13762  
 13763  	logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule)
 13764  	if err != nil {
 13765  		return nil, err
 13766  	}
 13767  	return event.NewSubscription(func(quit <-chan struct{}) error {
 13768  		defer sub.Unsubscribe()
 13769  		for {
 13770  			select {
 13771  			case log := <-logs:
 13772  				// New log arrived, parse the event and forward to the user
 13773  				event := new(BridgeTransferERC721RequestValueTransferEncoded)
 13774  				if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil {
 13775  					return err
 13776  				}
 13777  				event.Raw = log
 13778  
 13779  				select {
 13780  				case sink <- event:
 13781  				case err := <-sub.Err():
 13782  					return err
 13783  				case <-quit:
 13784  					return nil
 13785  				}
 13786  			case err := <-sub.Err():
 13787  				return err
 13788  			case <-quit:
 13789  				return nil
 13790  			}
 13791  		}
 13792  	}), nil
 13793  }
 13794  
 13795  // ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
 13796  //
 13797  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
 13798  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseRequestValueTransferEncoded(log types.Log) (*BridgeTransferERC721RequestValueTransferEncoded, error) {
 13799  	event := new(BridgeTransferERC721RequestValueTransferEncoded)
 13800  	if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil {
 13801  		return nil, err
 13802  	}
 13803  	return event, nil
 13804  }
 13805  
 13806  // BridgeTransferERC721TokenDeregisteredIterator is returned from FilterTokenDeregistered and is used to iterate over the raw logs and unpacked data for TokenDeregistered events raised by the BridgeTransferERC721 contract.
 13807  type BridgeTransferERC721TokenDeregisteredIterator struct {
 13808  	Event *BridgeTransferERC721TokenDeregistered // Event containing the contract specifics and raw log
 13809  
 13810  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 13811  	event    string              // Event name to use for unpacking event data
 13812  
 13813  	logs chan types.Log      // Log channel receiving the found contract events
 13814  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 13815  	done bool                // Whether the subscription completed delivering logs
 13816  	fail error               // Occurred error to stop iteration
 13817  }
 13818  
 13819  // Next advances the iterator to the subsequent event, returning whether there
 13820  // are any more events found. In case of a retrieval or parsing error, false is
 13821  // returned and Error() can be queried for the exact failure.
 13822  func (it *BridgeTransferERC721TokenDeregisteredIterator) Next() bool {
 13823  	// If the iterator failed, stop iterating
 13824  	if it.fail != nil {
 13825  		return false
 13826  	}
 13827  	// If the iterator completed, deliver directly whatever's available
 13828  	if it.done {
 13829  		select {
 13830  		case log := <-it.logs:
 13831  			it.Event = new(BridgeTransferERC721TokenDeregistered)
 13832  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13833  				it.fail = err
 13834  				return false
 13835  			}
 13836  			it.Event.Raw = log
 13837  			return true
 13838  
 13839  		default:
 13840  			return false
 13841  		}
 13842  	}
 13843  	// Iterator still in progress, wait for either a data or an error event
 13844  	select {
 13845  	case log := <-it.logs:
 13846  		it.Event = new(BridgeTransferERC721TokenDeregistered)
 13847  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13848  			it.fail = err
 13849  			return false
 13850  		}
 13851  		it.Event.Raw = log
 13852  		return true
 13853  
 13854  	case err := <-it.sub.Err():
 13855  		it.done = true
 13856  		it.fail = err
 13857  		return it.Next()
 13858  	}
 13859  }
 13860  
 13861  // Error returns any retrieval or parsing error occurred during filtering.
 13862  func (it *BridgeTransferERC721TokenDeregisteredIterator) Error() error {
 13863  	return it.fail
 13864  }
 13865  
 13866  // Close terminates the iteration process, releasing any pending underlying
 13867  // resources.
 13868  func (it *BridgeTransferERC721TokenDeregisteredIterator) Close() error {
 13869  	it.sub.Unsubscribe()
 13870  	return nil
 13871  }
 13872  
 13873  // BridgeTransferERC721TokenDeregistered represents a TokenDeregistered event raised by the BridgeTransferERC721 contract.
 13874  type BridgeTransferERC721TokenDeregistered struct {
 13875  	Token common.Address
 13876  	Raw   types.Log // Blockchain specific contextual infos
 13877  }
 13878  
 13879  // FilterTokenDeregistered is a free log retrieval operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
 13880  //
 13881  // Solidity: event TokenDeregistered(address indexed token)
 13882  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenDeregisteredIterator, error) {
 13883  
 13884  	var tokenRule []interface{}
 13885  	for _, tokenItem := range token {
 13886  		tokenRule = append(tokenRule, tokenItem)
 13887  	}
 13888  
 13889  	logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenDeregistered", tokenRule)
 13890  	if err != nil {
 13891  		return nil, err
 13892  	}
 13893  	return &BridgeTransferERC721TokenDeregisteredIterator{contract: _BridgeTransferERC721.contract, event: "TokenDeregistered", logs: logs, sub: sub}, nil
 13894  }
 13895  
 13896  // WatchTokenDeregistered is a free log subscription operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
 13897  //
 13898  // Solidity: event TokenDeregistered(address indexed token)
 13899  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenDeregistered, token []common.Address) (event.Subscription, error) {
 13900  
 13901  	var tokenRule []interface{}
 13902  	for _, tokenItem := range token {
 13903  		tokenRule = append(tokenRule, tokenItem)
 13904  	}
 13905  
 13906  	logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenDeregistered", tokenRule)
 13907  	if err != nil {
 13908  		return nil, err
 13909  	}
 13910  	return event.NewSubscription(func(quit <-chan struct{}) error {
 13911  		defer sub.Unsubscribe()
 13912  		for {
 13913  			select {
 13914  			case log := <-logs:
 13915  				// New log arrived, parse the event and forward to the user
 13916  				event := new(BridgeTransferERC721TokenDeregistered)
 13917  				if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenDeregistered", log); err != nil {
 13918  					return err
 13919  				}
 13920  				event.Raw = log
 13921  
 13922  				select {
 13923  				case sink <- event:
 13924  				case err := <-sub.Err():
 13925  					return err
 13926  				case <-quit:
 13927  					return nil
 13928  				}
 13929  			case err := <-sub.Err():
 13930  				return err
 13931  			case <-quit:
 13932  				return nil
 13933  			}
 13934  		}
 13935  	}), nil
 13936  }
 13937  
 13938  // ParseTokenDeregistered is a log parse operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
 13939  //
 13940  // Solidity: event TokenDeregistered(address indexed token)
 13941  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenDeregistered(log types.Log) (*BridgeTransferERC721TokenDeregistered, error) {
 13942  	event := new(BridgeTransferERC721TokenDeregistered)
 13943  	if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenDeregistered", log); err != nil {
 13944  		return nil, err
 13945  	}
 13946  	return event, nil
 13947  }
 13948  
 13949  // BridgeTransferERC721TokenLockedIterator is returned from FilterTokenLocked and is used to iterate over the raw logs and unpacked data for TokenLocked events raised by the BridgeTransferERC721 contract.
 13950  type BridgeTransferERC721TokenLockedIterator struct {
 13951  	Event *BridgeTransferERC721TokenLocked // Event containing the contract specifics and raw log
 13952  
 13953  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 13954  	event    string              // Event name to use for unpacking event data
 13955  
 13956  	logs chan types.Log      // Log channel receiving the found contract events
 13957  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 13958  	done bool                // Whether the subscription completed delivering logs
 13959  	fail error               // Occurred error to stop iteration
 13960  }
 13961  
 13962  // Next advances the iterator to the subsequent event, returning whether there
 13963  // are any more events found. In case of a retrieval or parsing error, false is
 13964  // returned and Error() can be queried for the exact failure.
 13965  func (it *BridgeTransferERC721TokenLockedIterator) Next() bool {
 13966  	// If the iterator failed, stop iterating
 13967  	if it.fail != nil {
 13968  		return false
 13969  	}
 13970  	// If the iterator completed, deliver directly whatever's available
 13971  	if it.done {
 13972  		select {
 13973  		case log := <-it.logs:
 13974  			it.Event = new(BridgeTransferERC721TokenLocked)
 13975  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13976  				it.fail = err
 13977  				return false
 13978  			}
 13979  			it.Event.Raw = log
 13980  			return true
 13981  
 13982  		default:
 13983  			return false
 13984  		}
 13985  	}
 13986  	// Iterator still in progress, wait for either a data or an error event
 13987  	select {
 13988  	case log := <-it.logs:
 13989  		it.Event = new(BridgeTransferERC721TokenLocked)
 13990  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13991  			it.fail = err
 13992  			return false
 13993  		}
 13994  		it.Event.Raw = log
 13995  		return true
 13996  
 13997  	case err := <-it.sub.Err():
 13998  		it.done = true
 13999  		it.fail = err
 14000  		return it.Next()
 14001  	}
 14002  }
 14003  
 14004  // Error returns any retrieval or parsing error occurred during filtering.
 14005  func (it *BridgeTransferERC721TokenLockedIterator) Error() error {
 14006  	return it.fail
 14007  }
 14008  
 14009  // Close terminates the iteration process, releasing any pending underlying
 14010  // resources.
 14011  func (it *BridgeTransferERC721TokenLockedIterator) Close() error {
 14012  	it.sub.Unsubscribe()
 14013  	return nil
 14014  }
 14015  
 14016  // BridgeTransferERC721TokenLocked represents a TokenLocked event raised by the BridgeTransferERC721 contract.
 14017  type BridgeTransferERC721TokenLocked struct {
 14018  	Token common.Address
 14019  	Raw   types.Log // Blockchain specific contextual infos
 14020  }
 14021  
 14022  // FilterTokenLocked is a free log retrieval operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
 14023  //
 14024  // Solidity: event TokenLocked(address indexed token)
 14025  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenLockedIterator, error) {
 14026  
 14027  	var tokenRule []interface{}
 14028  	for _, tokenItem := range token {
 14029  		tokenRule = append(tokenRule, tokenItem)
 14030  	}
 14031  
 14032  	logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenLocked", tokenRule)
 14033  	if err != nil {
 14034  		return nil, err
 14035  	}
 14036  	return &BridgeTransferERC721TokenLockedIterator{contract: _BridgeTransferERC721.contract, event: "TokenLocked", logs: logs, sub: sub}, nil
 14037  }
 14038  
 14039  // WatchTokenLocked is a free log subscription operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
 14040  //
 14041  // Solidity: event TokenLocked(address indexed token)
 14042  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenLocked, token []common.Address) (event.Subscription, error) {
 14043  
 14044  	var tokenRule []interface{}
 14045  	for _, tokenItem := range token {
 14046  		tokenRule = append(tokenRule, tokenItem)
 14047  	}
 14048  
 14049  	logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenLocked", tokenRule)
 14050  	if err != nil {
 14051  		return nil, err
 14052  	}
 14053  	return event.NewSubscription(func(quit <-chan struct{}) error {
 14054  		defer sub.Unsubscribe()
 14055  		for {
 14056  			select {
 14057  			case log := <-logs:
 14058  				// New log arrived, parse the event and forward to the user
 14059  				event := new(BridgeTransferERC721TokenLocked)
 14060  				if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenLocked", log); err != nil {
 14061  					return err
 14062  				}
 14063  				event.Raw = log
 14064  
 14065  				select {
 14066  				case sink <- event:
 14067  				case err := <-sub.Err():
 14068  					return err
 14069  				case <-quit:
 14070  					return nil
 14071  				}
 14072  			case err := <-sub.Err():
 14073  				return err
 14074  			case <-quit:
 14075  				return nil
 14076  			}
 14077  		}
 14078  	}), nil
 14079  }
 14080  
 14081  // ParseTokenLocked is a log parse operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
 14082  //
 14083  // Solidity: event TokenLocked(address indexed token)
 14084  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenLocked(log types.Log) (*BridgeTransferERC721TokenLocked, error) {
 14085  	event := new(BridgeTransferERC721TokenLocked)
 14086  	if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenLocked", log); err != nil {
 14087  		return nil, err
 14088  	}
 14089  	return event, nil
 14090  }
 14091  
 14092  // BridgeTransferERC721TokenRegisteredIterator is returned from FilterTokenRegistered and is used to iterate over the raw logs and unpacked data for TokenRegistered events raised by the BridgeTransferERC721 contract.
 14093  type BridgeTransferERC721TokenRegisteredIterator struct {
 14094  	Event *BridgeTransferERC721TokenRegistered // Event containing the contract specifics and raw log
 14095  
 14096  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 14097  	event    string              // Event name to use for unpacking event data
 14098  
 14099  	logs chan types.Log      // Log channel receiving the found contract events
 14100  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 14101  	done bool                // Whether the subscription completed delivering logs
 14102  	fail error               // Occurred error to stop iteration
 14103  }
 14104  
 14105  // Next advances the iterator to the subsequent event, returning whether there
 14106  // are any more events found. In case of a retrieval or parsing error, false is
 14107  // returned and Error() can be queried for the exact failure.
 14108  func (it *BridgeTransferERC721TokenRegisteredIterator) Next() bool {
 14109  	// If the iterator failed, stop iterating
 14110  	if it.fail != nil {
 14111  		return false
 14112  	}
 14113  	// If the iterator completed, deliver directly whatever's available
 14114  	if it.done {
 14115  		select {
 14116  		case log := <-it.logs:
 14117  			it.Event = new(BridgeTransferERC721TokenRegistered)
 14118  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14119  				it.fail = err
 14120  				return false
 14121  			}
 14122  			it.Event.Raw = log
 14123  			return true
 14124  
 14125  		default:
 14126  			return false
 14127  		}
 14128  	}
 14129  	// Iterator still in progress, wait for either a data or an error event
 14130  	select {
 14131  	case log := <-it.logs:
 14132  		it.Event = new(BridgeTransferERC721TokenRegistered)
 14133  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14134  			it.fail = err
 14135  			return false
 14136  		}
 14137  		it.Event.Raw = log
 14138  		return true
 14139  
 14140  	case err := <-it.sub.Err():
 14141  		it.done = true
 14142  		it.fail = err
 14143  		return it.Next()
 14144  	}
 14145  }
 14146  
 14147  // Error returns any retrieval or parsing error occurred during filtering.
 14148  func (it *BridgeTransferERC721TokenRegisteredIterator) Error() error {
 14149  	return it.fail
 14150  }
 14151  
 14152  // Close terminates the iteration process, releasing any pending underlying
 14153  // resources.
 14154  func (it *BridgeTransferERC721TokenRegisteredIterator) Close() error {
 14155  	it.sub.Unsubscribe()
 14156  	return nil
 14157  }
 14158  
 14159  // BridgeTransferERC721TokenRegistered represents a TokenRegistered event raised by the BridgeTransferERC721 contract.
 14160  type BridgeTransferERC721TokenRegistered struct {
 14161  	Token common.Address
 14162  	Raw   types.Log // Blockchain specific contextual infos
 14163  }
 14164  
 14165  // FilterTokenRegistered is a free log retrieval operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
 14166  //
 14167  // Solidity: event TokenRegistered(address indexed token)
 14168  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenRegisteredIterator, error) {
 14169  
 14170  	var tokenRule []interface{}
 14171  	for _, tokenItem := range token {
 14172  		tokenRule = append(tokenRule, tokenItem)
 14173  	}
 14174  
 14175  	logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenRegistered", tokenRule)
 14176  	if err != nil {
 14177  		return nil, err
 14178  	}
 14179  	return &BridgeTransferERC721TokenRegisteredIterator{contract: _BridgeTransferERC721.contract, event: "TokenRegistered", logs: logs, sub: sub}, nil
 14180  }
 14181  
 14182  // WatchTokenRegistered is a free log subscription operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
 14183  //
 14184  // Solidity: event TokenRegistered(address indexed token)
 14185  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenRegistered, token []common.Address) (event.Subscription, error) {
 14186  
 14187  	var tokenRule []interface{}
 14188  	for _, tokenItem := range token {
 14189  		tokenRule = append(tokenRule, tokenItem)
 14190  	}
 14191  
 14192  	logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenRegistered", tokenRule)
 14193  	if err != nil {
 14194  		return nil, err
 14195  	}
 14196  	return event.NewSubscription(func(quit <-chan struct{}) error {
 14197  		defer sub.Unsubscribe()
 14198  		for {
 14199  			select {
 14200  			case log := <-logs:
 14201  				// New log arrived, parse the event and forward to the user
 14202  				event := new(BridgeTransferERC721TokenRegistered)
 14203  				if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenRegistered", log); err != nil {
 14204  					return err
 14205  				}
 14206  				event.Raw = log
 14207  
 14208  				select {
 14209  				case sink <- event:
 14210  				case err := <-sub.Err():
 14211  					return err
 14212  				case <-quit:
 14213  					return nil
 14214  				}
 14215  			case err := <-sub.Err():
 14216  				return err
 14217  			case <-quit:
 14218  				return nil
 14219  			}
 14220  		}
 14221  	}), nil
 14222  }
 14223  
 14224  // ParseTokenRegistered is a log parse operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
 14225  //
 14226  // Solidity: event TokenRegistered(address indexed token)
 14227  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenRegistered(log types.Log) (*BridgeTransferERC721TokenRegistered, error) {
 14228  	event := new(BridgeTransferERC721TokenRegistered)
 14229  	if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenRegistered", log); err != nil {
 14230  		return nil, err
 14231  	}
 14232  	return event, nil
 14233  }
 14234  
 14235  // BridgeTransferERC721TokenUnlockedIterator is returned from FilterTokenUnlocked and is used to iterate over the raw logs and unpacked data for TokenUnlocked events raised by the BridgeTransferERC721 contract.
 14236  type BridgeTransferERC721TokenUnlockedIterator struct {
 14237  	Event *BridgeTransferERC721TokenUnlocked // Event containing the contract specifics and raw log
 14238  
 14239  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 14240  	event    string              // Event name to use for unpacking event data
 14241  
 14242  	logs chan types.Log      // Log channel receiving the found contract events
 14243  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 14244  	done bool                // Whether the subscription completed delivering logs
 14245  	fail error               // Occurred error to stop iteration
 14246  }
 14247  
 14248  // Next advances the iterator to the subsequent event, returning whether there
 14249  // are any more events found. In case of a retrieval or parsing error, false is
 14250  // returned and Error() can be queried for the exact failure.
 14251  func (it *BridgeTransferERC721TokenUnlockedIterator) Next() bool {
 14252  	// If the iterator failed, stop iterating
 14253  	if it.fail != nil {
 14254  		return false
 14255  	}
 14256  	// If the iterator completed, deliver directly whatever's available
 14257  	if it.done {
 14258  		select {
 14259  		case log := <-it.logs:
 14260  			it.Event = new(BridgeTransferERC721TokenUnlocked)
 14261  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14262  				it.fail = err
 14263  				return false
 14264  			}
 14265  			it.Event.Raw = log
 14266  			return true
 14267  
 14268  		default:
 14269  			return false
 14270  		}
 14271  	}
 14272  	// Iterator still in progress, wait for either a data or an error event
 14273  	select {
 14274  	case log := <-it.logs:
 14275  		it.Event = new(BridgeTransferERC721TokenUnlocked)
 14276  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14277  			it.fail = err
 14278  			return false
 14279  		}
 14280  		it.Event.Raw = log
 14281  		return true
 14282  
 14283  	case err := <-it.sub.Err():
 14284  		it.done = true
 14285  		it.fail = err
 14286  		return it.Next()
 14287  	}
 14288  }
 14289  
 14290  // Error returns any retrieval or parsing error occurred during filtering.
 14291  func (it *BridgeTransferERC721TokenUnlockedIterator) Error() error {
 14292  	return it.fail
 14293  }
 14294  
 14295  // Close terminates the iteration process, releasing any pending underlying
 14296  // resources.
 14297  func (it *BridgeTransferERC721TokenUnlockedIterator) Close() error {
 14298  	it.sub.Unsubscribe()
 14299  	return nil
 14300  }
 14301  
 14302  // BridgeTransferERC721TokenUnlocked represents a TokenUnlocked event raised by the BridgeTransferERC721 contract.
 14303  type BridgeTransferERC721TokenUnlocked struct {
 14304  	Token common.Address
 14305  	Raw   types.Log // Blockchain specific contextual infos
 14306  }
 14307  
 14308  // FilterTokenUnlocked is a free log retrieval operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
 14309  //
 14310  // Solidity: event TokenUnlocked(address indexed token)
 14311  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenUnlockedIterator, error) {
 14312  
 14313  	var tokenRule []interface{}
 14314  	for _, tokenItem := range token {
 14315  		tokenRule = append(tokenRule, tokenItem)
 14316  	}
 14317  
 14318  	logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenUnlocked", tokenRule)
 14319  	if err != nil {
 14320  		return nil, err
 14321  	}
 14322  	return &BridgeTransferERC721TokenUnlockedIterator{contract: _BridgeTransferERC721.contract, event: "TokenUnlocked", logs: logs, sub: sub}, nil
 14323  }
 14324  
 14325  // WatchTokenUnlocked is a free log subscription operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
 14326  //
 14327  // Solidity: event TokenUnlocked(address indexed token)
 14328  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenUnlocked, token []common.Address) (event.Subscription, error) {
 14329  
 14330  	var tokenRule []interface{}
 14331  	for _, tokenItem := range token {
 14332  		tokenRule = append(tokenRule, tokenItem)
 14333  	}
 14334  
 14335  	logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenUnlocked", tokenRule)
 14336  	if err != nil {
 14337  		return nil, err
 14338  	}
 14339  	return event.NewSubscription(func(quit <-chan struct{}) error {
 14340  		defer sub.Unsubscribe()
 14341  		for {
 14342  			select {
 14343  			case log := <-logs:
 14344  				// New log arrived, parse the event and forward to the user
 14345  				event := new(BridgeTransferERC721TokenUnlocked)
 14346  				if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenUnlocked", log); err != nil {
 14347  					return err
 14348  				}
 14349  				event.Raw = log
 14350  
 14351  				select {
 14352  				case sink <- event:
 14353  				case err := <-sub.Err():
 14354  					return err
 14355  				case <-quit:
 14356  					return nil
 14357  				}
 14358  			case err := <-sub.Err():
 14359  				return err
 14360  			case <-quit:
 14361  				return nil
 14362  			}
 14363  		}
 14364  	}), nil
 14365  }
 14366  
 14367  // ParseTokenUnlocked is a log parse operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
 14368  //
 14369  // Solidity: event TokenUnlocked(address indexed token)
 14370  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenUnlocked(log types.Log) (*BridgeTransferERC721TokenUnlocked, error) {
 14371  	event := new(BridgeTransferERC721TokenUnlocked)
 14372  	if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenUnlocked", log); err != nil {
 14373  		return nil, err
 14374  	}
 14375  	return event, nil
 14376  }
 14377  
 14378  // BridgeTransferKLAYABI is the input ABI used to generate the binding from.
 14379  const BridgeTransferKLAYABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_fee\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"}],\"name\":\"setKLAYFee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unlockKLAY\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestKLAYTransfer\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"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\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"lockKLAY\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleKLAYTransfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"chargeWithoutEvent\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isLockedKLAY\",\"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\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"KLAYLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"KLAYUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"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\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]"
 14380  
 14381  // BridgeTransferKLAYBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 14382  const BridgeTransferKLAYBinRuntime = ``
 14383  
 14384  // BridgeTransferKLAYFuncSigs maps the 4-byte function signature to its string representation.
 14385  var BridgeTransferKLAYFuncSigs = map[string]string{
 14386  	"3a3099d1": "MAX_OPERATOR()",
 14387  	"dd9222d6": "chargeWithoutEvent()",
 14388  	"9832c1d7": "closedValueTransferVotes(uint64)",
 14389  	"ac6fff0b": "configurationNonce()",
 14390  	"d8cf98ca": "deregisterOperator(address)",
 14391  	"488af871": "feeOfERC20(address)",
 14392  	"c263b5d6": "feeOfKLAY()",
 14393  	"b3f00674": "feeReceiver()",
 14394  	"b2c01030": "getOperatorList()",
 14395  	"a066a7ed": "handleKLAYTransfer(bytes32,address,address,uint256,uint64,uint64,bytes)",
 14396  	"13a6738a": "handleNoncesToBlockNums(uint64)",
 14397  	"8a75eee2": "handledRequestTx(bytes32)",
 14398  	"f1719966": "isLockedKLAY()",
 14399  	"8f32d59b": "isOwner()",
 14400  	"2014e5d1": "isRunning()",
 14401  	"9f071329": "lockKLAY()",
 14402  	"4b40b826": "lowerHandleNonce()",
 14403  	"6e176ec2": "modeMintBurn()",
 14404  	"cb38f407": "operatorList(uint256)",
 14405  	"5526f76b": "operatorThresholds(uint8)",
 14406  	"13e7c9d8": "operators(address)",
 14407  	"8da5cb5b": "owner()",
 14408  	"989ba0d3": "recoveryBlockNumber()",
 14409  	"3682a450": "registerOperator(address)",
 14410  	"715018a6": "renounceOwnership()",
 14411  	"75ebdc09": "requestKLAYTransfer(address,uint256,bytes)",
 14412  	"7c1a0302": "requestNonce()",
 14413  	"efdcd974": "setFeeReceiver(address)",
 14414  	"1a2ae53e": "setKLAYFee(uint256,uint64)",
 14415  	"ee2aec65": "setOperatorThreshold(uint8,uint8)",
 14416  	"c877cf37": "start(bool)",
 14417  	"f2fde38b": "transferOwnership(address)",
 14418  	"1ebdca38": "unlockKLAY()",
 14419  	"54edad72": "upperHandleNonce()",
 14420  }
 14421  
 14422  // BridgeTransferKLAY is an auto generated Go binding around a Klaytn contract.
 14423  type BridgeTransferKLAY struct {
 14424  	BridgeTransferKLAYCaller     // Read-only binding to the contract
 14425  	BridgeTransferKLAYTransactor // Write-only binding to the contract
 14426  	BridgeTransferKLAYFilterer   // Log filterer for contract events
 14427  }
 14428  
 14429  // BridgeTransferKLAYCaller is an auto generated read-only Go binding around a Klaytn contract.
 14430  type BridgeTransferKLAYCaller struct {
 14431  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 14432  }
 14433  
 14434  // BridgeTransferKLAYTransactor is an auto generated write-only Go binding around a Klaytn contract.
 14435  type BridgeTransferKLAYTransactor struct {
 14436  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 14437  }
 14438  
 14439  // BridgeTransferKLAYFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 14440  type BridgeTransferKLAYFilterer struct {
 14441  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 14442  }
 14443  
 14444  // BridgeTransferKLAYSession is an auto generated Go binding around a Klaytn contract,
 14445  // with pre-set call and transact options.
 14446  type BridgeTransferKLAYSession struct {
 14447  	Contract     *BridgeTransferKLAY // Generic contract binding to set the session for
 14448  	CallOpts     bind.CallOpts       // Call options to use throughout this session
 14449  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
 14450  }
 14451  
 14452  // BridgeTransferKLAYCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 14453  // with pre-set call options.
 14454  type BridgeTransferKLAYCallerSession struct {
 14455  	Contract *BridgeTransferKLAYCaller // Generic contract caller binding to set the session for
 14456  	CallOpts bind.CallOpts             // Call options to use throughout this session
 14457  }
 14458  
 14459  // BridgeTransferKLAYTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 14460  // with pre-set transact options.
 14461  type BridgeTransferKLAYTransactorSession struct {
 14462  	Contract     *BridgeTransferKLAYTransactor // Generic contract transactor binding to set the session for
 14463  	TransactOpts bind.TransactOpts             // Transaction auth options to use throughout this session
 14464  }
 14465  
 14466  // BridgeTransferKLAYRaw is an auto generated low-level Go binding around a Klaytn contract.
 14467  type BridgeTransferKLAYRaw struct {
 14468  	Contract *BridgeTransferKLAY // Generic contract binding to access the raw methods on
 14469  }
 14470  
 14471  // BridgeTransferKLAYCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 14472  type BridgeTransferKLAYCallerRaw struct {
 14473  	Contract *BridgeTransferKLAYCaller // Generic read-only contract binding to access the raw methods on
 14474  }
 14475  
 14476  // BridgeTransferKLAYTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 14477  type BridgeTransferKLAYTransactorRaw struct {
 14478  	Contract *BridgeTransferKLAYTransactor // Generic write-only contract binding to access the raw methods on
 14479  }
 14480  
 14481  // NewBridgeTransferKLAY creates a new instance of BridgeTransferKLAY, bound to a specific deployed contract.
 14482  func NewBridgeTransferKLAY(address common.Address, backend bind.ContractBackend) (*BridgeTransferKLAY, error) {
 14483  	contract, err := bindBridgeTransferKLAY(address, backend, backend, backend)
 14484  	if err != nil {
 14485  		return nil, err
 14486  	}
 14487  	return &BridgeTransferKLAY{BridgeTransferKLAYCaller: BridgeTransferKLAYCaller{contract: contract}, BridgeTransferKLAYTransactor: BridgeTransferKLAYTransactor{contract: contract}, BridgeTransferKLAYFilterer: BridgeTransferKLAYFilterer{contract: contract}}, nil
 14488  }
 14489  
 14490  // NewBridgeTransferKLAYCaller creates a new read-only instance of BridgeTransferKLAY, bound to a specific deployed contract.
 14491  func NewBridgeTransferKLAYCaller(address common.Address, caller bind.ContractCaller) (*BridgeTransferKLAYCaller, error) {
 14492  	contract, err := bindBridgeTransferKLAY(address, caller, nil, nil)
 14493  	if err != nil {
 14494  		return nil, err
 14495  	}
 14496  	return &BridgeTransferKLAYCaller{contract: contract}, nil
 14497  }
 14498  
 14499  // NewBridgeTransferKLAYTransactor creates a new write-only instance of BridgeTransferKLAY, bound to a specific deployed contract.
 14500  func NewBridgeTransferKLAYTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransferKLAYTransactor, error) {
 14501  	contract, err := bindBridgeTransferKLAY(address, nil, transactor, nil)
 14502  	if err != nil {
 14503  		return nil, err
 14504  	}
 14505  	return &BridgeTransferKLAYTransactor{contract: contract}, nil
 14506  }
 14507  
 14508  // NewBridgeTransferKLAYFilterer creates a new log filterer instance of BridgeTransferKLAY, bound to a specific deployed contract.
 14509  func NewBridgeTransferKLAYFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTransferKLAYFilterer, error) {
 14510  	contract, err := bindBridgeTransferKLAY(address, nil, nil, filterer)
 14511  	if err != nil {
 14512  		return nil, err
 14513  	}
 14514  	return &BridgeTransferKLAYFilterer{contract: contract}, nil
 14515  }
 14516  
 14517  // bindBridgeTransferKLAY binds a generic wrapper to an already deployed contract.
 14518  func bindBridgeTransferKLAY(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 14519  	parsed, err := abi.JSON(strings.NewReader(BridgeTransferKLAYABI))
 14520  	if err != nil {
 14521  		return nil, err
 14522  	}
 14523  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 14524  }
 14525  
 14526  // Call invokes the (constant) contract method with params as input values and
 14527  // sets the output to result. The result type might be a single field for simple
 14528  // returns, a slice of interfaces for anonymous returns and a struct for named
 14529  // returns.
 14530  func (_BridgeTransferKLAY *BridgeTransferKLAYRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 14531  	return _BridgeTransferKLAY.Contract.BridgeTransferKLAYCaller.contract.Call(opts, result, method, params...)
 14532  }
 14533  
 14534  // Transfer initiates a plain transaction to move funds to the contract, calling
 14535  // its default method if one is available.
 14536  func (_BridgeTransferKLAY *BridgeTransferKLAYRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 14537  	return _BridgeTransferKLAY.Contract.BridgeTransferKLAYTransactor.contract.Transfer(opts)
 14538  }
 14539  
 14540  // Transact invokes the (paid) contract method with params as input values.
 14541  func (_BridgeTransferKLAY *BridgeTransferKLAYRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 14542  	return _BridgeTransferKLAY.Contract.BridgeTransferKLAYTransactor.contract.Transact(opts, method, params...)
 14543  }
 14544  
 14545  // Call invokes the (constant) contract method with params as input values and
 14546  // sets the output to result. The result type might be a single field for simple
 14547  // returns, a slice of interfaces for anonymous returns and a struct for named
 14548  // returns.
 14549  func (_BridgeTransferKLAY *BridgeTransferKLAYCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 14550  	return _BridgeTransferKLAY.Contract.contract.Call(opts, result, method, params...)
 14551  }
 14552  
 14553  // Transfer initiates a plain transaction to move funds to the contract, calling
 14554  // its default method if one is available.
 14555  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 14556  	return _BridgeTransferKLAY.Contract.contract.Transfer(opts)
 14557  }
 14558  
 14559  // Transact invokes the (paid) contract method with params as input values.
 14560  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 14561  	return _BridgeTransferKLAY.Contract.contract.Transact(opts, method, params...)
 14562  }
 14563  
 14564  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
 14565  //
 14566  // Solidity: function MAX_OPERATOR() view returns(uint64)
 14567  func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) {
 14568  	var (
 14569  		ret0 = new(uint64)
 14570  	)
 14571  	out := ret0
 14572  	err := _BridgeTransferKLAY.contract.Call(opts, out, "MAX_OPERATOR")
 14573  	return *ret0, err
 14574  }
 14575  
 14576  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
 14577  //
 14578  // Solidity: function MAX_OPERATOR() view returns(uint64)
 14579  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) MAXOPERATOR() (uint64, error) {
 14580  	return _BridgeTransferKLAY.Contract.MAXOPERATOR(&_BridgeTransferKLAY.CallOpts)
 14581  }
 14582  
 14583  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
 14584  //
 14585  // Solidity: function MAX_OPERATOR() view returns(uint64)
 14586  func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) MAXOPERATOR() (uint64, error) {
 14587  	return _BridgeTransferKLAY.Contract.MAXOPERATOR(&_BridgeTransferKLAY.CallOpts)
 14588  }
 14589  
 14590  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
 14591  //
 14592  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
 14593  func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) {
 14594  	var (
 14595  		ret0 = new(bool)
 14596  	)
 14597  	out := ret0
 14598  	err := _BridgeTransferKLAY.contract.Call(opts, out, "closedValueTransferVotes", arg0)
 14599  	return *ret0, err
 14600  }
 14601  
 14602  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
 14603  //
 14604  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
 14605  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) {
 14606  	return _BridgeTransferKLAY.Contract.ClosedValueTransferVotes(&_BridgeTransferKLAY.CallOpts, arg0)
 14607  }
 14608  
 14609  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
 14610  //
 14611  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
 14612  func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) {
 14613  	return _BridgeTransferKLAY.Contract.ClosedValueTransferVotes(&_BridgeTransferKLAY.CallOpts, arg0)
 14614  }
 14615  
 14616  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
 14617  //
 14618  // Solidity: function configurationNonce() view returns(uint64)
 14619  func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) {
 14620  	var (
 14621  		ret0 = new(uint64)
 14622  	)
 14623  	out := ret0
 14624  	err := _BridgeTransferKLAY.contract.Call(opts, out, "configurationNonce")
 14625  	return *ret0, err
 14626  }
 14627  
 14628  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
 14629  //
 14630  // Solidity: function configurationNonce() view returns(uint64)
 14631  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) ConfigurationNonce() (uint64, error) {
 14632  	return _BridgeTransferKLAY.Contract.ConfigurationNonce(&_BridgeTransferKLAY.CallOpts)
 14633  }
 14634  
 14635  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
 14636  //
 14637  // Solidity: function configurationNonce() view returns(uint64)
 14638  func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) ConfigurationNonce() (uint64, error) {
 14639  	return _BridgeTransferKLAY.Contract.ConfigurationNonce(&_BridgeTransferKLAY.CallOpts)
 14640  }
 14641  
 14642  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
 14643  //
 14644  // Solidity: function feeOfERC20(address ) view returns(uint256)
 14645  func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
 14646  	var (
 14647  		ret0 = new(*big.Int)
 14648  	)
 14649  	out := ret0
 14650  	err := _BridgeTransferKLAY.contract.Call(opts, out, "feeOfERC20", arg0)
 14651  	return *ret0, err
 14652  }
 14653  
 14654  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
 14655  //
 14656  // Solidity: function feeOfERC20(address ) view returns(uint256)
 14657  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) {
 14658  	return _BridgeTransferKLAY.Contract.FeeOfERC20(&_BridgeTransferKLAY.CallOpts, arg0)
 14659  }
 14660  
 14661  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
 14662  //
 14663  // Solidity: function feeOfERC20(address ) view returns(uint256)
 14664  func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) {
 14665  	return _BridgeTransferKLAY.Contract.FeeOfERC20(&_BridgeTransferKLAY.CallOpts, arg0)
 14666  }
 14667  
 14668  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
 14669  //
 14670  // Solidity: function feeOfKLAY() view returns(uint256)
 14671  func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) {
 14672  	var (
 14673  		ret0 = new(*big.Int)
 14674  	)
 14675  	out := ret0
 14676  	err := _BridgeTransferKLAY.contract.Call(opts, out, "feeOfKLAY")
 14677  	return *ret0, err
 14678  }
 14679  
 14680  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
 14681  //
 14682  // Solidity: function feeOfKLAY() view returns(uint256)
 14683  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) FeeOfKLAY() (*big.Int, error) {
 14684  	return _BridgeTransferKLAY.Contract.FeeOfKLAY(&_BridgeTransferKLAY.CallOpts)
 14685  }
 14686  
 14687  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
 14688  //
 14689  // Solidity: function feeOfKLAY() view returns(uint256)
 14690  func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) FeeOfKLAY() (*big.Int, error) {
 14691  	return _BridgeTransferKLAY.Contract.FeeOfKLAY(&_BridgeTransferKLAY.CallOpts)
 14692  }
 14693  
 14694  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
 14695  //
 14696  // Solidity: function feeReceiver() view returns(address)
 14697  func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) {
 14698  	var (
 14699  		ret0 = new(common.Address)
 14700  	)
 14701  	out := ret0
 14702  	err := _BridgeTransferKLAY.contract.Call(opts, out, "feeReceiver")
 14703  	return *ret0, err
 14704  }
 14705  
 14706  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
 14707  //
 14708  // Solidity: function feeReceiver() view returns(address)
 14709  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) FeeReceiver() (common.Address, error) {
 14710  	return _BridgeTransferKLAY.Contract.FeeReceiver(&_BridgeTransferKLAY.CallOpts)
 14711  }
 14712  
 14713  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
 14714  //
 14715  // Solidity: function feeReceiver() view returns(address)
 14716  func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) FeeReceiver() (common.Address, error) {
 14717  	return _BridgeTransferKLAY.Contract.FeeReceiver(&_BridgeTransferKLAY.CallOpts)
 14718  }
 14719  
 14720  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
 14721  //
 14722  // Solidity: function getOperatorList() view returns(address[])
 14723  func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) {
 14724  	var (
 14725  		ret0 = new([]common.Address)
 14726  	)
 14727  	out := ret0
 14728  	err := _BridgeTransferKLAY.contract.Call(opts, out, "getOperatorList")
 14729  	return *ret0, err
 14730  }
 14731  
 14732  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
 14733  //
 14734  // Solidity: function getOperatorList() view returns(address[])
 14735  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) GetOperatorList() ([]common.Address, error) {
 14736  	return _BridgeTransferKLAY.Contract.GetOperatorList(&_BridgeTransferKLAY.CallOpts)
 14737  }
 14738  
 14739  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
 14740  //
 14741  // Solidity: function getOperatorList() view returns(address[])
 14742  func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) GetOperatorList() ([]common.Address, error) {
 14743  	return _BridgeTransferKLAY.Contract.GetOperatorList(&_BridgeTransferKLAY.CallOpts)
 14744  }
 14745  
 14746  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
 14747  //
 14748  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
 14749  func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) {
 14750  	var (
 14751  		ret0 = new(uint64)
 14752  	)
 14753  	out := ret0
 14754  	err := _BridgeTransferKLAY.contract.Call(opts, out, "handleNoncesToBlockNums", arg0)
 14755  	return *ret0, err
 14756  }
 14757  
 14758  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
 14759  //
 14760  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
 14761  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) {
 14762  	return _BridgeTransferKLAY.Contract.HandleNoncesToBlockNums(&_BridgeTransferKLAY.CallOpts, arg0)
 14763  }
 14764  
 14765  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
 14766  //
 14767  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
 14768  func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) {
 14769  	return _BridgeTransferKLAY.Contract.HandleNoncesToBlockNums(&_BridgeTransferKLAY.CallOpts, arg0)
 14770  }
 14771  
 14772  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
 14773  //
 14774  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
 14775  func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) {
 14776  	var (
 14777  		ret0 = new(bool)
 14778  	)
 14779  	out := ret0
 14780  	err := _BridgeTransferKLAY.contract.Call(opts, out, "handledRequestTx", arg0)
 14781  	return *ret0, err
 14782  }
 14783  
 14784  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
 14785  //
 14786  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
 14787  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) HandledRequestTx(arg0 [32]byte) (bool, error) {
 14788  	return _BridgeTransferKLAY.Contract.HandledRequestTx(&_BridgeTransferKLAY.CallOpts, arg0)
 14789  }
 14790  
 14791  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
 14792  //
 14793  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
 14794  func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) {
 14795  	return _BridgeTransferKLAY.Contract.HandledRequestTx(&_BridgeTransferKLAY.CallOpts, arg0)
 14796  }
 14797  
 14798  // IsLockedKLAY is a free data retrieval call binding the contract method 0xf1719966.
 14799  //
 14800  // Solidity: function isLockedKLAY() view returns(bool)
 14801  func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) IsLockedKLAY(opts *bind.CallOpts) (bool, error) {
 14802  	var (
 14803  		ret0 = new(bool)
 14804  	)
 14805  	out := ret0
 14806  	err := _BridgeTransferKLAY.contract.Call(opts, out, "isLockedKLAY")
 14807  	return *ret0, err
 14808  }
 14809  
 14810  // IsLockedKLAY is a free data retrieval call binding the contract method 0xf1719966.
 14811  //
 14812  // Solidity: function isLockedKLAY() view returns(bool)
 14813  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) IsLockedKLAY() (bool, error) {
 14814  	return _BridgeTransferKLAY.Contract.IsLockedKLAY(&_BridgeTransferKLAY.CallOpts)
 14815  }
 14816  
 14817  // IsLockedKLAY is a free data retrieval call binding the contract method 0xf1719966.
 14818  //
 14819  // Solidity: function isLockedKLAY() view returns(bool)
 14820  func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) IsLockedKLAY() (bool, error) {
 14821  	return _BridgeTransferKLAY.Contract.IsLockedKLAY(&_BridgeTransferKLAY.CallOpts)
 14822  }
 14823  
 14824  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 14825  //
 14826  // Solidity: function isOwner() view returns(bool)
 14827  func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
 14828  	var (
 14829  		ret0 = new(bool)
 14830  	)
 14831  	out := ret0
 14832  	err := _BridgeTransferKLAY.contract.Call(opts, out, "isOwner")
 14833  	return *ret0, err
 14834  }
 14835  
 14836  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 14837  //
 14838  // Solidity: function isOwner() view returns(bool)
 14839  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) IsOwner() (bool, error) {
 14840  	return _BridgeTransferKLAY.Contract.IsOwner(&_BridgeTransferKLAY.CallOpts)
 14841  }
 14842  
 14843  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 14844  //
 14845  // Solidity: function isOwner() view returns(bool)
 14846  func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) IsOwner() (bool, error) {
 14847  	return _BridgeTransferKLAY.Contract.IsOwner(&_BridgeTransferKLAY.CallOpts)
 14848  }
 14849  
 14850  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
 14851  //
 14852  // Solidity: function isRunning() view returns(bool)
 14853  func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) IsRunning(opts *bind.CallOpts) (bool, error) {
 14854  	var (
 14855  		ret0 = new(bool)
 14856  	)
 14857  	out := ret0
 14858  	err := _BridgeTransferKLAY.contract.Call(opts, out, "isRunning")
 14859  	return *ret0, err
 14860  }
 14861  
 14862  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
 14863  //
 14864  // Solidity: function isRunning() view returns(bool)
 14865  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) IsRunning() (bool, error) {
 14866  	return _BridgeTransferKLAY.Contract.IsRunning(&_BridgeTransferKLAY.CallOpts)
 14867  }
 14868  
 14869  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
 14870  //
 14871  // Solidity: function isRunning() view returns(bool)
 14872  func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) IsRunning() (bool, error) {
 14873  	return _BridgeTransferKLAY.Contract.IsRunning(&_BridgeTransferKLAY.CallOpts)
 14874  }
 14875  
 14876  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
 14877  //
 14878  // Solidity: function lowerHandleNonce() view returns(uint64)
 14879  func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) {
 14880  	var (
 14881  		ret0 = new(uint64)
 14882  	)
 14883  	out := ret0
 14884  	err := _BridgeTransferKLAY.contract.Call(opts, out, "lowerHandleNonce")
 14885  	return *ret0, err
 14886  }
 14887  
 14888  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
 14889  //
 14890  // Solidity: function lowerHandleNonce() view returns(uint64)
 14891  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) LowerHandleNonce() (uint64, error) {
 14892  	return _BridgeTransferKLAY.Contract.LowerHandleNonce(&_BridgeTransferKLAY.CallOpts)
 14893  }
 14894  
 14895  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
 14896  //
 14897  // Solidity: function lowerHandleNonce() view returns(uint64)
 14898  func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) LowerHandleNonce() (uint64, error) {
 14899  	return _BridgeTransferKLAY.Contract.LowerHandleNonce(&_BridgeTransferKLAY.CallOpts)
 14900  }
 14901  
 14902  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
 14903  //
 14904  // Solidity: function modeMintBurn() view returns(bool)
 14905  func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) ModeMintBurn(opts *bind.CallOpts) (bool, error) {
 14906  	var (
 14907  		ret0 = new(bool)
 14908  	)
 14909  	out := ret0
 14910  	err := _BridgeTransferKLAY.contract.Call(opts, out, "modeMintBurn")
 14911  	return *ret0, err
 14912  }
 14913  
 14914  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
 14915  //
 14916  // Solidity: function modeMintBurn() view returns(bool)
 14917  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) ModeMintBurn() (bool, error) {
 14918  	return _BridgeTransferKLAY.Contract.ModeMintBurn(&_BridgeTransferKLAY.CallOpts)
 14919  }
 14920  
 14921  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
 14922  //
 14923  // Solidity: function modeMintBurn() view returns(bool)
 14924  func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) ModeMintBurn() (bool, error) {
 14925  	return _BridgeTransferKLAY.Contract.ModeMintBurn(&_BridgeTransferKLAY.CallOpts)
 14926  }
 14927  
 14928  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
 14929  //
 14930  // Solidity: function operatorList(uint256 ) view returns(address)
 14931  func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
 14932  	var (
 14933  		ret0 = new(common.Address)
 14934  	)
 14935  	out := ret0
 14936  	err := _BridgeTransferKLAY.contract.Call(opts, out, "operatorList", arg0)
 14937  	return *ret0, err
 14938  }
 14939  
 14940  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
 14941  //
 14942  // Solidity: function operatorList(uint256 ) view returns(address)
 14943  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) OperatorList(arg0 *big.Int) (common.Address, error) {
 14944  	return _BridgeTransferKLAY.Contract.OperatorList(&_BridgeTransferKLAY.CallOpts, arg0)
 14945  }
 14946  
 14947  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
 14948  //
 14949  // Solidity: function operatorList(uint256 ) view returns(address)
 14950  func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) OperatorList(arg0 *big.Int) (common.Address, error) {
 14951  	return _BridgeTransferKLAY.Contract.OperatorList(&_BridgeTransferKLAY.CallOpts, arg0)
 14952  }
 14953  
 14954  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
 14955  //
 14956  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
 14957  func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) {
 14958  	var (
 14959  		ret0 = new(uint8)
 14960  	)
 14961  	out := ret0
 14962  	err := _BridgeTransferKLAY.contract.Call(opts, out, "operatorThresholds", arg0)
 14963  	return *ret0, err
 14964  }
 14965  
 14966  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
 14967  //
 14968  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
 14969  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) OperatorThresholds(arg0 uint8) (uint8, error) {
 14970  	return _BridgeTransferKLAY.Contract.OperatorThresholds(&_BridgeTransferKLAY.CallOpts, arg0)
 14971  }
 14972  
 14973  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
 14974  //
 14975  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
 14976  func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) OperatorThresholds(arg0 uint8) (uint8, error) {
 14977  	return _BridgeTransferKLAY.Contract.OperatorThresholds(&_BridgeTransferKLAY.CallOpts, arg0)
 14978  }
 14979  
 14980  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
 14981  //
 14982  // Solidity: function operators(address ) view returns(bool)
 14983  func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
 14984  	var (
 14985  		ret0 = new(bool)
 14986  	)
 14987  	out := ret0
 14988  	err := _BridgeTransferKLAY.contract.Call(opts, out, "operators", arg0)
 14989  	return *ret0, err
 14990  }
 14991  
 14992  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
 14993  //
 14994  // Solidity: function operators(address ) view returns(bool)
 14995  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) Operators(arg0 common.Address) (bool, error) {
 14996  	return _BridgeTransferKLAY.Contract.Operators(&_BridgeTransferKLAY.CallOpts, arg0)
 14997  }
 14998  
 14999  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
 15000  //
 15001  // Solidity: function operators(address ) view returns(bool)
 15002  func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) Operators(arg0 common.Address) (bool, error) {
 15003  	return _BridgeTransferKLAY.Contract.Operators(&_BridgeTransferKLAY.CallOpts, arg0)
 15004  }
 15005  
 15006  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 15007  //
 15008  // Solidity: function owner() view returns(address)
 15009  func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
 15010  	var (
 15011  		ret0 = new(common.Address)
 15012  	)
 15013  	out := ret0
 15014  	err := _BridgeTransferKLAY.contract.Call(opts, out, "owner")
 15015  	return *ret0, err
 15016  }
 15017  
 15018  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 15019  //
 15020  // Solidity: function owner() view returns(address)
 15021  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) Owner() (common.Address, error) {
 15022  	return _BridgeTransferKLAY.Contract.Owner(&_BridgeTransferKLAY.CallOpts)
 15023  }
 15024  
 15025  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 15026  //
 15027  // Solidity: function owner() view returns(address)
 15028  func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) Owner() (common.Address, error) {
 15029  	return _BridgeTransferKLAY.Contract.Owner(&_BridgeTransferKLAY.CallOpts)
 15030  }
 15031  
 15032  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
 15033  //
 15034  // Solidity: function recoveryBlockNumber() view returns(uint64)
 15035  func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) {
 15036  	var (
 15037  		ret0 = new(uint64)
 15038  	)
 15039  	out := ret0
 15040  	err := _BridgeTransferKLAY.contract.Call(opts, out, "recoveryBlockNumber")
 15041  	return *ret0, err
 15042  }
 15043  
 15044  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
 15045  //
 15046  // Solidity: function recoveryBlockNumber() view returns(uint64)
 15047  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) RecoveryBlockNumber() (uint64, error) {
 15048  	return _BridgeTransferKLAY.Contract.RecoveryBlockNumber(&_BridgeTransferKLAY.CallOpts)
 15049  }
 15050  
 15051  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
 15052  //
 15053  // Solidity: function recoveryBlockNumber() view returns(uint64)
 15054  func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) RecoveryBlockNumber() (uint64, error) {
 15055  	return _BridgeTransferKLAY.Contract.RecoveryBlockNumber(&_BridgeTransferKLAY.CallOpts)
 15056  }
 15057  
 15058  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
 15059  //
 15060  // Solidity: function requestNonce() view returns(uint64)
 15061  func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) RequestNonce(opts *bind.CallOpts) (uint64, error) {
 15062  	var (
 15063  		ret0 = new(uint64)
 15064  	)
 15065  	out := ret0
 15066  	err := _BridgeTransferKLAY.contract.Call(opts, out, "requestNonce")
 15067  	return *ret0, err
 15068  }
 15069  
 15070  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
 15071  //
 15072  // Solidity: function requestNonce() view returns(uint64)
 15073  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) RequestNonce() (uint64, error) {
 15074  	return _BridgeTransferKLAY.Contract.RequestNonce(&_BridgeTransferKLAY.CallOpts)
 15075  }
 15076  
 15077  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
 15078  //
 15079  // Solidity: function requestNonce() view returns(uint64)
 15080  func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) RequestNonce() (uint64, error) {
 15081  	return _BridgeTransferKLAY.Contract.RequestNonce(&_BridgeTransferKLAY.CallOpts)
 15082  }
 15083  
 15084  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
 15085  //
 15086  // Solidity: function upperHandleNonce() view returns(uint64)
 15087  func (_BridgeTransferKLAY *BridgeTransferKLAYCaller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) {
 15088  	var (
 15089  		ret0 = new(uint64)
 15090  	)
 15091  	out := ret0
 15092  	err := _BridgeTransferKLAY.contract.Call(opts, out, "upperHandleNonce")
 15093  	return *ret0, err
 15094  }
 15095  
 15096  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
 15097  //
 15098  // Solidity: function upperHandleNonce() view returns(uint64)
 15099  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) UpperHandleNonce() (uint64, error) {
 15100  	return _BridgeTransferKLAY.Contract.UpperHandleNonce(&_BridgeTransferKLAY.CallOpts)
 15101  }
 15102  
 15103  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
 15104  //
 15105  // Solidity: function upperHandleNonce() view returns(uint64)
 15106  func (_BridgeTransferKLAY *BridgeTransferKLAYCallerSession) UpperHandleNonce() (uint64, error) {
 15107  	return _BridgeTransferKLAY.Contract.UpperHandleNonce(&_BridgeTransferKLAY.CallOpts)
 15108  }
 15109  
 15110  // ChargeWithoutEvent is a paid mutator transaction binding the contract method 0xdd9222d6.
 15111  //
 15112  // Solidity: function chargeWithoutEvent() payable returns()
 15113  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) ChargeWithoutEvent(opts *bind.TransactOpts) (*types.Transaction, error) {
 15114  	return _BridgeTransferKLAY.contract.Transact(opts, "chargeWithoutEvent")
 15115  }
 15116  
 15117  // ChargeWithoutEvent is a paid mutator transaction binding the contract method 0xdd9222d6.
 15118  //
 15119  // Solidity: function chargeWithoutEvent() payable returns()
 15120  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) ChargeWithoutEvent() (*types.Transaction, error) {
 15121  	return _BridgeTransferKLAY.Contract.ChargeWithoutEvent(&_BridgeTransferKLAY.TransactOpts)
 15122  }
 15123  
 15124  // ChargeWithoutEvent is a paid mutator transaction binding the contract method 0xdd9222d6.
 15125  //
 15126  // Solidity: function chargeWithoutEvent() payable returns()
 15127  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) ChargeWithoutEvent() (*types.Transaction, error) {
 15128  	return _BridgeTransferKLAY.Contract.ChargeWithoutEvent(&_BridgeTransferKLAY.TransactOpts)
 15129  }
 15130  
 15131  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
 15132  //
 15133  // Solidity: function deregisterOperator(address _operator) returns()
 15134  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
 15135  	return _BridgeTransferKLAY.contract.Transact(opts, "deregisterOperator", _operator)
 15136  }
 15137  
 15138  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
 15139  //
 15140  // Solidity: function deregisterOperator(address _operator) returns()
 15141  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) {
 15142  	return _BridgeTransferKLAY.Contract.DeregisterOperator(&_BridgeTransferKLAY.TransactOpts, _operator)
 15143  }
 15144  
 15145  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
 15146  //
 15147  // Solidity: function deregisterOperator(address _operator) returns()
 15148  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) {
 15149  	return _BridgeTransferKLAY.Contract.DeregisterOperator(&_BridgeTransferKLAY.TransactOpts, _operator)
 15150  }
 15151  
 15152  // HandleKLAYTransfer is a paid mutator transaction binding the contract method 0xa066a7ed.
 15153  //
 15154  // Solidity: function handleKLAYTransfer(bytes32 _requestTxHash, address _from, address _to, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns()
 15155  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) HandleKLAYTransfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) {
 15156  	return _BridgeTransferKLAY.contract.Transact(opts, "handleKLAYTransfer", _requestTxHash, _from, _to, _value, _requestedNonce, _requestedBlockNumber, _extraData)
 15157  }
 15158  
 15159  // HandleKLAYTransfer is a paid mutator transaction binding the contract method 0xa066a7ed.
 15160  //
 15161  // Solidity: function handleKLAYTransfer(bytes32 _requestTxHash, address _from, address _to, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns()
 15162  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) HandleKLAYTransfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) {
 15163  	return _BridgeTransferKLAY.Contract.HandleKLAYTransfer(&_BridgeTransferKLAY.TransactOpts, _requestTxHash, _from, _to, _value, _requestedNonce, _requestedBlockNumber, _extraData)
 15164  }
 15165  
 15166  // HandleKLAYTransfer is a paid mutator transaction binding the contract method 0xa066a7ed.
 15167  //
 15168  // Solidity: function handleKLAYTransfer(bytes32 _requestTxHash, address _from, address _to, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns()
 15169  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) HandleKLAYTransfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) {
 15170  	return _BridgeTransferKLAY.Contract.HandleKLAYTransfer(&_BridgeTransferKLAY.TransactOpts, _requestTxHash, _from, _to, _value, _requestedNonce, _requestedBlockNumber, _extraData)
 15171  }
 15172  
 15173  // LockKLAY is a paid mutator transaction binding the contract method 0x9f071329.
 15174  //
 15175  // Solidity: function lockKLAY() returns()
 15176  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) LockKLAY(opts *bind.TransactOpts) (*types.Transaction, error) {
 15177  	return _BridgeTransferKLAY.contract.Transact(opts, "lockKLAY")
 15178  }
 15179  
 15180  // LockKLAY is a paid mutator transaction binding the contract method 0x9f071329.
 15181  //
 15182  // Solidity: function lockKLAY() returns()
 15183  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) LockKLAY() (*types.Transaction, error) {
 15184  	return _BridgeTransferKLAY.Contract.LockKLAY(&_BridgeTransferKLAY.TransactOpts)
 15185  }
 15186  
 15187  // LockKLAY is a paid mutator transaction binding the contract method 0x9f071329.
 15188  //
 15189  // Solidity: function lockKLAY() returns()
 15190  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) LockKLAY() (*types.Transaction, error) {
 15191  	return _BridgeTransferKLAY.Contract.LockKLAY(&_BridgeTransferKLAY.TransactOpts)
 15192  }
 15193  
 15194  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
 15195  //
 15196  // Solidity: function registerOperator(address _operator) returns()
 15197  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
 15198  	return _BridgeTransferKLAY.contract.Transact(opts, "registerOperator", _operator)
 15199  }
 15200  
 15201  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
 15202  //
 15203  // Solidity: function registerOperator(address _operator) returns()
 15204  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) {
 15205  	return _BridgeTransferKLAY.Contract.RegisterOperator(&_BridgeTransferKLAY.TransactOpts, _operator)
 15206  }
 15207  
 15208  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
 15209  //
 15210  // Solidity: function registerOperator(address _operator) returns()
 15211  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) {
 15212  	return _BridgeTransferKLAY.Contract.RegisterOperator(&_BridgeTransferKLAY.TransactOpts, _operator)
 15213  }
 15214  
 15215  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 15216  //
 15217  // Solidity: function renounceOwnership() returns()
 15218  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
 15219  	return _BridgeTransferKLAY.contract.Transact(opts, "renounceOwnership")
 15220  }
 15221  
 15222  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 15223  //
 15224  // Solidity: function renounceOwnership() returns()
 15225  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) RenounceOwnership() (*types.Transaction, error) {
 15226  	return _BridgeTransferKLAY.Contract.RenounceOwnership(&_BridgeTransferKLAY.TransactOpts)
 15227  }
 15228  
 15229  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 15230  //
 15231  // Solidity: function renounceOwnership() returns()
 15232  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) RenounceOwnership() (*types.Transaction, error) {
 15233  	return _BridgeTransferKLAY.Contract.RenounceOwnership(&_BridgeTransferKLAY.TransactOpts)
 15234  }
 15235  
 15236  // RequestKLAYTransfer is a paid mutator transaction binding the contract method 0x75ebdc09.
 15237  //
 15238  // Solidity: function requestKLAYTransfer(address _to, uint256 _value, bytes _extraData) payable returns()
 15239  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) RequestKLAYTransfer(opts *bind.TransactOpts, _to common.Address, _value *big.Int, _extraData []byte) (*types.Transaction, error) {
 15240  	return _BridgeTransferKLAY.contract.Transact(opts, "requestKLAYTransfer", _to, _value, _extraData)
 15241  }
 15242  
 15243  // RequestKLAYTransfer is a paid mutator transaction binding the contract method 0x75ebdc09.
 15244  //
 15245  // Solidity: function requestKLAYTransfer(address _to, uint256 _value, bytes _extraData) payable returns()
 15246  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) RequestKLAYTransfer(_to common.Address, _value *big.Int, _extraData []byte) (*types.Transaction, error) {
 15247  	return _BridgeTransferKLAY.Contract.RequestKLAYTransfer(&_BridgeTransferKLAY.TransactOpts, _to, _value, _extraData)
 15248  }
 15249  
 15250  // RequestKLAYTransfer is a paid mutator transaction binding the contract method 0x75ebdc09.
 15251  //
 15252  // Solidity: function requestKLAYTransfer(address _to, uint256 _value, bytes _extraData) payable returns()
 15253  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) RequestKLAYTransfer(_to common.Address, _value *big.Int, _extraData []byte) (*types.Transaction, error) {
 15254  	return _BridgeTransferKLAY.Contract.RequestKLAYTransfer(&_BridgeTransferKLAY.TransactOpts, _to, _value, _extraData)
 15255  }
 15256  
 15257  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
 15258  //
 15259  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
 15260  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) {
 15261  	return _BridgeTransferKLAY.contract.Transact(opts, "setFeeReceiver", _feeReceiver)
 15262  }
 15263  
 15264  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
 15265  //
 15266  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
 15267  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) {
 15268  	return _BridgeTransferKLAY.Contract.SetFeeReceiver(&_BridgeTransferKLAY.TransactOpts, _feeReceiver)
 15269  }
 15270  
 15271  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
 15272  //
 15273  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
 15274  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) {
 15275  	return _BridgeTransferKLAY.Contract.SetFeeReceiver(&_BridgeTransferKLAY.TransactOpts, _feeReceiver)
 15276  }
 15277  
 15278  // SetKLAYFee is a paid mutator transaction binding the contract method 0x1a2ae53e.
 15279  //
 15280  // Solidity: function setKLAYFee(uint256 _fee, uint64 _requestNonce) returns()
 15281  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) SetKLAYFee(opts *bind.TransactOpts, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) {
 15282  	return _BridgeTransferKLAY.contract.Transact(opts, "setKLAYFee", _fee, _requestNonce)
 15283  }
 15284  
 15285  // SetKLAYFee is a paid mutator transaction binding the contract method 0x1a2ae53e.
 15286  //
 15287  // Solidity: function setKLAYFee(uint256 _fee, uint64 _requestNonce) returns()
 15288  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) SetKLAYFee(_fee *big.Int, _requestNonce uint64) (*types.Transaction, error) {
 15289  	return _BridgeTransferKLAY.Contract.SetKLAYFee(&_BridgeTransferKLAY.TransactOpts, _fee, _requestNonce)
 15290  }
 15291  
 15292  // SetKLAYFee is a paid mutator transaction binding the contract method 0x1a2ae53e.
 15293  //
 15294  // Solidity: function setKLAYFee(uint256 _fee, uint64 _requestNonce) returns()
 15295  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) SetKLAYFee(_fee *big.Int, _requestNonce uint64) (*types.Transaction, error) {
 15296  	return _BridgeTransferKLAY.Contract.SetKLAYFee(&_BridgeTransferKLAY.TransactOpts, _fee, _requestNonce)
 15297  }
 15298  
 15299  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
 15300  //
 15301  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
 15302  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) {
 15303  	return _BridgeTransferKLAY.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold)
 15304  }
 15305  
 15306  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
 15307  //
 15308  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
 15309  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) {
 15310  	return _BridgeTransferKLAY.Contract.SetOperatorThreshold(&_BridgeTransferKLAY.TransactOpts, _voteType, _threshold)
 15311  }
 15312  
 15313  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
 15314  //
 15315  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
 15316  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) {
 15317  	return _BridgeTransferKLAY.Contract.SetOperatorThreshold(&_BridgeTransferKLAY.TransactOpts, _voteType, _threshold)
 15318  }
 15319  
 15320  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
 15321  //
 15322  // Solidity: function start(bool _status) returns()
 15323  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) {
 15324  	return _BridgeTransferKLAY.contract.Transact(opts, "start", _status)
 15325  }
 15326  
 15327  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
 15328  //
 15329  // Solidity: function start(bool _status) returns()
 15330  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) Start(_status bool) (*types.Transaction, error) {
 15331  	return _BridgeTransferKLAY.Contract.Start(&_BridgeTransferKLAY.TransactOpts, _status)
 15332  }
 15333  
 15334  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
 15335  //
 15336  // Solidity: function start(bool _status) returns()
 15337  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) Start(_status bool) (*types.Transaction, error) {
 15338  	return _BridgeTransferKLAY.Contract.Start(&_BridgeTransferKLAY.TransactOpts, _status)
 15339  }
 15340  
 15341  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 15342  //
 15343  // Solidity: function transferOwnership(address newOwner) returns()
 15344  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
 15345  	return _BridgeTransferKLAY.contract.Transact(opts, "transferOwnership", newOwner)
 15346  }
 15347  
 15348  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 15349  //
 15350  // Solidity: function transferOwnership(address newOwner) returns()
 15351  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
 15352  	return _BridgeTransferKLAY.Contract.TransferOwnership(&_BridgeTransferKLAY.TransactOpts, newOwner)
 15353  }
 15354  
 15355  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 15356  //
 15357  // Solidity: function transferOwnership(address newOwner) returns()
 15358  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
 15359  	return _BridgeTransferKLAY.Contract.TransferOwnership(&_BridgeTransferKLAY.TransactOpts, newOwner)
 15360  }
 15361  
 15362  // UnlockKLAY is a paid mutator transaction binding the contract method 0x1ebdca38.
 15363  //
 15364  // Solidity: function unlockKLAY() returns()
 15365  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) UnlockKLAY(opts *bind.TransactOpts) (*types.Transaction, error) {
 15366  	return _BridgeTransferKLAY.contract.Transact(opts, "unlockKLAY")
 15367  }
 15368  
 15369  // UnlockKLAY is a paid mutator transaction binding the contract method 0x1ebdca38.
 15370  //
 15371  // Solidity: function unlockKLAY() returns()
 15372  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) UnlockKLAY() (*types.Transaction, error) {
 15373  	return _BridgeTransferKLAY.Contract.UnlockKLAY(&_BridgeTransferKLAY.TransactOpts)
 15374  }
 15375  
 15376  // UnlockKLAY is a paid mutator transaction binding the contract method 0x1ebdca38.
 15377  //
 15378  // Solidity: function unlockKLAY() returns()
 15379  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) UnlockKLAY() (*types.Transaction, error) {
 15380  	return _BridgeTransferKLAY.Contract.UnlockKLAY(&_BridgeTransferKLAY.TransactOpts)
 15381  }
 15382  
 15383  // Fallback is a paid mutator transaction binding the contract fallback function.
 15384  //
 15385  // Solidity: fallback() payable returns()
 15386  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) {
 15387  	return _BridgeTransferKLAY.contract.RawTransact(opts, calldata)
 15388  }
 15389  
 15390  // Fallback is a paid mutator transaction binding the contract fallback function.
 15391  //
 15392  // Solidity: fallback() payable returns()
 15393  func (_BridgeTransferKLAY *BridgeTransferKLAYSession) Fallback(calldata []byte) (*types.Transaction, error) {
 15394  	return _BridgeTransferKLAY.Contract.Fallback(&_BridgeTransferKLAY.TransactOpts, calldata)
 15395  }
 15396  
 15397  // Fallback is a paid mutator transaction binding the contract fallback function.
 15398  //
 15399  // Solidity: fallback() payable returns()
 15400  func (_BridgeTransferKLAY *BridgeTransferKLAYTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) {
 15401  	return _BridgeTransferKLAY.Contract.Fallback(&_BridgeTransferKLAY.TransactOpts, calldata)
 15402  }
 15403  
 15404  // BridgeTransferKLAYERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeTransferKLAY contract.
 15405  type BridgeTransferKLAYERC20FeeChangedIterator struct {
 15406  	Event *BridgeTransferKLAYERC20FeeChanged // Event containing the contract specifics and raw log
 15407  
 15408  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 15409  	event    string              // Event name to use for unpacking event data
 15410  
 15411  	logs chan types.Log      // Log channel receiving the found contract events
 15412  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 15413  	done bool                // Whether the subscription completed delivering logs
 15414  	fail error               // Occurred error to stop iteration
 15415  }
 15416  
 15417  // Next advances the iterator to the subsequent event, returning whether there
 15418  // are any more events found. In case of a retrieval or parsing error, false is
 15419  // returned and Error() can be queried for the exact failure.
 15420  func (it *BridgeTransferKLAYERC20FeeChangedIterator) Next() bool {
 15421  	// If the iterator failed, stop iterating
 15422  	if it.fail != nil {
 15423  		return false
 15424  	}
 15425  	// If the iterator completed, deliver directly whatever's available
 15426  	if it.done {
 15427  		select {
 15428  		case log := <-it.logs:
 15429  			it.Event = new(BridgeTransferKLAYERC20FeeChanged)
 15430  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 15431  				it.fail = err
 15432  				return false
 15433  			}
 15434  			it.Event.Raw = log
 15435  			return true
 15436  
 15437  		default:
 15438  			return false
 15439  		}
 15440  	}
 15441  	// Iterator still in progress, wait for either a data or an error event
 15442  	select {
 15443  	case log := <-it.logs:
 15444  		it.Event = new(BridgeTransferKLAYERC20FeeChanged)
 15445  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 15446  			it.fail = err
 15447  			return false
 15448  		}
 15449  		it.Event.Raw = log
 15450  		return true
 15451  
 15452  	case err := <-it.sub.Err():
 15453  		it.done = true
 15454  		it.fail = err
 15455  		return it.Next()
 15456  	}
 15457  }
 15458  
 15459  // Error returns any retrieval or parsing error occurred during filtering.
 15460  func (it *BridgeTransferKLAYERC20FeeChangedIterator) Error() error {
 15461  	return it.fail
 15462  }
 15463  
 15464  // Close terminates the iteration process, releasing any pending underlying
 15465  // resources.
 15466  func (it *BridgeTransferKLAYERC20FeeChangedIterator) Close() error {
 15467  	it.sub.Unsubscribe()
 15468  	return nil
 15469  }
 15470  
 15471  // BridgeTransferKLAYERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeTransferKLAY contract.
 15472  type BridgeTransferKLAYERC20FeeChanged struct {
 15473  	Token common.Address
 15474  	Fee   *big.Int
 15475  	Raw   types.Log // Blockchain specific contextual infos
 15476  }
 15477  
 15478  // FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
 15479  //
 15480  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
 15481  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeTransferKLAYERC20FeeChangedIterator, error) {
 15482  
 15483  	var tokenRule []interface{}
 15484  	for _, tokenItem := range token {
 15485  		tokenRule = append(tokenRule, tokenItem)
 15486  	}
 15487  	var feeRule []interface{}
 15488  	for _, feeItem := range fee {
 15489  		feeRule = append(feeRule, feeItem)
 15490  	}
 15491  
 15492  	logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule)
 15493  	if err != nil {
 15494  		return nil, err
 15495  	}
 15496  	return &BridgeTransferKLAYERC20FeeChangedIterator{contract: _BridgeTransferKLAY.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil
 15497  }
 15498  
 15499  // WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
 15500  //
 15501  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
 15502  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) {
 15503  
 15504  	var tokenRule []interface{}
 15505  	for _, tokenItem := range token {
 15506  		tokenRule = append(tokenRule, tokenItem)
 15507  	}
 15508  	var feeRule []interface{}
 15509  	for _, feeItem := range fee {
 15510  		feeRule = append(feeRule, feeItem)
 15511  	}
 15512  
 15513  	logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule)
 15514  	if err != nil {
 15515  		return nil, err
 15516  	}
 15517  	return event.NewSubscription(func(quit <-chan struct{}) error {
 15518  		defer sub.Unsubscribe()
 15519  		for {
 15520  			select {
 15521  			case log := <-logs:
 15522  				// New log arrived, parse the event and forward to the user
 15523  				event := new(BridgeTransferKLAYERC20FeeChanged)
 15524  				if err := _BridgeTransferKLAY.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil {
 15525  					return err
 15526  				}
 15527  				event.Raw = log
 15528  
 15529  				select {
 15530  				case sink <- event:
 15531  				case err := <-sub.Err():
 15532  					return err
 15533  				case <-quit:
 15534  					return nil
 15535  				}
 15536  			case err := <-sub.Err():
 15537  				return err
 15538  			case <-quit:
 15539  				return nil
 15540  			}
 15541  		}
 15542  	}), nil
 15543  }
 15544  
 15545  // ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
 15546  //
 15547  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
 15548  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseERC20FeeChanged(log types.Log) (*BridgeTransferKLAYERC20FeeChanged, error) {
 15549  	event := new(BridgeTransferKLAYERC20FeeChanged)
 15550  	if err := _BridgeTransferKLAY.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil {
 15551  		return nil, err
 15552  	}
 15553  	return event, nil
 15554  }
 15555  
 15556  // BridgeTransferKLAYFeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeTransferKLAY contract.
 15557  type BridgeTransferKLAYFeeReceiverChangedIterator struct {
 15558  	Event *BridgeTransferKLAYFeeReceiverChanged // Event containing the contract specifics and raw log
 15559  
 15560  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 15561  	event    string              // Event name to use for unpacking event data
 15562  
 15563  	logs chan types.Log      // Log channel receiving the found contract events
 15564  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 15565  	done bool                // Whether the subscription completed delivering logs
 15566  	fail error               // Occurred error to stop iteration
 15567  }
 15568  
 15569  // Next advances the iterator to the subsequent event, returning whether there
 15570  // are any more events found. In case of a retrieval or parsing error, false is
 15571  // returned and Error() can be queried for the exact failure.
 15572  func (it *BridgeTransferKLAYFeeReceiverChangedIterator) Next() bool {
 15573  	// If the iterator failed, stop iterating
 15574  	if it.fail != nil {
 15575  		return false
 15576  	}
 15577  	// If the iterator completed, deliver directly whatever's available
 15578  	if it.done {
 15579  		select {
 15580  		case log := <-it.logs:
 15581  			it.Event = new(BridgeTransferKLAYFeeReceiverChanged)
 15582  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 15583  				it.fail = err
 15584  				return false
 15585  			}
 15586  			it.Event.Raw = log
 15587  			return true
 15588  
 15589  		default:
 15590  			return false
 15591  		}
 15592  	}
 15593  	// Iterator still in progress, wait for either a data or an error event
 15594  	select {
 15595  	case log := <-it.logs:
 15596  		it.Event = new(BridgeTransferKLAYFeeReceiverChanged)
 15597  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 15598  			it.fail = err
 15599  			return false
 15600  		}
 15601  		it.Event.Raw = log
 15602  		return true
 15603  
 15604  	case err := <-it.sub.Err():
 15605  		it.done = true
 15606  		it.fail = err
 15607  		return it.Next()
 15608  	}
 15609  }
 15610  
 15611  // Error returns any retrieval or parsing error occurred during filtering.
 15612  func (it *BridgeTransferKLAYFeeReceiverChangedIterator) Error() error {
 15613  	return it.fail
 15614  }
 15615  
 15616  // Close terminates the iteration process, releasing any pending underlying
 15617  // resources.
 15618  func (it *BridgeTransferKLAYFeeReceiverChangedIterator) Close() error {
 15619  	it.sub.Unsubscribe()
 15620  	return nil
 15621  }
 15622  
 15623  // BridgeTransferKLAYFeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeTransferKLAY contract.
 15624  type BridgeTransferKLAYFeeReceiverChanged struct {
 15625  	FeeReceiver common.Address
 15626  	Raw         types.Log // Blockchain specific contextual infos
 15627  }
 15628  
 15629  // FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
 15630  //
 15631  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
 15632  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeTransferKLAYFeeReceiverChangedIterator, error) {
 15633  
 15634  	var feeReceiverRule []interface{}
 15635  	for _, feeReceiverItem := range feeReceiver {
 15636  		feeReceiverRule = append(feeReceiverRule, feeReceiverItem)
 15637  	}
 15638  
 15639  	logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule)
 15640  	if err != nil {
 15641  		return nil, err
 15642  	}
 15643  	return &BridgeTransferKLAYFeeReceiverChangedIterator{contract: _BridgeTransferKLAY.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil
 15644  }
 15645  
 15646  // WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
 15647  //
 15648  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
 15649  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYFeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) {
 15650  
 15651  	var feeReceiverRule []interface{}
 15652  	for _, feeReceiverItem := range feeReceiver {
 15653  		feeReceiverRule = append(feeReceiverRule, feeReceiverItem)
 15654  	}
 15655  
 15656  	logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule)
 15657  	if err != nil {
 15658  		return nil, err
 15659  	}
 15660  	return event.NewSubscription(func(quit <-chan struct{}) error {
 15661  		defer sub.Unsubscribe()
 15662  		for {
 15663  			select {
 15664  			case log := <-logs:
 15665  				// New log arrived, parse the event and forward to the user
 15666  				event := new(BridgeTransferKLAYFeeReceiverChanged)
 15667  				if err := _BridgeTransferKLAY.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil {
 15668  					return err
 15669  				}
 15670  				event.Raw = log
 15671  
 15672  				select {
 15673  				case sink <- event:
 15674  				case err := <-sub.Err():
 15675  					return err
 15676  				case <-quit:
 15677  					return nil
 15678  				}
 15679  			case err := <-sub.Err():
 15680  				return err
 15681  			case <-quit:
 15682  				return nil
 15683  			}
 15684  		}
 15685  	}), nil
 15686  }
 15687  
 15688  // ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
 15689  //
 15690  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
 15691  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseFeeReceiverChanged(log types.Log) (*BridgeTransferKLAYFeeReceiverChanged, error) {
 15692  	event := new(BridgeTransferKLAYFeeReceiverChanged)
 15693  	if err := _BridgeTransferKLAY.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil {
 15694  		return nil, err
 15695  	}
 15696  	return event, nil
 15697  }
 15698  
 15699  // BridgeTransferKLAYHandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the BridgeTransferKLAY contract.
 15700  type BridgeTransferKLAYHandleValueTransferIterator struct {
 15701  	Event *BridgeTransferKLAYHandleValueTransfer // Event containing the contract specifics and raw log
 15702  
 15703  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 15704  	event    string              // Event name to use for unpacking event data
 15705  
 15706  	logs chan types.Log      // Log channel receiving the found contract events
 15707  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 15708  	done bool                // Whether the subscription completed delivering logs
 15709  	fail error               // Occurred error to stop iteration
 15710  }
 15711  
 15712  // Next advances the iterator to the subsequent event, returning whether there
 15713  // are any more events found. In case of a retrieval or parsing error, false is
 15714  // returned and Error() can be queried for the exact failure.
 15715  func (it *BridgeTransferKLAYHandleValueTransferIterator) Next() bool {
 15716  	// If the iterator failed, stop iterating
 15717  	if it.fail != nil {
 15718  		return false
 15719  	}
 15720  	// If the iterator completed, deliver directly whatever's available
 15721  	if it.done {
 15722  		select {
 15723  		case log := <-it.logs:
 15724  			it.Event = new(BridgeTransferKLAYHandleValueTransfer)
 15725  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 15726  				it.fail = err
 15727  				return false
 15728  			}
 15729  			it.Event.Raw = log
 15730  			return true
 15731  
 15732  		default:
 15733  			return false
 15734  		}
 15735  	}
 15736  	// Iterator still in progress, wait for either a data or an error event
 15737  	select {
 15738  	case log := <-it.logs:
 15739  		it.Event = new(BridgeTransferKLAYHandleValueTransfer)
 15740  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 15741  			it.fail = err
 15742  			return false
 15743  		}
 15744  		it.Event.Raw = log
 15745  		return true
 15746  
 15747  	case err := <-it.sub.Err():
 15748  		it.done = true
 15749  		it.fail = err
 15750  		return it.Next()
 15751  	}
 15752  }
 15753  
 15754  // Error returns any retrieval or parsing error occurred during filtering.
 15755  func (it *BridgeTransferKLAYHandleValueTransferIterator) Error() error {
 15756  	return it.fail
 15757  }
 15758  
 15759  // Close terminates the iteration process, releasing any pending underlying
 15760  // resources.
 15761  func (it *BridgeTransferKLAYHandleValueTransferIterator) Close() error {
 15762  	it.sub.Unsubscribe()
 15763  	return nil
 15764  }
 15765  
 15766  // BridgeTransferKLAYHandleValueTransfer represents a HandleValueTransfer event raised by the BridgeTransferKLAY contract.
 15767  type BridgeTransferKLAYHandleValueTransfer struct {
 15768  	RequestTxHash    [32]byte
 15769  	TokenType        uint8
 15770  	From             common.Address
 15771  	To               common.Address
 15772  	TokenAddress     common.Address
 15773  	ValueOrTokenId   *big.Int
 15774  	HandleNonce      uint64
 15775  	LowerHandleNonce uint64
 15776  	ExtraData        []byte
 15777  	Raw              types.Log // Blockchain specific contextual infos
 15778  }
 15779  
 15780  // FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
 15781  //
 15782  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
 15783  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferKLAYHandleValueTransferIterator, error) {
 15784  
 15785  	var fromRule []interface{}
 15786  	for _, fromItem := range from {
 15787  		fromRule = append(fromRule, fromItem)
 15788  	}
 15789  	var toRule []interface{}
 15790  	for _, toItem := range to {
 15791  		toRule = append(toRule, toItem)
 15792  	}
 15793  	var tokenAddressRule []interface{}
 15794  	for _, tokenAddressItem := range tokenAddress {
 15795  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 15796  	}
 15797  
 15798  	logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule)
 15799  	if err != nil {
 15800  		return nil, err
 15801  	}
 15802  	return &BridgeTransferKLAYHandleValueTransferIterator{contract: _BridgeTransferKLAY.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil
 15803  }
 15804  
 15805  // WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
 15806  //
 15807  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
 15808  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYHandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
 15809  
 15810  	var fromRule []interface{}
 15811  	for _, fromItem := range from {
 15812  		fromRule = append(fromRule, fromItem)
 15813  	}
 15814  	var toRule []interface{}
 15815  	for _, toItem := range to {
 15816  		toRule = append(toRule, toItem)
 15817  	}
 15818  	var tokenAddressRule []interface{}
 15819  	for _, tokenAddressItem := range tokenAddress {
 15820  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 15821  	}
 15822  
 15823  	logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule)
 15824  	if err != nil {
 15825  		return nil, err
 15826  	}
 15827  	return event.NewSubscription(func(quit <-chan struct{}) error {
 15828  		defer sub.Unsubscribe()
 15829  		for {
 15830  			select {
 15831  			case log := <-logs:
 15832  				// New log arrived, parse the event and forward to the user
 15833  				event := new(BridgeTransferKLAYHandleValueTransfer)
 15834  				if err := _BridgeTransferKLAY.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil {
 15835  					return err
 15836  				}
 15837  				event.Raw = log
 15838  
 15839  				select {
 15840  				case sink <- event:
 15841  				case err := <-sub.Err():
 15842  					return err
 15843  				case <-quit:
 15844  					return nil
 15845  				}
 15846  			case err := <-sub.Err():
 15847  				return err
 15848  			case <-quit:
 15849  				return nil
 15850  			}
 15851  		}
 15852  	}), nil
 15853  }
 15854  
 15855  // ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
 15856  //
 15857  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
 15858  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseHandleValueTransfer(log types.Log) (*BridgeTransferKLAYHandleValueTransfer, error) {
 15859  	event := new(BridgeTransferKLAYHandleValueTransfer)
 15860  	if err := _BridgeTransferKLAY.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil {
 15861  		return nil, err
 15862  	}
 15863  	return event, nil
 15864  }
 15865  
 15866  // BridgeTransferKLAYKLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeTransferKLAY contract.
 15867  type BridgeTransferKLAYKLAYFeeChangedIterator struct {
 15868  	Event *BridgeTransferKLAYKLAYFeeChanged // Event containing the contract specifics and raw log
 15869  
 15870  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 15871  	event    string              // Event name to use for unpacking event data
 15872  
 15873  	logs chan types.Log      // Log channel receiving the found contract events
 15874  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 15875  	done bool                // Whether the subscription completed delivering logs
 15876  	fail error               // Occurred error to stop iteration
 15877  }
 15878  
 15879  // Next advances the iterator to the subsequent event, returning whether there
 15880  // are any more events found. In case of a retrieval or parsing error, false is
 15881  // returned and Error() can be queried for the exact failure.
 15882  func (it *BridgeTransferKLAYKLAYFeeChangedIterator) Next() bool {
 15883  	// If the iterator failed, stop iterating
 15884  	if it.fail != nil {
 15885  		return false
 15886  	}
 15887  	// If the iterator completed, deliver directly whatever's available
 15888  	if it.done {
 15889  		select {
 15890  		case log := <-it.logs:
 15891  			it.Event = new(BridgeTransferKLAYKLAYFeeChanged)
 15892  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 15893  				it.fail = err
 15894  				return false
 15895  			}
 15896  			it.Event.Raw = log
 15897  			return true
 15898  
 15899  		default:
 15900  			return false
 15901  		}
 15902  	}
 15903  	// Iterator still in progress, wait for either a data or an error event
 15904  	select {
 15905  	case log := <-it.logs:
 15906  		it.Event = new(BridgeTransferKLAYKLAYFeeChanged)
 15907  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 15908  			it.fail = err
 15909  			return false
 15910  		}
 15911  		it.Event.Raw = log
 15912  		return true
 15913  
 15914  	case err := <-it.sub.Err():
 15915  		it.done = true
 15916  		it.fail = err
 15917  		return it.Next()
 15918  	}
 15919  }
 15920  
 15921  // Error returns any retrieval or parsing error occurred during filtering.
 15922  func (it *BridgeTransferKLAYKLAYFeeChangedIterator) Error() error {
 15923  	return it.fail
 15924  }
 15925  
 15926  // Close terminates the iteration process, releasing any pending underlying
 15927  // resources.
 15928  func (it *BridgeTransferKLAYKLAYFeeChangedIterator) Close() error {
 15929  	it.sub.Unsubscribe()
 15930  	return nil
 15931  }
 15932  
 15933  // BridgeTransferKLAYKLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeTransferKLAY contract.
 15934  type BridgeTransferKLAYKLAYFeeChanged struct {
 15935  	Fee *big.Int
 15936  	Raw types.Log // Blockchain specific contextual infos
 15937  }
 15938  
 15939  // FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
 15940  //
 15941  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
 15942  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeTransferKLAYKLAYFeeChangedIterator, error) {
 15943  
 15944  	var feeRule []interface{}
 15945  	for _, feeItem := range fee {
 15946  		feeRule = append(feeRule, feeItem)
 15947  	}
 15948  
 15949  	logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule)
 15950  	if err != nil {
 15951  		return nil, err
 15952  	}
 15953  	return &BridgeTransferKLAYKLAYFeeChangedIterator{contract: _BridgeTransferKLAY.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil
 15954  }
 15955  
 15956  // WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
 15957  //
 15958  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
 15959  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYKLAYFeeChanged, fee []*big.Int) (event.Subscription, error) {
 15960  
 15961  	var feeRule []interface{}
 15962  	for _, feeItem := range fee {
 15963  		feeRule = append(feeRule, feeItem)
 15964  	}
 15965  
 15966  	logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule)
 15967  	if err != nil {
 15968  		return nil, err
 15969  	}
 15970  	return event.NewSubscription(func(quit <-chan struct{}) error {
 15971  		defer sub.Unsubscribe()
 15972  		for {
 15973  			select {
 15974  			case log := <-logs:
 15975  				// New log arrived, parse the event and forward to the user
 15976  				event := new(BridgeTransferKLAYKLAYFeeChanged)
 15977  				if err := _BridgeTransferKLAY.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil {
 15978  					return err
 15979  				}
 15980  				event.Raw = log
 15981  
 15982  				select {
 15983  				case sink <- event:
 15984  				case err := <-sub.Err():
 15985  					return err
 15986  				case <-quit:
 15987  					return nil
 15988  				}
 15989  			case err := <-sub.Err():
 15990  				return err
 15991  			case <-quit:
 15992  				return nil
 15993  			}
 15994  		}
 15995  	}), nil
 15996  }
 15997  
 15998  // ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
 15999  //
 16000  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
 16001  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseKLAYFeeChanged(log types.Log) (*BridgeTransferKLAYKLAYFeeChanged, error) {
 16002  	event := new(BridgeTransferKLAYKLAYFeeChanged)
 16003  	if err := _BridgeTransferKLAY.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil {
 16004  		return nil, err
 16005  	}
 16006  	return event, nil
 16007  }
 16008  
 16009  // BridgeTransferKLAYKLAYLockedIterator is returned from FilterKLAYLocked and is used to iterate over the raw logs and unpacked data for KLAYLocked events raised by the BridgeTransferKLAY contract.
 16010  type BridgeTransferKLAYKLAYLockedIterator struct {
 16011  	Event *BridgeTransferKLAYKLAYLocked // Event containing the contract specifics and raw log
 16012  
 16013  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 16014  	event    string              // Event name to use for unpacking event data
 16015  
 16016  	logs chan types.Log      // Log channel receiving the found contract events
 16017  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 16018  	done bool                // Whether the subscription completed delivering logs
 16019  	fail error               // Occurred error to stop iteration
 16020  }
 16021  
 16022  // Next advances the iterator to the subsequent event, returning whether there
 16023  // are any more events found. In case of a retrieval or parsing error, false is
 16024  // returned and Error() can be queried for the exact failure.
 16025  func (it *BridgeTransferKLAYKLAYLockedIterator) Next() bool {
 16026  	// If the iterator failed, stop iterating
 16027  	if it.fail != nil {
 16028  		return false
 16029  	}
 16030  	// If the iterator completed, deliver directly whatever's available
 16031  	if it.done {
 16032  		select {
 16033  		case log := <-it.logs:
 16034  			it.Event = new(BridgeTransferKLAYKLAYLocked)
 16035  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16036  				it.fail = err
 16037  				return false
 16038  			}
 16039  			it.Event.Raw = log
 16040  			return true
 16041  
 16042  		default:
 16043  			return false
 16044  		}
 16045  	}
 16046  	// Iterator still in progress, wait for either a data or an error event
 16047  	select {
 16048  	case log := <-it.logs:
 16049  		it.Event = new(BridgeTransferKLAYKLAYLocked)
 16050  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16051  			it.fail = err
 16052  			return false
 16053  		}
 16054  		it.Event.Raw = log
 16055  		return true
 16056  
 16057  	case err := <-it.sub.Err():
 16058  		it.done = true
 16059  		it.fail = err
 16060  		return it.Next()
 16061  	}
 16062  }
 16063  
 16064  // Error returns any retrieval or parsing error occurred during filtering.
 16065  func (it *BridgeTransferKLAYKLAYLockedIterator) Error() error {
 16066  	return it.fail
 16067  }
 16068  
 16069  // Close terminates the iteration process, releasing any pending underlying
 16070  // resources.
 16071  func (it *BridgeTransferKLAYKLAYLockedIterator) Close() error {
 16072  	it.sub.Unsubscribe()
 16073  	return nil
 16074  }
 16075  
 16076  // BridgeTransferKLAYKLAYLocked represents a KLAYLocked event raised by the BridgeTransferKLAY contract.
 16077  type BridgeTransferKLAYKLAYLocked struct {
 16078  	Raw types.Log // Blockchain specific contextual infos
 16079  }
 16080  
 16081  // FilterKLAYLocked is a free log retrieval operation binding the contract event 0x915f3053cbc6842207cd97b68c0b585109b4f2fe61c5dbeb25d7678bfdfb8dfa.
 16082  //
 16083  // Solidity: event KLAYLocked()
 16084  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterKLAYLocked(opts *bind.FilterOpts) (*BridgeTransferKLAYKLAYLockedIterator, error) {
 16085  
 16086  	logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "KLAYLocked")
 16087  	if err != nil {
 16088  		return nil, err
 16089  	}
 16090  	return &BridgeTransferKLAYKLAYLockedIterator{contract: _BridgeTransferKLAY.contract, event: "KLAYLocked", logs: logs, sub: sub}, nil
 16091  }
 16092  
 16093  // WatchKLAYLocked is a free log subscription operation binding the contract event 0x915f3053cbc6842207cd97b68c0b585109b4f2fe61c5dbeb25d7678bfdfb8dfa.
 16094  //
 16095  // Solidity: event KLAYLocked()
 16096  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchKLAYLocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYKLAYLocked) (event.Subscription, error) {
 16097  
 16098  	logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "KLAYLocked")
 16099  	if err != nil {
 16100  		return nil, err
 16101  	}
 16102  	return event.NewSubscription(func(quit <-chan struct{}) error {
 16103  		defer sub.Unsubscribe()
 16104  		for {
 16105  			select {
 16106  			case log := <-logs:
 16107  				// New log arrived, parse the event and forward to the user
 16108  				event := new(BridgeTransferKLAYKLAYLocked)
 16109  				if err := _BridgeTransferKLAY.contract.UnpackLog(event, "KLAYLocked", log); err != nil {
 16110  					return err
 16111  				}
 16112  				event.Raw = log
 16113  
 16114  				select {
 16115  				case sink <- event:
 16116  				case err := <-sub.Err():
 16117  					return err
 16118  				case <-quit:
 16119  					return nil
 16120  				}
 16121  			case err := <-sub.Err():
 16122  				return err
 16123  			case <-quit:
 16124  				return nil
 16125  			}
 16126  		}
 16127  	}), nil
 16128  }
 16129  
 16130  // ParseKLAYLocked is a log parse operation binding the contract event 0x915f3053cbc6842207cd97b68c0b585109b4f2fe61c5dbeb25d7678bfdfb8dfa.
 16131  //
 16132  // Solidity: event KLAYLocked()
 16133  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseKLAYLocked(log types.Log) (*BridgeTransferKLAYKLAYLocked, error) {
 16134  	event := new(BridgeTransferKLAYKLAYLocked)
 16135  	if err := _BridgeTransferKLAY.contract.UnpackLog(event, "KLAYLocked", log); err != nil {
 16136  		return nil, err
 16137  	}
 16138  	return event, nil
 16139  }
 16140  
 16141  // BridgeTransferKLAYKLAYUnlockedIterator is returned from FilterKLAYUnlocked and is used to iterate over the raw logs and unpacked data for KLAYUnlocked events raised by the BridgeTransferKLAY contract.
 16142  type BridgeTransferKLAYKLAYUnlockedIterator struct {
 16143  	Event *BridgeTransferKLAYKLAYUnlocked // Event containing the contract specifics and raw log
 16144  
 16145  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 16146  	event    string              // Event name to use for unpacking event data
 16147  
 16148  	logs chan types.Log      // Log channel receiving the found contract events
 16149  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 16150  	done bool                // Whether the subscription completed delivering logs
 16151  	fail error               // Occurred error to stop iteration
 16152  }
 16153  
 16154  // Next advances the iterator to the subsequent event, returning whether there
 16155  // are any more events found. In case of a retrieval or parsing error, false is
 16156  // returned and Error() can be queried for the exact failure.
 16157  func (it *BridgeTransferKLAYKLAYUnlockedIterator) Next() bool {
 16158  	// If the iterator failed, stop iterating
 16159  	if it.fail != nil {
 16160  		return false
 16161  	}
 16162  	// If the iterator completed, deliver directly whatever's available
 16163  	if it.done {
 16164  		select {
 16165  		case log := <-it.logs:
 16166  			it.Event = new(BridgeTransferKLAYKLAYUnlocked)
 16167  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16168  				it.fail = err
 16169  				return false
 16170  			}
 16171  			it.Event.Raw = log
 16172  			return true
 16173  
 16174  		default:
 16175  			return false
 16176  		}
 16177  	}
 16178  	// Iterator still in progress, wait for either a data or an error event
 16179  	select {
 16180  	case log := <-it.logs:
 16181  		it.Event = new(BridgeTransferKLAYKLAYUnlocked)
 16182  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16183  			it.fail = err
 16184  			return false
 16185  		}
 16186  		it.Event.Raw = log
 16187  		return true
 16188  
 16189  	case err := <-it.sub.Err():
 16190  		it.done = true
 16191  		it.fail = err
 16192  		return it.Next()
 16193  	}
 16194  }
 16195  
 16196  // Error returns any retrieval or parsing error occurred during filtering.
 16197  func (it *BridgeTransferKLAYKLAYUnlockedIterator) Error() error {
 16198  	return it.fail
 16199  }
 16200  
 16201  // Close terminates the iteration process, releasing any pending underlying
 16202  // resources.
 16203  func (it *BridgeTransferKLAYKLAYUnlockedIterator) Close() error {
 16204  	it.sub.Unsubscribe()
 16205  	return nil
 16206  }
 16207  
 16208  // BridgeTransferKLAYKLAYUnlocked represents a KLAYUnlocked event raised by the BridgeTransferKLAY contract.
 16209  type BridgeTransferKLAYKLAYUnlocked struct {
 16210  	Raw types.Log // Blockchain specific contextual infos
 16211  }
 16212  
 16213  // FilterKLAYUnlocked is a free log retrieval operation binding the contract event 0xd20610c9b78a6903ef134539e3deb5d243be461de6ef12d4c29536bb9b54fa1b.
 16214  //
 16215  // Solidity: event KLAYUnlocked()
 16216  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterKLAYUnlocked(opts *bind.FilterOpts) (*BridgeTransferKLAYKLAYUnlockedIterator, error) {
 16217  
 16218  	logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "KLAYUnlocked")
 16219  	if err != nil {
 16220  		return nil, err
 16221  	}
 16222  	return &BridgeTransferKLAYKLAYUnlockedIterator{contract: _BridgeTransferKLAY.contract, event: "KLAYUnlocked", logs: logs, sub: sub}, nil
 16223  }
 16224  
 16225  // WatchKLAYUnlocked is a free log subscription operation binding the contract event 0xd20610c9b78a6903ef134539e3deb5d243be461de6ef12d4c29536bb9b54fa1b.
 16226  //
 16227  // Solidity: event KLAYUnlocked()
 16228  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchKLAYUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYKLAYUnlocked) (event.Subscription, error) {
 16229  
 16230  	logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "KLAYUnlocked")
 16231  	if err != nil {
 16232  		return nil, err
 16233  	}
 16234  	return event.NewSubscription(func(quit <-chan struct{}) error {
 16235  		defer sub.Unsubscribe()
 16236  		for {
 16237  			select {
 16238  			case log := <-logs:
 16239  				// New log arrived, parse the event and forward to the user
 16240  				event := new(BridgeTransferKLAYKLAYUnlocked)
 16241  				if err := _BridgeTransferKLAY.contract.UnpackLog(event, "KLAYUnlocked", log); err != nil {
 16242  					return err
 16243  				}
 16244  				event.Raw = log
 16245  
 16246  				select {
 16247  				case sink <- event:
 16248  				case err := <-sub.Err():
 16249  					return err
 16250  				case <-quit:
 16251  					return nil
 16252  				}
 16253  			case err := <-sub.Err():
 16254  				return err
 16255  			case <-quit:
 16256  				return nil
 16257  			}
 16258  		}
 16259  	}), nil
 16260  }
 16261  
 16262  // ParseKLAYUnlocked is a log parse operation binding the contract event 0xd20610c9b78a6903ef134539e3deb5d243be461de6ef12d4c29536bb9b54fa1b.
 16263  //
 16264  // Solidity: event KLAYUnlocked()
 16265  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseKLAYUnlocked(log types.Log) (*BridgeTransferKLAYKLAYUnlocked, error) {
 16266  	event := new(BridgeTransferKLAYKLAYUnlocked)
 16267  	if err := _BridgeTransferKLAY.contract.UnpackLog(event, "KLAYUnlocked", log); err != nil {
 16268  		return nil, err
 16269  	}
 16270  	return event, nil
 16271  }
 16272  
 16273  // BridgeTransferKLAYOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTransferKLAY contract.
 16274  type BridgeTransferKLAYOwnershipTransferredIterator struct {
 16275  	Event *BridgeTransferKLAYOwnershipTransferred // Event containing the contract specifics and raw log
 16276  
 16277  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 16278  	event    string              // Event name to use for unpacking event data
 16279  
 16280  	logs chan types.Log      // Log channel receiving the found contract events
 16281  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 16282  	done bool                // Whether the subscription completed delivering logs
 16283  	fail error               // Occurred error to stop iteration
 16284  }
 16285  
 16286  // Next advances the iterator to the subsequent event, returning whether there
 16287  // are any more events found. In case of a retrieval or parsing error, false is
 16288  // returned and Error() can be queried for the exact failure.
 16289  func (it *BridgeTransferKLAYOwnershipTransferredIterator) Next() bool {
 16290  	// If the iterator failed, stop iterating
 16291  	if it.fail != nil {
 16292  		return false
 16293  	}
 16294  	// If the iterator completed, deliver directly whatever's available
 16295  	if it.done {
 16296  		select {
 16297  		case log := <-it.logs:
 16298  			it.Event = new(BridgeTransferKLAYOwnershipTransferred)
 16299  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16300  				it.fail = err
 16301  				return false
 16302  			}
 16303  			it.Event.Raw = log
 16304  			return true
 16305  
 16306  		default:
 16307  			return false
 16308  		}
 16309  	}
 16310  	// Iterator still in progress, wait for either a data or an error event
 16311  	select {
 16312  	case log := <-it.logs:
 16313  		it.Event = new(BridgeTransferKLAYOwnershipTransferred)
 16314  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16315  			it.fail = err
 16316  			return false
 16317  		}
 16318  		it.Event.Raw = log
 16319  		return true
 16320  
 16321  	case err := <-it.sub.Err():
 16322  		it.done = true
 16323  		it.fail = err
 16324  		return it.Next()
 16325  	}
 16326  }
 16327  
 16328  // Error returns any retrieval or parsing error occurred during filtering.
 16329  func (it *BridgeTransferKLAYOwnershipTransferredIterator) Error() error {
 16330  	return it.fail
 16331  }
 16332  
 16333  // Close terminates the iteration process, releasing any pending underlying
 16334  // resources.
 16335  func (it *BridgeTransferKLAYOwnershipTransferredIterator) Close() error {
 16336  	it.sub.Unsubscribe()
 16337  	return nil
 16338  }
 16339  
 16340  // BridgeTransferKLAYOwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTransferKLAY contract.
 16341  type BridgeTransferKLAYOwnershipTransferred struct {
 16342  	PreviousOwner common.Address
 16343  	NewOwner      common.Address
 16344  	Raw           types.Log // Blockchain specific contextual infos
 16345  }
 16346  
 16347  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 16348  //
 16349  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 16350  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTransferKLAYOwnershipTransferredIterator, error) {
 16351  
 16352  	var previousOwnerRule []interface{}
 16353  	for _, previousOwnerItem := range previousOwner {
 16354  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 16355  	}
 16356  	var newOwnerRule []interface{}
 16357  	for _, newOwnerItem := range newOwner {
 16358  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 16359  	}
 16360  
 16361  	logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 16362  	if err != nil {
 16363  		return nil, err
 16364  	}
 16365  	return &BridgeTransferKLAYOwnershipTransferredIterator{contract: _BridgeTransferKLAY.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
 16366  }
 16367  
 16368  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 16369  //
 16370  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 16371  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
 16372  
 16373  	var previousOwnerRule []interface{}
 16374  	for _, previousOwnerItem := range previousOwner {
 16375  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 16376  	}
 16377  	var newOwnerRule []interface{}
 16378  	for _, newOwnerItem := range newOwner {
 16379  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 16380  	}
 16381  
 16382  	logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 16383  	if err != nil {
 16384  		return nil, err
 16385  	}
 16386  	return event.NewSubscription(func(quit <-chan struct{}) error {
 16387  		defer sub.Unsubscribe()
 16388  		for {
 16389  			select {
 16390  			case log := <-logs:
 16391  				// New log arrived, parse the event and forward to the user
 16392  				event := new(BridgeTransferKLAYOwnershipTransferred)
 16393  				if err := _BridgeTransferKLAY.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 16394  					return err
 16395  				}
 16396  				event.Raw = log
 16397  
 16398  				select {
 16399  				case sink <- event:
 16400  				case err := <-sub.Err():
 16401  					return err
 16402  				case <-quit:
 16403  					return nil
 16404  				}
 16405  			case err := <-sub.Err():
 16406  				return err
 16407  			case <-quit:
 16408  				return nil
 16409  			}
 16410  		}
 16411  	}), nil
 16412  }
 16413  
 16414  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 16415  //
 16416  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 16417  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeTransferKLAYOwnershipTransferred, error) {
 16418  	event := new(BridgeTransferKLAYOwnershipTransferred)
 16419  	if err := _BridgeTransferKLAY.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 16420  		return nil, err
 16421  	}
 16422  	return event, nil
 16423  }
 16424  
 16425  // BridgeTransferKLAYRequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the BridgeTransferKLAY contract.
 16426  type BridgeTransferKLAYRequestValueTransferIterator struct {
 16427  	Event *BridgeTransferKLAYRequestValueTransfer // Event containing the contract specifics and raw log
 16428  
 16429  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 16430  	event    string              // Event name to use for unpacking event data
 16431  
 16432  	logs chan types.Log      // Log channel receiving the found contract events
 16433  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 16434  	done bool                // Whether the subscription completed delivering logs
 16435  	fail error               // Occurred error to stop iteration
 16436  }
 16437  
 16438  // Next advances the iterator to the subsequent event, returning whether there
 16439  // are any more events found. In case of a retrieval or parsing error, false is
 16440  // returned and Error() can be queried for the exact failure.
 16441  func (it *BridgeTransferKLAYRequestValueTransferIterator) Next() bool {
 16442  	// If the iterator failed, stop iterating
 16443  	if it.fail != nil {
 16444  		return false
 16445  	}
 16446  	// If the iterator completed, deliver directly whatever's available
 16447  	if it.done {
 16448  		select {
 16449  		case log := <-it.logs:
 16450  			it.Event = new(BridgeTransferKLAYRequestValueTransfer)
 16451  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16452  				it.fail = err
 16453  				return false
 16454  			}
 16455  			it.Event.Raw = log
 16456  			return true
 16457  
 16458  		default:
 16459  			return false
 16460  		}
 16461  	}
 16462  	// Iterator still in progress, wait for either a data or an error event
 16463  	select {
 16464  	case log := <-it.logs:
 16465  		it.Event = new(BridgeTransferKLAYRequestValueTransfer)
 16466  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16467  			it.fail = err
 16468  			return false
 16469  		}
 16470  		it.Event.Raw = log
 16471  		return true
 16472  
 16473  	case err := <-it.sub.Err():
 16474  		it.done = true
 16475  		it.fail = err
 16476  		return it.Next()
 16477  	}
 16478  }
 16479  
 16480  // Error returns any retrieval or parsing error occurred during filtering.
 16481  func (it *BridgeTransferKLAYRequestValueTransferIterator) Error() error {
 16482  	return it.fail
 16483  }
 16484  
 16485  // Close terminates the iteration process, releasing any pending underlying
 16486  // resources.
 16487  func (it *BridgeTransferKLAYRequestValueTransferIterator) Close() error {
 16488  	it.sub.Unsubscribe()
 16489  	return nil
 16490  }
 16491  
 16492  // BridgeTransferKLAYRequestValueTransfer represents a RequestValueTransfer event raised by the BridgeTransferKLAY contract.
 16493  type BridgeTransferKLAYRequestValueTransfer struct {
 16494  	TokenType      uint8
 16495  	From           common.Address
 16496  	To             common.Address
 16497  	TokenAddress   common.Address
 16498  	ValueOrTokenId *big.Int
 16499  	RequestNonce   uint64
 16500  	Fee            *big.Int
 16501  	ExtraData      []byte
 16502  	Raw            types.Log // Blockchain specific contextual infos
 16503  }
 16504  
 16505  // FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
 16506  //
 16507  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
 16508  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferKLAYRequestValueTransferIterator, error) {
 16509  
 16510  	var fromRule []interface{}
 16511  	for _, fromItem := range from {
 16512  		fromRule = append(fromRule, fromItem)
 16513  	}
 16514  	var toRule []interface{}
 16515  	for _, toItem := range to {
 16516  		toRule = append(toRule, toItem)
 16517  	}
 16518  	var tokenAddressRule []interface{}
 16519  	for _, tokenAddressItem := range tokenAddress {
 16520  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 16521  	}
 16522  
 16523  	logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule)
 16524  	if err != nil {
 16525  		return nil, err
 16526  	}
 16527  	return &BridgeTransferKLAYRequestValueTransferIterator{contract: _BridgeTransferKLAY.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil
 16528  }
 16529  
 16530  // WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
 16531  //
 16532  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
 16533  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYRequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
 16534  
 16535  	var fromRule []interface{}
 16536  	for _, fromItem := range from {
 16537  		fromRule = append(fromRule, fromItem)
 16538  	}
 16539  	var toRule []interface{}
 16540  	for _, toItem := range to {
 16541  		toRule = append(toRule, toItem)
 16542  	}
 16543  	var tokenAddressRule []interface{}
 16544  	for _, tokenAddressItem := range tokenAddress {
 16545  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 16546  	}
 16547  
 16548  	logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule)
 16549  	if err != nil {
 16550  		return nil, err
 16551  	}
 16552  	return event.NewSubscription(func(quit <-chan struct{}) error {
 16553  		defer sub.Unsubscribe()
 16554  		for {
 16555  			select {
 16556  			case log := <-logs:
 16557  				// New log arrived, parse the event and forward to the user
 16558  				event := new(BridgeTransferKLAYRequestValueTransfer)
 16559  				if err := _BridgeTransferKLAY.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil {
 16560  					return err
 16561  				}
 16562  				event.Raw = log
 16563  
 16564  				select {
 16565  				case sink <- event:
 16566  				case err := <-sub.Err():
 16567  					return err
 16568  				case <-quit:
 16569  					return nil
 16570  				}
 16571  			case err := <-sub.Err():
 16572  				return err
 16573  			case <-quit:
 16574  				return nil
 16575  			}
 16576  		}
 16577  	}), nil
 16578  }
 16579  
 16580  // ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
 16581  //
 16582  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
 16583  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseRequestValueTransfer(log types.Log) (*BridgeTransferKLAYRequestValueTransfer, error) {
 16584  	event := new(BridgeTransferKLAYRequestValueTransfer)
 16585  	if err := _BridgeTransferKLAY.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil {
 16586  		return nil, err
 16587  	}
 16588  	return event, nil
 16589  }
 16590  
 16591  // BridgeTransferKLAYRequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the BridgeTransferKLAY contract.
 16592  type BridgeTransferKLAYRequestValueTransferEncodedIterator struct {
 16593  	Event *BridgeTransferKLAYRequestValueTransferEncoded // Event containing the contract specifics and raw log
 16594  
 16595  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 16596  	event    string              // Event name to use for unpacking event data
 16597  
 16598  	logs chan types.Log      // Log channel receiving the found contract events
 16599  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 16600  	done bool                // Whether the subscription completed delivering logs
 16601  	fail error               // Occurred error to stop iteration
 16602  }
 16603  
 16604  // Next advances the iterator to the subsequent event, returning whether there
 16605  // are any more events found. In case of a retrieval or parsing error, false is
 16606  // returned and Error() can be queried for the exact failure.
 16607  func (it *BridgeTransferKLAYRequestValueTransferEncodedIterator) Next() bool {
 16608  	// If the iterator failed, stop iterating
 16609  	if it.fail != nil {
 16610  		return false
 16611  	}
 16612  	// If the iterator completed, deliver directly whatever's available
 16613  	if it.done {
 16614  		select {
 16615  		case log := <-it.logs:
 16616  			it.Event = new(BridgeTransferKLAYRequestValueTransferEncoded)
 16617  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16618  				it.fail = err
 16619  				return false
 16620  			}
 16621  			it.Event.Raw = log
 16622  			return true
 16623  
 16624  		default:
 16625  			return false
 16626  		}
 16627  	}
 16628  	// Iterator still in progress, wait for either a data or an error event
 16629  	select {
 16630  	case log := <-it.logs:
 16631  		it.Event = new(BridgeTransferKLAYRequestValueTransferEncoded)
 16632  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16633  			it.fail = err
 16634  			return false
 16635  		}
 16636  		it.Event.Raw = log
 16637  		return true
 16638  
 16639  	case err := <-it.sub.Err():
 16640  		it.done = true
 16641  		it.fail = err
 16642  		return it.Next()
 16643  	}
 16644  }
 16645  
 16646  // Error returns any retrieval or parsing error occurred during filtering.
 16647  func (it *BridgeTransferKLAYRequestValueTransferEncodedIterator) Error() error {
 16648  	return it.fail
 16649  }
 16650  
 16651  // Close terminates the iteration process, releasing any pending underlying
 16652  // resources.
 16653  func (it *BridgeTransferKLAYRequestValueTransferEncodedIterator) Close() error {
 16654  	it.sub.Unsubscribe()
 16655  	return nil
 16656  }
 16657  
 16658  // BridgeTransferKLAYRequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the BridgeTransferKLAY contract.
 16659  type BridgeTransferKLAYRequestValueTransferEncoded struct {
 16660  	TokenType      uint8
 16661  	From           common.Address
 16662  	To             common.Address
 16663  	TokenAddress   common.Address
 16664  	ValueOrTokenId *big.Int
 16665  	RequestNonce   uint64
 16666  	Fee            *big.Int
 16667  	ExtraData      []byte
 16668  	EncodingVer    uint8
 16669  	EncodedData    []byte
 16670  	Raw            types.Log // Blockchain specific contextual infos
 16671  }
 16672  
 16673  // FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
 16674  //
 16675  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
 16676  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferKLAYRequestValueTransferEncodedIterator, error) {
 16677  
 16678  	var fromRule []interface{}
 16679  	for _, fromItem := range from {
 16680  		fromRule = append(fromRule, fromItem)
 16681  	}
 16682  	var toRule []interface{}
 16683  	for _, toItem := range to {
 16684  		toRule = append(toRule, toItem)
 16685  	}
 16686  	var tokenAddressRule []interface{}
 16687  	for _, tokenAddressItem := range tokenAddress {
 16688  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 16689  	}
 16690  
 16691  	logs, sub, err := _BridgeTransferKLAY.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule)
 16692  	if err != nil {
 16693  		return nil, err
 16694  	}
 16695  	return &BridgeTransferKLAYRequestValueTransferEncodedIterator{contract: _BridgeTransferKLAY.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil
 16696  }
 16697  
 16698  // WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
 16699  //
 16700  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
 16701  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYRequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
 16702  
 16703  	var fromRule []interface{}
 16704  	for _, fromItem := range from {
 16705  		fromRule = append(fromRule, fromItem)
 16706  	}
 16707  	var toRule []interface{}
 16708  	for _, toItem := range to {
 16709  		toRule = append(toRule, toItem)
 16710  	}
 16711  	var tokenAddressRule []interface{}
 16712  	for _, tokenAddressItem := range tokenAddress {
 16713  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 16714  	}
 16715  
 16716  	logs, sub, err := _BridgeTransferKLAY.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule)
 16717  	if err != nil {
 16718  		return nil, err
 16719  	}
 16720  	return event.NewSubscription(func(quit <-chan struct{}) error {
 16721  		defer sub.Unsubscribe()
 16722  		for {
 16723  			select {
 16724  			case log := <-logs:
 16725  				// New log arrived, parse the event and forward to the user
 16726  				event := new(BridgeTransferKLAYRequestValueTransferEncoded)
 16727  				if err := _BridgeTransferKLAY.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil {
 16728  					return err
 16729  				}
 16730  				event.Raw = log
 16731  
 16732  				select {
 16733  				case sink <- event:
 16734  				case err := <-sub.Err():
 16735  					return err
 16736  				case <-quit:
 16737  					return nil
 16738  				}
 16739  			case err := <-sub.Err():
 16740  				return err
 16741  			case <-quit:
 16742  				return nil
 16743  			}
 16744  		}
 16745  	}), nil
 16746  }
 16747  
 16748  // ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
 16749  //
 16750  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
 16751  func (_BridgeTransferKLAY *BridgeTransferKLAYFilterer) ParseRequestValueTransferEncoded(log types.Log) (*BridgeTransferKLAYRequestValueTransferEncoded, error) {
 16752  	event := new(BridgeTransferKLAYRequestValueTransferEncoded)
 16753  	if err := _BridgeTransferKLAY.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil {
 16754  		return nil, err
 16755  	}
 16756  	return event, nil
 16757  }
 16758  
 16759  // CountersABI is the input ABI used to generate the binding from.
 16760  const CountersABI = "[]"
 16761  
 16762  // CountersBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 16763  const CountersBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058207329cab25de591c35947480820e66bd7e2d232979872616f21ac6e5783a017700029`
 16764  
 16765  // CountersBin is the compiled bytecode used for deploying new contracts.
 16766  var CountersBin = "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058207329cab25de591c35947480820e66bd7e2d232979872616f21ac6e5783a017700029"
 16767  
 16768  // DeployCounters deploys a new Klaytn contract, binding an instance of Counters to it.
 16769  func DeployCounters(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Counters, error) {
 16770  	parsed, err := abi.JSON(strings.NewReader(CountersABI))
 16771  	if err != nil {
 16772  		return common.Address{}, nil, nil, err
 16773  	}
 16774  
 16775  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(CountersBin), backend)
 16776  	if err != nil {
 16777  		return common.Address{}, nil, nil, err
 16778  	}
 16779  	return address, tx, &Counters{CountersCaller: CountersCaller{contract: contract}, CountersTransactor: CountersTransactor{contract: contract}, CountersFilterer: CountersFilterer{contract: contract}}, nil
 16780  }
 16781  
 16782  // Counters is an auto generated Go binding around a Klaytn contract.
 16783  type Counters struct {
 16784  	CountersCaller     // Read-only binding to the contract
 16785  	CountersTransactor // Write-only binding to the contract
 16786  	CountersFilterer   // Log filterer for contract events
 16787  }
 16788  
 16789  // CountersCaller is an auto generated read-only Go binding around a Klaytn contract.
 16790  type CountersCaller struct {
 16791  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 16792  }
 16793  
 16794  // CountersTransactor is an auto generated write-only Go binding around a Klaytn contract.
 16795  type CountersTransactor struct {
 16796  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 16797  }
 16798  
 16799  // CountersFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 16800  type CountersFilterer struct {
 16801  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 16802  }
 16803  
 16804  // CountersSession is an auto generated Go binding around a Klaytn contract,
 16805  // with pre-set call and transact options.
 16806  type CountersSession struct {
 16807  	Contract     *Counters         // Generic contract binding to set the session for
 16808  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 16809  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 16810  }
 16811  
 16812  // CountersCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 16813  // with pre-set call options.
 16814  type CountersCallerSession struct {
 16815  	Contract *CountersCaller // Generic contract caller binding to set the session for
 16816  	CallOpts bind.CallOpts   // Call options to use throughout this session
 16817  }
 16818  
 16819  // CountersTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 16820  // with pre-set transact options.
 16821  type CountersTransactorSession struct {
 16822  	Contract     *CountersTransactor // Generic contract transactor binding to set the session for
 16823  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
 16824  }
 16825  
 16826  // CountersRaw is an auto generated low-level Go binding around a Klaytn contract.
 16827  type CountersRaw struct {
 16828  	Contract *Counters // Generic contract binding to access the raw methods on
 16829  }
 16830  
 16831  // CountersCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 16832  type CountersCallerRaw struct {
 16833  	Contract *CountersCaller // Generic read-only contract binding to access the raw methods on
 16834  }
 16835  
 16836  // CountersTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 16837  type CountersTransactorRaw struct {
 16838  	Contract *CountersTransactor // Generic write-only contract binding to access the raw methods on
 16839  }
 16840  
 16841  // NewCounters creates a new instance of Counters, bound to a specific deployed contract.
 16842  func NewCounters(address common.Address, backend bind.ContractBackend) (*Counters, error) {
 16843  	contract, err := bindCounters(address, backend, backend, backend)
 16844  	if err != nil {
 16845  		return nil, err
 16846  	}
 16847  	return &Counters{CountersCaller: CountersCaller{contract: contract}, CountersTransactor: CountersTransactor{contract: contract}, CountersFilterer: CountersFilterer{contract: contract}}, nil
 16848  }
 16849  
 16850  // NewCountersCaller creates a new read-only instance of Counters, bound to a specific deployed contract.
 16851  func NewCountersCaller(address common.Address, caller bind.ContractCaller) (*CountersCaller, error) {
 16852  	contract, err := bindCounters(address, caller, nil, nil)
 16853  	if err != nil {
 16854  		return nil, err
 16855  	}
 16856  	return &CountersCaller{contract: contract}, nil
 16857  }
 16858  
 16859  // NewCountersTransactor creates a new write-only instance of Counters, bound to a specific deployed contract.
 16860  func NewCountersTransactor(address common.Address, transactor bind.ContractTransactor) (*CountersTransactor, error) {
 16861  	contract, err := bindCounters(address, nil, transactor, nil)
 16862  	if err != nil {
 16863  		return nil, err
 16864  	}
 16865  	return &CountersTransactor{contract: contract}, nil
 16866  }
 16867  
 16868  // NewCountersFilterer creates a new log filterer instance of Counters, bound to a specific deployed contract.
 16869  func NewCountersFilterer(address common.Address, filterer bind.ContractFilterer) (*CountersFilterer, error) {
 16870  	contract, err := bindCounters(address, nil, nil, filterer)
 16871  	if err != nil {
 16872  		return nil, err
 16873  	}
 16874  	return &CountersFilterer{contract: contract}, nil
 16875  }
 16876  
 16877  // bindCounters binds a generic wrapper to an already deployed contract.
 16878  func bindCounters(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 16879  	parsed, err := abi.JSON(strings.NewReader(CountersABI))
 16880  	if err != nil {
 16881  		return nil, err
 16882  	}
 16883  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 16884  }
 16885  
 16886  // Call invokes the (constant) contract method with params as input values and
 16887  // sets the output to result. The result type might be a single field for simple
 16888  // returns, a slice of interfaces for anonymous returns and a struct for named
 16889  // returns.
 16890  func (_Counters *CountersRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 16891  	return _Counters.Contract.CountersCaller.contract.Call(opts, result, method, params...)
 16892  }
 16893  
 16894  // Transfer initiates a plain transaction to move funds to the contract, calling
 16895  // its default method if one is available.
 16896  func (_Counters *CountersRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 16897  	return _Counters.Contract.CountersTransactor.contract.Transfer(opts)
 16898  }
 16899  
 16900  // Transact invokes the (paid) contract method with params as input values.
 16901  func (_Counters *CountersRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 16902  	return _Counters.Contract.CountersTransactor.contract.Transact(opts, method, params...)
 16903  }
 16904  
 16905  // Call invokes the (constant) contract method with params as input values and
 16906  // sets the output to result. The result type might be a single field for simple
 16907  // returns, a slice of interfaces for anonymous returns and a struct for named
 16908  // returns.
 16909  func (_Counters *CountersCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 16910  	return _Counters.Contract.contract.Call(opts, result, method, params...)
 16911  }
 16912  
 16913  // Transfer initiates a plain transaction to move funds to the contract, calling
 16914  // its default method if one is available.
 16915  func (_Counters *CountersTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 16916  	return _Counters.Contract.contract.Transfer(opts)
 16917  }
 16918  
 16919  // Transact invokes the (paid) contract method with params as input values.
 16920  func (_Counters *CountersTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 16921  	return _Counters.Contract.contract.Transact(opts, method, params...)
 16922  }
 16923  
 16924  // ERC165ABI is the input ABI used to generate the binding from.
 16925  const ERC165ABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]"
 16926  
 16927  // ERC165BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 16928  const ERC165BinRuntime = ``
 16929  
 16930  // ERC165FuncSigs maps the 4-byte function signature to its string representation.
 16931  var ERC165FuncSigs = map[string]string{
 16932  	"01ffc9a7": "supportsInterface(bytes4)",
 16933  }
 16934  
 16935  // ERC165 is an auto generated Go binding around a Klaytn contract.
 16936  type ERC165 struct {
 16937  	ERC165Caller     // Read-only binding to the contract
 16938  	ERC165Transactor // Write-only binding to the contract
 16939  	ERC165Filterer   // Log filterer for contract events
 16940  }
 16941  
 16942  // ERC165Caller is an auto generated read-only Go binding around a Klaytn contract.
 16943  type ERC165Caller struct {
 16944  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 16945  }
 16946  
 16947  // ERC165Transactor is an auto generated write-only Go binding around a Klaytn contract.
 16948  type ERC165Transactor struct {
 16949  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 16950  }
 16951  
 16952  // ERC165Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
 16953  type ERC165Filterer struct {
 16954  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 16955  }
 16956  
 16957  // ERC165Session is an auto generated Go binding around a Klaytn contract,
 16958  // with pre-set call and transact options.
 16959  type ERC165Session struct {
 16960  	Contract     *ERC165           // Generic contract binding to set the session for
 16961  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 16962  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 16963  }
 16964  
 16965  // ERC165CallerSession is an auto generated read-only Go binding around a Klaytn contract,
 16966  // with pre-set call options.
 16967  type ERC165CallerSession struct {
 16968  	Contract *ERC165Caller // Generic contract caller binding to set the session for
 16969  	CallOpts bind.CallOpts // Call options to use throughout this session
 16970  }
 16971  
 16972  // ERC165TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 16973  // with pre-set transact options.
 16974  type ERC165TransactorSession struct {
 16975  	Contract     *ERC165Transactor // Generic contract transactor binding to set the session for
 16976  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 16977  }
 16978  
 16979  // ERC165Raw is an auto generated low-level Go binding around a Klaytn contract.
 16980  type ERC165Raw struct {
 16981  	Contract *ERC165 // Generic contract binding to access the raw methods on
 16982  }
 16983  
 16984  // ERC165CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 16985  type ERC165CallerRaw struct {
 16986  	Contract *ERC165Caller // Generic read-only contract binding to access the raw methods on
 16987  }
 16988  
 16989  // ERC165TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 16990  type ERC165TransactorRaw struct {
 16991  	Contract *ERC165Transactor // Generic write-only contract binding to access the raw methods on
 16992  }
 16993  
 16994  // NewERC165 creates a new instance of ERC165, bound to a specific deployed contract.
 16995  func NewERC165(address common.Address, backend bind.ContractBackend) (*ERC165, error) {
 16996  	contract, err := bindERC165(address, backend, backend, backend)
 16997  	if err != nil {
 16998  		return nil, err
 16999  	}
 17000  	return &ERC165{ERC165Caller: ERC165Caller{contract: contract}, ERC165Transactor: ERC165Transactor{contract: contract}, ERC165Filterer: ERC165Filterer{contract: contract}}, nil
 17001  }
 17002  
 17003  // NewERC165Caller creates a new read-only instance of ERC165, bound to a specific deployed contract.
 17004  func NewERC165Caller(address common.Address, caller bind.ContractCaller) (*ERC165Caller, error) {
 17005  	contract, err := bindERC165(address, caller, nil, nil)
 17006  	if err != nil {
 17007  		return nil, err
 17008  	}
 17009  	return &ERC165Caller{contract: contract}, nil
 17010  }
 17011  
 17012  // NewERC165Transactor creates a new write-only instance of ERC165, bound to a specific deployed contract.
 17013  func NewERC165Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC165Transactor, error) {
 17014  	contract, err := bindERC165(address, nil, transactor, nil)
 17015  	if err != nil {
 17016  		return nil, err
 17017  	}
 17018  	return &ERC165Transactor{contract: contract}, nil
 17019  }
 17020  
 17021  // NewERC165Filterer creates a new log filterer instance of ERC165, bound to a specific deployed contract.
 17022  func NewERC165Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC165Filterer, error) {
 17023  	contract, err := bindERC165(address, nil, nil, filterer)
 17024  	if err != nil {
 17025  		return nil, err
 17026  	}
 17027  	return &ERC165Filterer{contract: contract}, nil
 17028  }
 17029  
 17030  // bindERC165 binds a generic wrapper to an already deployed contract.
 17031  func bindERC165(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 17032  	parsed, err := abi.JSON(strings.NewReader(ERC165ABI))
 17033  	if err != nil {
 17034  		return nil, err
 17035  	}
 17036  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 17037  }
 17038  
 17039  // Call invokes the (constant) contract method with params as input values and
 17040  // sets the output to result. The result type might be a single field for simple
 17041  // returns, a slice of interfaces for anonymous returns and a struct for named
 17042  // returns.
 17043  func (_ERC165 *ERC165Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 17044  	return _ERC165.Contract.ERC165Caller.contract.Call(opts, result, method, params...)
 17045  }
 17046  
 17047  // Transfer initiates a plain transaction to move funds to the contract, calling
 17048  // its default method if one is available.
 17049  func (_ERC165 *ERC165Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 17050  	return _ERC165.Contract.ERC165Transactor.contract.Transfer(opts)
 17051  }
 17052  
 17053  // Transact invokes the (paid) contract method with params as input values.
 17054  func (_ERC165 *ERC165Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 17055  	return _ERC165.Contract.ERC165Transactor.contract.Transact(opts, method, params...)
 17056  }
 17057  
 17058  // Call invokes the (constant) contract method with params as input values and
 17059  // sets the output to result. The result type might be a single field for simple
 17060  // returns, a slice of interfaces for anonymous returns and a struct for named
 17061  // returns.
 17062  func (_ERC165 *ERC165CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 17063  	return _ERC165.Contract.contract.Call(opts, result, method, params...)
 17064  }
 17065  
 17066  // Transfer initiates a plain transaction to move funds to the contract, calling
 17067  // its default method if one is available.
 17068  func (_ERC165 *ERC165TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 17069  	return _ERC165.Contract.contract.Transfer(opts)
 17070  }
 17071  
 17072  // Transact invokes the (paid) contract method with params as input values.
 17073  func (_ERC165 *ERC165TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 17074  	return _ERC165.Contract.contract.Transact(opts, method, params...)
 17075  }
 17076  
 17077  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 17078  //
 17079  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 17080  func (_ERC165 *ERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
 17081  	var (
 17082  		ret0 = new(bool)
 17083  	)
 17084  	out := ret0
 17085  	err := _ERC165.contract.Call(opts, out, "supportsInterface", interfaceId)
 17086  	return *ret0, err
 17087  }
 17088  
 17089  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 17090  //
 17091  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 17092  func (_ERC165 *ERC165Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
 17093  	return _ERC165.Contract.SupportsInterface(&_ERC165.CallOpts, interfaceId)
 17094  }
 17095  
 17096  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 17097  //
 17098  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 17099  func (_ERC165 *ERC165CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 17100  	return _ERC165.Contract.SupportsInterface(&_ERC165.CallOpts, interfaceId)
 17101  }
 17102  
 17103  // ERC20ABI is the input ABI used to generate the binding from.
 17104  const ERC20ABI = "[{\"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\"}]"
 17105  
 17106  // ERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 17107  const ERC20BinRuntime = `608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610149578063a457c2d71461016f578063a9059cbb1461019b578063dd62ed3e146101c757610088565b8063095ea7b31461008d57806318160ddd146100cd57806323b872dd146100e7578063395093511461011d575b600080fd5b6100b9600480360360408110156100a357600080fd5b506001600160a01b0381351690602001356101f5565b604080519115158252519081900360200190f35b6100d561020b565b60408051918252519081900360200190f35b6100b9600480360360608110156100fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610211565b6100b96004803603604081101561013357600080fd5b506001600160a01b038135169060200135610268565b6100d56004803603602081101561015f57600080fd5b50356001600160a01b03166102a4565b6100b96004803603604081101561018557600080fd5b506001600160a01b0381351690602001356102bf565b6100b9600480360360408110156101b157600080fd5b506001600160a01b0381351690602001356102fb565b6100d5600480360360408110156101dd57600080fd5b506001600160a01b0381358116916020013516610308565b6000610202338484610333565b50600192915050565b60025490565b600061021e848484610425565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461025e918691610259908663ffffffff61056d16565b610333565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff6105cd16565b6001600160a01b031660009081526020819052604090205490565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff61056d16565b6000610202338484610425565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661037b57604051600160e51b62461bcd02815260040180806020018281038252602481526020018061069c6024913960400191505060405180910390fd5b6001600160a01b0382166103c357604051600160e51b62461bcd0281526004018080602001828103825260228152602001806106556022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661046d57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806106776025913960400191505060405180910390fd5b6001600160a01b0382166104b557604051600160e51b62461bcd0281526004018080602001828103825260238152602001806106326023913960400191505060405180910390fd5b6001600160a01b0383166000908152602081905260409020546104de908263ffffffff61056d16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610513908263ffffffff6105cd16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156105c75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008282018381101561062a5760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820802770bd4b0917c80d6b47964550f6c3e437f4a0b7286b55aa9963a98c5aaf400029`
 17108  
 17109  // ERC20FuncSigs maps the 4-byte function signature to its string representation.
 17110  var ERC20FuncSigs = map[string]string{
 17111  	"dd62ed3e": "allowance(address,address)",
 17112  	"095ea7b3": "approve(address,uint256)",
 17113  	"70a08231": "balanceOf(address)",
 17114  	"a457c2d7": "decreaseAllowance(address,uint256)",
 17115  	"39509351": "increaseAllowance(address,uint256)",
 17116  	"18160ddd": "totalSupply()",
 17117  	"a9059cbb": "transfer(address,uint256)",
 17118  	"23b872dd": "transferFrom(address,address,uint256)",
 17119  }
 17120  
 17121  // ERC20Bin is the compiled bytecode used for deploying new contracts.
 17122  var ERC20Bin = "0x608060405234801561001057600080fd5b506106eb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610149578063a457c2d71461016f578063a9059cbb1461019b578063dd62ed3e146101c757610088565b8063095ea7b31461008d57806318160ddd146100cd57806323b872dd146100e7578063395093511461011d575b600080fd5b6100b9600480360360408110156100a357600080fd5b506001600160a01b0381351690602001356101f5565b604080519115158252519081900360200190f35b6100d561020b565b60408051918252519081900360200190f35b6100b9600480360360608110156100fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610211565b6100b96004803603604081101561013357600080fd5b506001600160a01b038135169060200135610268565b6100d56004803603602081101561015f57600080fd5b50356001600160a01b03166102a4565b6100b96004803603604081101561018557600080fd5b506001600160a01b0381351690602001356102bf565b6100b9600480360360408110156101b157600080fd5b506001600160a01b0381351690602001356102fb565b6100d5600480360360408110156101dd57600080fd5b506001600160a01b0381358116916020013516610308565b6000610202338484610333565b50600192915050565b60025490565b600061021e848484610425565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461025e918691610259908663ffffffff61056d16565b610333565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff6105cd16565b6001600160a01b031660009081526020819052604090205490565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff61056d16565b6000610202338484610425565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661037b57604051600160e51b62461bcd02815260040180806020018281038252602481526020018061069c6024913960400191505060405180910390fd5b6001600160a01b0382166103c357604051600160e51b62461bcd0281526004018080602001828103825260228152602001806106556022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661046d57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806106776025913960400191505060405180910390fd5b6001600160a01b0382166104b557604051600160e51b62461bcd0281526004018080602001828103825260238152602001806106326023913960400191505060405180910390fd5b6001600160a01b0383166000908152602081905260409020546104de908263ffffffff61056d16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610513908263ffffffff6105cd16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156105c75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008282018381101561062a5760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820802770bd4b0917c80d6b47964550f6c3e437f4a0b7286b55aa9963a98c5aaf400029"
 17123  
 17124  // DeployERC20 deploys a new Klaytn contract, binding an instance of ERC20 to it.
 17125  func DeployERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20, error) {
 17126  	parsed, err := abi.JSON(strings.NewReader(ERC20ABI))
 17127  	if err != nil {
 17128  		return common.Address{}, nil, nil, err
 17129  	}
 17130  
 17131  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC20Bin), backend)
 17132  	if err != nil {
 17133  		return common.Address{}, nil, nil, err
 17134  	}
 17135  	return address, tx, &ERC20{ERC20Caller: ERC20Caller{contract: contract}, ERC20Transactor: ERC20Transactor{contract: contract}, ERC20Filterer: ERC20Filterer{contract: contract}}, nil
 17136  }
 17137  
 17138  // ERC20 is an auto generated Go binding around a Klaytn contract.
 17139  type ERC20 struct {
 17140  	ERC20Caller     // Read-only binding to the contract
 17141  	ERC20Transactor // Write-only binding to the contract
 17142  	ERC20Filterer   // Log filterer for contract events
 17143  }
 17144  
 17145  // ERC20Caller is an auto generated read-only Go binding around a Klaytn contract.
 17146  type ERC20Caller struct {
 17147  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 17148  }
 17149  
 17150  // ERC20Transactor is an auto generated write-only Go binding around a Klaytn contract.
 17151  type ERC20Transactor struct {
 17152  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 17153  }
 17154  
 17155  // ERC20Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
 17156  type ERC20Filterer struct {
 17157  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 17158  }
 17159  
 17160  // ERC20Session is an auto generated Go binding around a Klaytn contract,
 17161  // with pre-set call and transact options.
 17162  type ERC20Session struct {
 17163  	Contract     *ERC20            // Generic contract binding to set the session for
 17164  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 17165  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 17166  }
 17167  
 17168  // ERC20CallerSession is an auto generated read-only Go binding around a Klaytn contract,
 17169  // with pre-set call options.
 17170  type ERC20CallerSession struct {
 17171  	Contract *ERC20Caller  // Generic contract caller binding to set the session for
 17172  	CallOpts bind.CallOpts // Call options to use throughout this session
 17173  }
 17174  
 17175  // ERC20TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 17176  // with pre-set transact options.
 17177  type ERC20TransactorSession struct {
 17178  	Contract     *ERC20Transactor  // Generic contract transactor binding to set the session for
 17179  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 17180  }
 17181  
 17182  // ERC20Raw is an auto generated low-level Go binding around a Klaytn contract.
 17183  type ERC20Raw struct {
 17184  	Contract *ERC20 // Generic contract binding to access the raw methods on
 17185  }
 17186  
 17187  // ERC20CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 17188  type ERC20CallerRaw struct {
 17189  	Contract *ERC20Caller // Generic read-only contract binding to access the raw methods on
 17190  }
 17191  
 17192  // ERC20TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 17193  type ERC20TransactorRaw struct {
 17194  	Contract *ERC20Transactor // Generic write-only contract binding to access the raw methods on
 17195  }
 17196  
 17197  // NewERC20 creates a new instance of ERC20, bound to a specific deployed contract.
 17198  func NewERC20(address common.Address, backend bind.ContractBackend) (*ERC20, error) {
 17199  	contract, err := bindERC20(address, backend, backend, backend)
 17200  	if err != nil {
 17201  		return nil, err
 17202  	}
 17203  	return &ERC20{ERC20Caller: ERC20Caller{contract: contract}, ERC20Transactor: ERC20Transactor{contract: contract}, ERC20Filterer: ERC20Filterer{contract: contract}}, nil
 17204  }
 17205  
 17206  // NewERC20Caller creates a new read-only instance of ERC20, bound to a specific deployed contract.
 17207  func NewERC20Caller(address common.Address, caller bind.ContractCaller) (*ERC20Caller, error) {
 17208  	contract, err := bindERC20(address, caller, nil, nil)
 17209  	if err != nil {
 17210  		return nil, err
 17211  	}
 17212  	return &ERC20Caller{contract: contract}, nil
 17213  }
 17214  
 17215  // NewERC20Transactor creates a new write-only instance of ERC20, bound to a specific deployed contract.
 17216  func NewERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC20Transactor, error) {
 17217  	contract, err := bindERC20(address, nil, transactor, nil)
 17218  	if err != nil {
 17219  		return nil, err
 17220  	}
 17221  	return &ERC20Transactor{contract: contract}, nil
 17222  }
 17223  
 17224  // NewERC20Filterer creates a new log filterer instance of ERC20, bound to a specific deployed contract.
 17225  func NewERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC20Filterer, error) {
 17226  	contract, err := bindERC20(address, nil, nil, filterer)
 17227  	if err != nil {
 17228  		return nil, err
 17229  	}
 17230  	return &ERC20Filterer{contract: contract}, nil
 17231  }
 17232  
 17233  // bindERC20 binds a generic wrapper to an already deployed contract.
 17234  func bindERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 17235  	parsed, err := abi.JSON(strings.NewReader(ERC20ABI))
 17236  	if err != nil {
 17237  		return nil, err
 17238  	}
 17239  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 17240  }
 17241  
 17242  // Call invokes the (constant) contract method with params as input values and
 17243  // sets the output to result. The result type might be a single field for simple
 17244  // returns, a slice of interfaces for anonymous returns and a struct for named
 17245  // returns.
 17246  func (_ERC20 *ERC20Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 17247  	return _ERC20.Contract.ERC20Caller.contract.Call(opts, result, method, params...)
 17248  }
 17249  
 17250  // Transfer initiates a plain transaction to move funds to the contract, calling
 17251  // its default method if one is available.
 17252  func (_ERC20 *ERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 17253  	return _ERC20.Contract.ERC20Transactor.contract.Transfer(opts)
 17254  }
 17255  
 17256  // Transact invokes the (paid) contract method with params as input values.
 17257  func (_ERC20 *ERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 17258  	return _ERC20.Contract.ERC20Transactor.contract.Transact(opts, method, params...)
 17259  }
 17260  
 17261  // Call invokes the (constant) contract method with params as input values and
 17262  // sets the output to result. The result type might be a single field for simple
 17263  // returns, a slice of interfaces for anonymous returns and a struct for named
 17264  // returns.
 17265  func (_ERC20 *ERC20CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 17266  	return _ERC20.Contract.contract.Call(opts, result, method, params...)
 17267  }
 17268  
 17269  // Transfer initiates a plain transaction to move funds to the contract, calling
 17270  // its default method if one is available.
 17271  func (_ERC20 *ERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 17272  	return _ERC20.Contract.contract.Transfer(opts)
 17273  }
 17274  
 17275  // Transact invokes the (paid) contract method with params as input values.
 17276  func (_ERC20 *ERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 17277  	return _ERC20.Contract.contract.Transact(opts, method, params...)
 17278  }
 17279  
 17280  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 17281  //
 17282  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 17283  func (_ERC20 *ERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
 17284  	var (
 17285  		ret0 = new(*big.Int)
 17286  	)
 17287  	out := ret0
 17288  	err := _ERC20.contract.Call(opts, out, "allowance", owner, spender)
 17289  	return *ret0, err
 17290  }
 17291  
 17292  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 17293  //
 17294  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 17295  func (_ERC20 *ERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
 17296  	return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender)
 17297  }
 17298  
 17299  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 17300  //
 17301  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 17302  func (_ERC20 *ERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
 17303  	return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender)
 17304  }
 17305  
 17306  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 17307  //
 17308  // Solidity: function balanceOf(address account) view returns(uint256)
 17309  func (_ERC20 *ERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
 17310  	var (
 17311  		ret0 = new(*big.Int)
 17312  	)
 17313  	out := ret0
 17314  	err := _ERC20.contract.Call(opts, out, "balanceOf", account)
 17315  	return *ret0, err
 17316  }
 17317  
 17318  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 17319  //
 17320  // Solidity: function balanceOf(address account) view returns(uint256)
 17321  func (_ERC20 *ERC20Session) BalanceOf(account common.Address) (*big.Int, error) {
 17322  	return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account)
 17323  }
 17324  
 17325  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 17326  //
 17327  // Solidity: function balanceOf(address account) view returns(uint256)
 17328  func (_ERC20 *ERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) {
 17329  	return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account)
 17330  }
 17331  
 17332  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 17333  //
 17334  // Solidity: function totalSupply() view returns(uint256)
 17335  func (_ERC20 *ERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
 17336  	var (
 17337  		ret0 = new(*big.Int)
 17338  	)
 17339  	out := ret0
 17340  	err := _ERC20.contract.Call(opts, out, "totalSupply")
 17341  	return *ret0, err
 17342  }
 17343  
 17344  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 17345  //
 17346  // Solidity: function totalSupply() view returns(uint256)
 17347  func (_ERC20 *ERC20Session) TotalSupply() (*big.Int, error) {
 17348  	return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts)
 17349  }
 17350  
 17351  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 17352  //
 17353  // Solidity: function totalSupply() view returns(uint256)
 17354  func (_ERC20 *ERC20CallerSession) TotalSupply() (*big.Int, error) {
 17355  	return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts)
 17356  }
 17357  
 17358  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 17359  //
 17360  // Solidity: function approve(address spender, uint256 value) returns(bool)
 17361  func (_ERC20 *ERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) {
 17362  	return _ERC20.contract.Transact(opts, "approve", spender, value)
 17363  }
 17364  
 17365  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 17366  //
 17367  // Solidity: function approve(address spender, uint256 value) returns(bool)
 17368  func (_ERC20 *ERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
 17369  	return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, value)
 17370  }
 17371  
 17372  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 17373  //
 17374  // Solidity: function approve(address spender, uint256 value) returns(bool)
 17375  func (_ERC20 *ERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
 17376  	return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, value)
 17377  }
 17378  
 17379  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 17380  //
 17381  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 17382  func (_ERC20 *ERC20Transactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 17383  	return _ERC20.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
 17384  }
 17385  
 17386  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 17387  //
 17388  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 17389  func (_ERC20 *ERC20Session) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 17390  	return _ERC20.Contract.DecreaseAllowance(&_ERC20.TransactOpts, spender, subtractedValue)
 17391  }
 17392  
 17393  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 17394  //
 17395  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 17396  func (_ERC20 *ERC20TransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 17397  	return _ERC20.Contract.DecreaseAllowance(&_ERC20.TransactOpts, spender, subtractedValue)
 17398  }
 17399  
 17400  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 17401  //
 17402  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 17403  func (_ERC20 *ERC20Transactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 17404  	return _ERC20.contract.Transact(opts, "increaseAllowance", spender, addedValue)
 17405  }
 17406  
 17407  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 17408  //
 17409  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 17410  func (_ERC20 *ERC20Session) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 17411  	return _ERC20.Contract.IncreaseAllowance(&_ERC20.TransactOpts, spender, addedValue)
 17412  }
 17413  
 17414  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 17415  //
 17416  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 17417  func (_ERC20 *ERC20TransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 17418  	return _ERC20.Contract.IncreaseAllowance(&_ERC20.TransactOpts, spender, addedValue)
 17419  }
 17420  
 17421  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 17422  //
 17423  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 17424  func (_ERC20 *ERC20Transactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 17425  	return _ERC20.contract.Transact(opts, "transfer", recipient, amount)
 17426  }
 17427  
 17428  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 17429  //
 17430  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 17431  func (_ERC20 *ERC20Session) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 17432  	return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, recipient, amount)
 17433  }
 17434  
 17435  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 17436  //
 17437  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 17438  func (_ERC20 *ERC20TransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 17439  	return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, recipient, amount)
 17440  }
 17441  
 17442  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 17443  //
 17444  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 17445  func (_ERC20 *ERC20Transactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 17446  	return _ERC20.contract.Transact(opts, "transferFrom", sender, recipient, amount)
 17447  }
 17448  
 17449  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 17450  //
 17451  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 17452  func (_ERC20 *ERC20Session) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 17453  	return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, sender, recipient, amount)
 17454  }
 17455  
 17456  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 17457  //
 17458  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 17459  func (_ERC20 *ERC20TransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 17460  	return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, sender, recipient, amount)
 17461  }
 17462  
 17463  // 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.
 17464  type ERC20ApprovalIterator struct {
 17465  	Event *ERC20Approval // Event containing the contract specifics and raw log
 17466  
 17467  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 17468  	event    string              // Event name to use for unpacking event data
 17469  
 17470  	logs chan types.Log      // Log channel receiving the found contract events
 17471  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 17472  	done bool                // Whether the subscription completed delivering logs
 17473  	fail error               // Occurred error to stop iteration
 17474  }
 17475  
 17476  // Next advances the iterator to the subsequent event, returning whether there
 17477  // are any more events found. In case of a retrieval or parsing error, false is
 17478  // returned and Error() can be queried for the exact failure.
 17479  func (it *ERC20ApprovalIterator) Next() bool {
 17480  	// If the iterator failed, stop iterating
 17481  	if it.fail != nil {
 17482  		return false
 17483  	}
 17484  	// If the iterator completed, deliver directly whatever's available
 17485  	if it.done {
 17486  		select {
 17487  		case log := <-it.logs:
 17488  			it.Event = new(ERC20Approval)
 17489  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 17490  				it.fail = err
 17491  				return false
 17492  			}
 17493  			it.Event.Raw = log
 17494  			return true
 17495  
 17496  		default:
 17497  			return false
 17498  		}
 17499  	}
 17500  	// Iterator still in progress, wait for either a data or an error event
 17501  	select {
 17502  	case log := <-it.logs:
 17503  		it.Event = new(ERC20Approval)
 17504  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 17505  			it.fail = err
 17506  			return false
 17507  		}
 17508  		it.Event.Raw = log
 17509  		return true
 17510  
 17511  	case err := <-it.sub.Err():
 17512  		it.done = true
 17513  		it.fail = err
 17514  		return it.Next()
 17515  	}
 17516  }
 17517  
 17518  // Error returns any retrieval or parsing error occurred during filtering.
 17519  func (it *ERC20ApprovalIterator) Error() error {
 17520  	return it.fail
 17521  }
 17522  
 17523  // Close terminates the iteration process, releasing any pending underlying
 17524  // resources.
 17525  func (it *ERC20ApprovalIterator) Close() error {
 17526  	it.sub.Unsubscribe()
 17527  	return nil
 17528  }
 17529  
 17530  // ERC20Approval represents a Approval event raised by the ERC20 contract.
 17531  type ERC20Approval struct {
 17532  	Owner   common.Address
 17533  	Spender common.Address
 17534  	Value   *big.Int
 17535  	Raw     types.Log // Blockchain specific contextual infos
 17536  }
 17537  
 17538  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 17539  //
 17540  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 17541  func (_ERC20 *ERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20ApprovalIterator, error) {
 17542  
 17543  	var ownerRule []interface{}
 17544  	for _, ownerItem := range owner {
 17545  		ownerRule = append(ownerRule, ownerItem)
 17546  	}
 17547  	var spenderRule []interface{}
 17548  	for _, spenderItem := range spender {
 17549  		spenderRule = append(spenderRule, spenderItem)
 17550  	}
 17551  
 17552  	logs, sub, err := _ERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
 17553  	if err != nil {
 17554  		return nil, err
 17555  	}
 17556  	return &ERC20ApprovalIterator{contract: _ERC20.contract, event: "Approval", logs: logs, sub: sub}, nil
 17557  }
 17558  
 17559  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 17560  //
 17561  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 17562  func (_ERC20 *ERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
 17563  
 17564  	var ownerRule []interface{}
 17565  	for _, ownerItem := range owner {
 17566  		ownerRule = append(ownerRule, ownerItem)
 17567  	}
 17568  	var spenderRule []interface{}
 17569  	for _, spenderItem := range spender {
 17570  		spenderRule = append(spenderRule, spenderItem)
 17571  	}
 17572  
 17573  	logs, sub, err := _ERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
 17574  	if err != nil {
 17575  		return nil, err
 17576  	}
 17577  	return event.NewSubscription(func(quit <-chan struct{}) error {
 17578  		defer sub.Unsubscribe()
 17579  		for {
 17580  			select {
 17581  			case log := <-logs:
 17582  				// New log arrived, parse the event and forward to the user
 17583  				event := new(ERC20Approval)
 17584  				if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil {
 17585  					return err
 17586  				}
 17587  				event.Raw = log
 17588  
 17589  				select {
 17590  				case sink <- event:
 17591  				case err := <-sub.Err():
 17592  					return err
 17593  				case <-quit:
 17594  					return nil
 17595  				}
 17596  			case err := <-sub.Err():
 17597  				return err
 17598  			case <-quit:
 17599  				return nil
 17600  			}
 17601  		}
 17602  	}), nil
 17603  }
 17604  
 17605  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 17606  //
 17607  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 17608  func (_ERC20 *ERC20Filterer) ParseApproval(log types.Log) (*ERC20Approval, error) {
 17609  	event := new(ERC20Approval)
 17610  	if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil {
 17611  		return nil, err
 17612  	}
 17613  	return event, nil
 17614  }
 17615  
 17616  // 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.
 17617  type ERC20TransferIterator struct {
 17618  	Event *ERC20Transfer // Event containing the contract specifics and raw log
 17619  
 17620  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 17621  	event    string              // Event name to use for unpacking event data
 17622  
 17623  	logs chan types.Log      // Log channel receiving the found contract events
 17624  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 17625  	done bool                // Whether the subscription completed delivering logs
 17626  	fail error               // Occurred error to stop iteration
 17627  }
 17628  
 17629  // Next advances the iterator to the subsequent event, returning whether there
 17630  // are any more events found. In case of a retrieval or parsing error, false is
 17631  // returned and Error() can be queried for the exact failure.
 17632  func (it *ERC20TransferIterator) Next() bool {
 17633  	// If the iterator failed, stop iterating
 17634  	if it.fail != nil {
 17635  		return false
 17636  	}
 17637  	// If the iterator completed, deliver directly whatever's available
 17638  	if it.done {
 17639  		select {
 17640  		case log := <-it.logs:
 17641  			it.Event = new(ERC20Transfer)
 17642  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 17643  				it.fail = err
 17644  				return false
 17645  			}
 17646  			it.Event.Raw = log
 17647  			return true
 17648  
 17649  		default:
 17650  			return false
 17651  		}
 17652  	}
 17653  	// Iterator still in progress, wait for either a data or an error event
 17654  	select {
 17655  	case log := <-it.logs:
 17656  		it.Event = new(ERC20Transfer)
 17657  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 17658  			it.fail = err
 17659  			return false
 17660  		}
 17661  		it.Event.Raw = log
 17662  		return true
 17663  
 17664  	case err := <-it.sub.Err():
 17665  		it.done = true
 17666  		it.fail = err
 17667  		return it.Next()
 17668  	}
 17669  }
 17670  
 17671  // Error returns any retrieval or parsing error occurred during filtering.
 17672  func (it *ERC20TransferIterator) Error() error {
 17673  	return it.fail
 17674  }
 17675  
 17676  // Close terminates the iteration process, releasing any pending underlying
 17677  // resources.
 17678  func (it *ERC20TransferIterator) Close() error {
 17679  	it.sub.Unsubscribe()
 17680  	return nil
 17681  }
 17682  
 17683  // ERC20Transfer represents a Transfer event raised by the ERC20 contract.
 17684  type ERC20Transfer struct {
 17685  	From  common.Address
 17686  	To    common.Address
 17687  	Value *big.Int
 17688  	Raw   types.Log // Blockchain specific contextual infos
 17689  }
 17690  
 17691  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 17692  //
 17693  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 17694  func (_ERC20 *ERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20TransferIterator, error) {
 17695  
 17696  	var fromRule []interface{}
 17697  	for _, fromItem := range from {
 17698  		fromRule = append(fromRule, fromItem)
 17699  	}
 17700  	var toRule []interface{}
 17701  	for _, toItem := range to {
 17702  		toRule = append(toRule, toItem)
 17703  	}
 17704  
 17705  	logs, sub, err := _ERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
 17706  	if err != nil {
 17707  		return nil, err
 17708  	}
 17709  	return &ERC20TransferIterator{contract: _ERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil
 17710  }
 17711  
 17712  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 17713  //
 17714  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 17715  func (_ERC20 *ERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) {
 17716  
 17717  	var fromRule []interface{}
 17718  	for _, fromItem := range from {
 17719  		fromRule = append(fromRule, fromItem)
 17720  	}
 17721  	var toRule []interface{}
 17722  	for _, toItem := range to {
 17723  		toRule = append(toRule, toItem)
 17724  	}
 17725  
 17726  	logs, sub, err := _ERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
 17727  	if err != nil {
 17728  		return nil, err
 17729  	}
 17730  	return event.NewSubscription(func(quit <-chan struct{}) error {
 17731  		defer sub.Unsubscribe()
 17732  		for {
 17733  			select {
 17734  			case log := <-logs:
 17735  				// New log arrived, parse the event and forward to the user
 17736  				event := new(ERC20Transfer)
 17737  				if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil {
 17738  					return err
 17739  				}
 17740  				event.Raw = log
 17741  
 17742  				select {
 17743  				case sink <- event:
 17744  				case err := <-sub.Err():
 17745  					return err
 17746  				case <-quit:
 17747  					return nil
 17748  				}
 17749  			case err := <-sub.Err():
 17750  				return err
 17751  			case <-quit:
 17752  				return nil
 17753  			}
 17754  		}
 17755  	}), nil
 17756  }
 17757  
 17758  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 17759  //
 17760  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 17761  func (_ERC20 *ERC20Filterer) ParseTransfer(log types.Log) (*ERC20Transfer, error) {
 17762  	event := new(ERC20Transfer)
 17763  	if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil {
 17764  		return nil, err
 17765  	}
 17766  	return event, nil
 17767  }
 17768  
 17769  // ERC20BurnableABI is the input ABI used to generate the binding from.
 17770  const ERC20BurnableABI = "[{\"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\"}]"
 17771  
 17772  // ERC20BurnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 17773  const ERC20BurnableBinRuntime = `608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461017e57806379cc6790146101a4578063a457c2d7146101d0578063a9059cbb146101fc578063dd62ed3e146102285761009e565b8063095ea7b3146100a357806318160ddd146100e357806323b872dd146100fd578063395093511461013357806342966c681461015f575b600080fd5b6100cf600480360360408110156100b957600080fd5b506001600160a01b038135169060200135610256565b604080519115158252519081900360200190f35b6100eb61026c565b60408051918252519081900360200190f35b6100cf6004803603606081101561011357600080fd5b506001600160a01b03813581169160208101359091169060400135610272565b6100cf6004803603604081101561014957600080fd5b506001600160a01b0381351690602001356102c9565b61017c6004803603602081101561017557600080fd5b5035610305565b005b6100eb6004803603602081101561019457600080fd5b50356001600160a01b0316610312565b61017c600480360360408110156101ba57600080fd5b506001600160a01b03813516906020013561032d565b6100cf600480360360408110156101e657600080fd5b506001600160a01b03813516906020013561033b565b6100cf6004803603604081101561021257600080fd5b506001600160a01b038135169060200135610377565b6100eb6004803603604081101561023e57600080fd5b506001600160a01b0381358116916020013516610384565b60006102633384846103af565b50600192915050565b60025490565b600061027f8484846104a1565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546102bf9186916102ba908663ffffffff6105e916565b6103af565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff61064916565b61030f33826106ad565b50565b6001600160a01b031660009081526020819052604090205490565b6103378282610789565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff6105e916565b60006102633384846104a1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103f757604051600160e51b62461bcd02815260040180806020018281038252602481526020018061085a6024913960400191505060405180910390fd5b6001600160a01b03821661043f57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806107f26022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166104e957604051600160e51b62461bcd0281526004018080602001828103825260258152602001806108356025913960400191505060405180910390fd5b6001600160a01b03821661053157604051600160e51b62461bcd0281526004018080602001828103825260238152602001806107cf6023913960400191505060405180910390fd5b6001600160a01b03831660009081526020819052604090205461055a908263ffffffff6105e916565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461058f908263ffffffff61064916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156106435760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156106a65760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166106f557604051600160e51b62461bcd0281526004018080602001828103825260218152602001806108146021913960400191505060405180910390fd5b600254610708908263ffffffff6105e916565b6002556001600160a01b038216600090815260208190526040902054610734908263ffffffff6105e916565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b61079382826106ad565b6001600160a01b0382166000908152600160209081526040808320338085529252909120546103379184916102ba908563ffffffff6105e91656fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a7230582013b4ee4a596e91b545aeb6447c3788b121a99567674027b21b642c7da8dc493c0029`
 17774  
 17775  // ERC20BurnableFuncSigs maps the 4-byte function signature to its string representation.
 17776  var ERC20BurnableFuncSigs = map[string]string{
 17777  	"dd62ed3e": "allowance(address,address)",
 17778  	"095ea7b3": "approve(address,uint256)",
 17779  	"70a08231": "balanceOf(address)",
 17780  	"42966c68": "burn(uint256)",
 17781  	"79cc6790": "burnFrom(address,uint256)",
 17782  	"a457c2d7": "decreaseAllowance(address,uint256)",
 17783  	"39509351": "increaseAllowance(address,uint256)",
 17784  	"18160ddd": "totalSupply()",
 17785  	"a9059cbb": "transfer(address,uint256)",
 17786  	"23b872dd": "transferFrom(address,address,uint256)",
 17787  }
 17788  
 17789  // ERC20BurnableBin is the compiled bytecode used for deploying new contracts.
 17790  var ERC20BurnableBin = "0x608060405234801561001057600080fd5b506108a9806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461017e57806379cc6790146101a4578063a457c2d7146101d0578063a9059cbb146101fc578063dd62ed3e146102285761009e565b8063095ea7b3146100a357806318160ddd146100e357806323b872dd146100fd578063395093511461013357806342966c681461015f575b600080fd5b6100cf600480360360408110156100b957600080fd5b506001600160a01b038135169060200135610256565b604080519115158252519081900360200190f35b6100eb61026c565b60408051918252519081900360200190f35b6100cf6004803603606081101561011357600080fd5b506001600160a01b03813581169160208101359091169060400135610272565b6100cf6004803603604081101561014957600080fd5b506001600160a01b0381351690602001356102c9565b61017c6004803603602081101561017557600080fd5b5035610305565b005b6100eb6004803603602081101561019457600080fd5b50356001600160a01b0316610312565b61017c600480360360408110156101ba57600080fd5b506001600160a01b03813516906020013561032d565b6100cf600480360360408110156101e657600080fd5b506001600160a01b03813516906020013561033b565b6100cf6004803603604081101561021257600080fd5b506001600160a01b038135169060200135610377565b6100eb6004803603604081101561023e57600080fd5b506001600160a01b0381358116916020013516610384565b60006102633384846103af565b50600192915050565b60025490565b600061027f8484846104a1565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546102bf9186916102ba908663ffffffff6105e916565b6103af565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff61064916565b61030f33826106ad565b50565b6001600160a01b031660009081526020819052604090205490565b6103378282610789565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff6105e916565b60006102633384846104a1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103f757604051600160e51b62461bcd02815260040180806020018281038252602481526020018061085a6024913960400191505060405180910390fd5b6001600160a01b03821661043f57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806107f26022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166104e957604051600160e51b62461bcd0281526004018080602001828103825260258152602001806108356025913960400191505060405180910390fd5b6001600160a01b03821661053157604051600160e51b62461bcd0281526004018080602001828103825260238152602001806107cf6023913960400191505060405180910390fd5b6001600160a01b03831660009081526020819052604090205461055a908263ffffffff6105e916565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461058f908263ffffffff61064916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156106435760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156106a65760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166106f557604051600160e51b62461bcd0281526004018080602001828103825260218152602001806108146021913960400191505060405180910390fd5b600254610708908263ffffffff6105e916565b6002556001600160a01b038216600090815260208190526040902054610734908263ffffffff6105e916565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b61079382826106ad565b6001600160a01b0382166000908152600160209081526040808320338085529252909120546103379184916102ba908563ffffffff6105e91656fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a7230582013b4ee4a596e91b545aeb6447c3788b121a99567674027b21b642c7da8dc493c0029"
 17791  
 17792  // DeployERC20Burnable deploys a new Klaytn contract, binding an instance of ERC20Burnable to it.
 17793  func DeployERC20Burnable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20Burnable, error) {
 17794  	parsed, err := abi.JSON(strings.NewReader(ERC20BurnableABI))
 17795  	if err != nil {
 17796  		return common.Address{}, nil, nil, err
 17797  	}
 17798  
 17799  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC20BurnableBin), backend)
 17800  	if err != nil {
 17801  		return common.Address{}, nil, nil, err
 17802  	}
 17803  	return address, tx, &ERC20Burnable{ERC20BurnableCaller: ERC20BurnableCaller{contract: contract}, ERC20BurnableTransactor: ERC20BurnableTransactor{contract: contract}, ERC20BurnableFilterer: ERC20BurnableFilterer{contract: contract}}, nil
 17804  }
 17805  
 17806  // ERC20Burnable is an auto generated Go binding around a Klaytn contract.
 17807  type ERC20Burnable struct {
 17808  	ERC20BurnableCaller     // Read-only binding to the contract
 17809  	ERC20BurnableTransactor // Write-only binding to the contract
 17810  	ERC20BurnableFilterer   // Log filterer for contract events
 17811  }
 17812  
 17813  // ERC20BurnableCaller is an auto generated read-only Go binding around a Klaytn contract.
 17814  type ERC20BurnableCaller struct {
 17815  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 17816  }
 17817  
 17818  // ERC20BurnableTransactor is an auto generated write-only Go binding around a Klaytn contract.
 17819  type ERC20BurnableTransactor struct {
 17820  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 17821  }
 17822  
 17823  // ERC20BurnableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 17824  type ERC20BurnableFilterer struct {
 17825  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 17826  }
 17827  
 17828  // ERC20BurnableSession is an auto generated Go binding around a Klaytn contract,
 17829  // with pre-set call and transact options.
 17830  type ERC20BurnableSession struct {
 17831  	Contract     *ERC20Burnable    // Generic contract binding to set the session for
 17832  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 17833  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 17834  }
 17835  
 17836  // ERC20BurnableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 17837  // with pre-set call options.
 17838  type ERC20BurnableCallerSession struct {
 17839  	Contract *ERC20BurnableCaller // Generic contract caller binding to set the session for
 17840  	CallOpts bind.CallOpts        // Call options to use throughout this session
 17841  }
 17842  
 17843  // ERC20BurnableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 17844  // with pre-set transact options.
 17845  type ERC20BurnableTransactorSession struct {
 17846  	Contract     *ERC20BurnableTransactor // Generic contract transactor binding to set the session for
 17847  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
 17848  }
 17849  
 17850  // ERC20BurnableRaw is an auto generated low-level Go binding around a Klaytn contract.
 17851  type ERC20BurnableRaw struct {
 17852  	Contract *ERC20Burnable // Generic contract binding to access the raw methods on
 17853  }
 17854  
 17855  // ERC20BurnableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 17856  type ERC20BurnableCallerRaw struct {
 17857  	Contract *ERC20BurnableCaller // Generic read-only contract binding to access the raw methods on
 17858  }
 17859  
 17860  // ERC20BurnableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 17861  type ERC20BurnableTransactorRaw struct {
 17862  	Contract *ERC20BurnableTransactor // Generic write-only contract binding to access the raw methods on
 17863  }
 17864  
 17865  // NewERC20Burnable creates a new instance of ERC20Burnable, bound to a specific deployed contract.
 17866  func NewERC20Burnable(address common.Address, backend bind.ContractBackend) (*ERC20Burnable, error) {
 17867  	contract, err := bindERC20Burnable(address, backend, backend, backend)
 17868  	if err != nil {
 17869  		return nil, err
 17870  	}
 17871  	return &ERC20Burnable{ERC20BurnableCaller: ERC20BurnableCaller{contract: contract}, ERC20BurnableTransactor: ERC20BurnableTransactor{contract: contract}, ERC20BurnableFilterer: ERC20BurnableFilterer{contract: contract}}, nil
 17872  }
 17873  
 17874  // NewERC20BurnableCaller creates a new read-only instance of ERC20Burnable, bound to a specific deployed contract.
 17875  func NewERC20BurnableCaller(address common.Address, caller bind.ContractCaller) (*ERC20BurnableCaller, error) {
 17876  	contract, err := bindERC20Burnable(address, caller, nil, nil)
 17877  	if err != nil {
 17878  		return nil, err
 17879  	}
 17880  	return &ERC20BurnableCaller{contract: contract}, nil
 17881  }
 17882  
 17883  // NewERC20BurnableTransactor creates a new write-only instance of ERC20Burnable, bound to a specific deployed contract.
 17884  func NewERC20BurnableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20BurnableTransactor, error) {
 17885  	contract, err := bindERC20Burnable(address, nil, transactor, nil)
 17886  	if err != nil {
 17887  		return nil, err
 17888  	}
 17889  	return &ERC20BurnableTransactor{contract: contract}, nil
 17890  }
 17891  
 17892  // NewERC20BurnableFilterer creates a new log filterer instance of ERC20Burnable, bound to a specific deployed contract.
 17893  func NewERC20BurnableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20BurnableFilterer, error) {
 17894  	contract, err := bindERC20Burnable(address, nil, nil, filterer)
 17895  	if err != nil {
 17896  		return nil, err
 17897  	}
 17898  	return &ERC20BurnableFilterer{contract: contract}, nil
 17899  }
 17900  
 17901  // bindERC20Burnable binds a generic wrapper to an already deployed contract.
 17902  func bindERC20Burnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 17903  	parsed, err := abi.JSON(strings.NewReader(ERC20BurnableABI))
 17904  	if err != nil {
 17905  		return nil, err
 17906  	}
 17907  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 17908  }
 17909  
 17910  // Call invokes the (constant) contract method with params as input values and
 17911  // sets the output to result. The result type might be a single field for simple
 17912  // returns, a slice of interfaces for anonymous returns and a struct for named
 17913  // returns.
 17914  func (_ERC20Burnable *ERC20BurnableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 17915  	return _ERC20Burnable.Contract.ERC20BurnableCaller.contract.Call(opts, result, method, params...)
 17916  }
 17917  
 17918  // Transfer initiates a plain transaction to move funds to the contract, calling
 17919  // its default method if one is available.
 17920  func (_ERC20Burnable *ERC20BurnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 17921  	return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transfer(opts)
 17922  }
 17923  
 17924  // Transact invokes the (paid) contract method with params as input values.
 17925  func (_ERC20Burnable *ERC20BurnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 17926  	return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transact(opts, method, params...)
 17927  }
 17928  
 17929  // Call invokes the (constant) contract method with params as input values and
 17930  // sets the output to result. The result type might be a single field for simple
 17931  // returns, a slice of interfaces for anonymous returns and a struct for named
 17932  // returns.
 17933  func (_ERC20Burnable *ERC20BurnableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 17934  	return _ERC20Burnable.Contract.contract.Call(opts, result, method, params...)
 17935  }
 17936  
 17937  // Transfer initiates a plain transaction to move funds to the contract, calling
 17938  // its default method if one is available.
 17939  func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 17940  	return _ERC20Burnable.Contract.contract.Transfer(opts)
 17941  }
 17942  
 17943  // Transact invokes the (paid) contract method with params as input values.
 17944  func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 17945  	return _ERC20Burnable.Contract.contract.Transact(opts, method, params...)
 17946  }
 17947  
 17948  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 17949  //
 17950  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 17951  func (_ERC20Burnable *ERC20BurnableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
 17952  	var (
 17953  		ret0 = new(*big.Int)
 17954  	)
 17955  	out := ret0
 17956  	err := _ERC20Burnable.contract.Call(opts, out, "allowance", owner, spender)
 17957  	return *ret0, err
 17958  }
 17959  
 17960  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 17961  //
 17962  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 17963  func (_ERC20Burnable *ERC20BurnableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
 17964  	return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender)
 17965  }
 17966  
 17967  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 17968  //
 17969  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 17970  func (_ERC20Burnable *ERC20BurnableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
 17971  	return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender)
 17972  }
 17973  
 17974  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 17975  //
 17976  // Solidity: function balanceOf(address account) view returns(uint256)
 17977  func (_ERC20Burnable *ERC20BurnableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
 17978  	var (
 17979  		ret0 = new(*big.Int)
 17980  	)
 17981  	out := ret0
 17982  	err := _ERC20Burnable.contract.Call(opts, out, "balanceOf", account)
 17983  	return *ret0, err
 17984  }
 17985  
 17986  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 17987  //
 17988  // Solidity: function balanceOf(address account) view returns(uint256)
 17989  func (_ERC20Burnable *ERC20BurnableSession) BalanceOf(account common.Address) (*big.Int, error) {
 17990  	return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account)
 17991  }
 17992  
 17993  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 17994  //
 17995  // Solidity: function balanceOf(address account) view returns(uint256)
 17996  func (_ERC20Burnable *ERC20BurnableCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
 17997  	return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account)
 17998  }
 17999  
 18000  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 18001  //
 18002  // Solidity: function totalSupply() view returns(uint256)
 18003  func (_ERC20Burnable *ERC20BurnableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
 18004  	var (
 18005  		ret0 = new(*big.Int)
 18006  	)
 18007  	out := ret0
 18008  	err := _ERC20Burnable.contract.Call(opts, out, "totalSupply")
 18009  	return *ret0, err
 18010  }
 18011  
 18012  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 18013  //
 18014  // Solidity: function totalSupply() view returns(uint256)
 18015  func (_ERC20Burnable *ERC20BurnableSession) TotalSupply() (*big.Int, error) {
 18016  	return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts)
 18017  }
 18018  
 18019  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 18020  //
 18021  // Solidity: function totalSupply() view returns(uint256)
 18022  func (_ERC20Burnable *ERC20BurnableCallerSession) TotalSupply() (*big.Int, error) {
 18023  	return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts)
 18024  }
 18025  
 18026  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 18027  //
 18028  // Solidity: function approve(address spender, uint256 value) returns(bool)
 18029  func (_ERC20Burnable *ERC20BurnableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) {
 18030  	return _ERC20Burnable.contract.Transact(opts, "approve", spender, value)
 18031  }
 18032  
 18033  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 18034  //
 18035  // Solidity: function approve(address spender, uint256 value) returns(bool)
 18036  func (_ERC20Burnable *ERC20BurnableSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
 18037  	return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, value)
 18038  }
 18039  
 18040  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 18041  //
 18042  // Solidity: function approve(address spender, uint256 value) returns(bool)
 18043  func (_ERC20Burnable *ERC20BurnableTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
 18044  	return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, value)
 18045  }
 18046  
 18047  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 18048  //
 18049  // Solidity: function burn(uint256 amount) returns()
 18050  func (_ERC20Burnable *ERC20BurnableTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) {
 18051  	return _ERC20Burnable.contract.Transact(opts, "burn", amount)
 18052  }
 18053  
 18054  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 18055  //
 18056  // Solidity: function burn(uint256 amount) returns()
 18057  func (_ERC20Burnable *ERC20BurnableSession) Burn(amount *big.Int) (*types.Transaction, error) {
 18058  	return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, amount)
 18059  }
 18060  
 18061  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 18062  //
 18063  // Solidity: function burn(uint256 amount) returns()
 18064  func (_ERC20Burnable *ERC20BurnableTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) {
 18065  	return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, amount)
 18066  }
 18067  
 18068  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
 18069  //
 18070  // Solidity: function burnFrom(address account, uint256 amount) returns()
 18071  func (_ERC20Burnable *ERC20BurnableTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) {
 18072  	return _ERC20Burnable.contract.Transact(opts, "burnFrom", account, amount)
 18073  }
 18074  
 18075  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
 18076  //
 18077  // Solidity: function burnFrom(address account, uint256 amount) returns()
 18078  func (_ERC20Burnable *ERC20BurnableSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) {
 18079  	return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, amount)
 18080  }
 18081  
 18082  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
 18083  //
 18084  // Solidity: function burnFrom(address account, uint256 amount) returns()
 18085  func (_ERC20Burnable *ERC20BurnableTransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) {
 18086  	return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, amount)
 18087  }
 18088  
 18089  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 18090  //
 18091  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 18092  func (_ERC20Burnable *ERC20BurnableTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 18093  	return _ERC20Burnable.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
 18094  }
 18095  
 18096  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 18097  //
 18098  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 18099  func (_ERC20Burnable *ERC20BurnableSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 18100  	return _ERC20Burnable.Contract.DecreaseAllowance(&_ERC20Burnable.TransactOpts, spender, subtractedValue)
 18101  }
 18102  
 18103  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 18104  //
 18105  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 18106  func (_ERC20Burnable *ERC20BurnableTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 18107  	return _ERC20Burnable.Contract.DecreaseAllowance(&_ERC20Burnable.TransactOpts, spender, subtractedValue)
 18108  }
 18109  
 18110  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 18111  //
 18112  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 18113  func (_ERC20Burnable *ERC20BurnableTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 18114  	return _ERC20Burnable.contract.Transact(opts, "increaseAllowance", spender, addedValue)
 18115  }
 18116  
 18117  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 18118  //
 18119  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 18120  func (_ERC20Burnable *ERC20BurnableSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 18121  	return _ERC20Burnable.Contract.IncreaseAllowance(&_ERC20Burnable.TransactOpts, spender, addedValue)
 18122  }
 18123  
 18124  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 18125  //
 18126  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 18127  func (_ERC20Burnable *ERC20BurnableTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 18128  	return _ERC20Burnable.Contract.IncreaseAllowance(&_ERC20Burnable.TransactOpts, spender, addedValue)
 18129  }
 18130  
 18131  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 18132  //
 18133  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 18134  func (_ERC20Burnable *ERC20BurnableTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 18135  	return _ERC20Burnable.contract.Transact(opts, "transfer", recipient, amount)
 18136  }
 18137  
 18138  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 18139  //
 18140  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 18141  func (_ERC20Burnable *ERC20BurnableSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 18142  	return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, recipient, amount)
 18143  }
 18144  
 18145  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 18146  //
 18147  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 18148  func (_ERC20Burnable *ERC20BurnableTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 18149  	return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, recipient, amount)
 18150  }
 18151  
 18152  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 18153  //
 18154  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 18155  func (_ERC20Burnable *ERC20BurnableTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 18156  	return _ERC20Burnable.contract.Transact(opts, "transferFrom", sender, recipient, amount)
 18157  }
 18158  
 18159  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 18160  //
 18161  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 18162  func (_ERC20Burnable *ERC20BurnableSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 18163  	return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, sender, recipient, amount)
 18164  }
 18165  
 18166  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 18167  //
 18168  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 18169  func (_ERC20Burnable *ERC20BurnableTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 18170  	return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, sender, recipient, amount)
 18171  }
 18172  
 18173  // 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.
 18174  type ERC20BurnableApprovalIterator struct {
 18175  	Event *ERC20BurnableApproval // Event containing the contract specifics and raw log
 18176  
 18177  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 18178  	event    string              // Event name to use for unpacking event data
 18179  
 18180  	logs chan types.Log      // Log channel receiving the found contract events
 18181  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 18182  	done bool                // Whether the subscription completed delivering logs
 18183  	fail error               // Occurred error to stop iteration
 18184  }
 18185  
 18186  // Next advances the iterator to the subsequent event, returning whether there
 18187  // are any more events found. In case of a retrieval or parsing error, false is
 18188  // returned and Error() can be queried for the exact failure.
 18189  func (it *ERC20BurnableApprovalIterator) Next() bool {
 18190  	// If the iterator failed, stop iterating
 18191  	if it.fail != nil {
 18192  		return false
 18193  	}
 18194  	// If the iterator completed, deliver directly whatever's available
 18195  	if it.done {
 18196  		select {
 18197  		case log := <-it.logs:
 18198  			it.Event = new(ERC20BurnableApproval)
 18199  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 18200  				it.fail = err
 18201  				return false
 18202  			}
 18203  			it.Event.Raw = log
 18204  			return true
 18205  
 18206  		default:
 18207  			return false
 18208  		}
 18209  	}
 18210  	// Iterator still in progress, wait for either a data or an error event
 18211  	select {
 18212  	case log := <-it.logs:
 18213  		it.Event = new(ERC20BurnableApproval)
 18214  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 18215  			it.fail = err
 18216  			return false
 18217  		}
 18218  		it.Event.Raw = log
 18219  		return true
 18220  
 18221  	case err := <-it.sub.Err():
 18222  		it.done = true
 18223  		it.fail = err
 18224  		return it.Next()
 18225  	}
 18226  }
 18227  
 18228  // Error returns any retrieval or parsing error occurred during filtering.
 18229  func (it *ERC20BurnableApprovalIterator) Error() error {
 18230  	return it.fail
 18231  }
 18232  
 18233  // Close terminates the iteration process, releasing any pending underlying
 18234  // resources.
 18235  func (it *ERC20BurnableApprovalIterator) Close() error {
 18236  	it.sub.Unsubscribe()
 18237  	return nil
 18238  }
 18239  
 18240  // ERC20BurnableApproval represents a Approval event raised by the ERC20Burnable contract.
 18241  type ERC20BurnableApproval struct {
 18242  	Owner   common.Address
 18243  	Spender common.Address
 18244  	Value   *big.Int
 18245  	Raw     types.Log // Blockchain specific contextual infos
 18246  }
 18247  
 18248  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 18249  //
 18250  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 18251  func (_ERC20Burnable *ERC20BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20BurnableApprovalIterator, error) {
 18252  
 18253  	var ownerRule []interface{}
 18254  	for _, ownerItem := range owner {
 18255  		ownerRule = append(ownerRule, ownerItem)
 18256  	}
 18257  	var spenderRule []interface{}
 18258  	for _, spenderItem := range spender {
 18259  		spenderRule = append(spenderRule, spenderItem)
 18260  	}
 18261  
 18262  	logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
 18263  	if err != nil {
 18264  		return nil, err
 18265  	}
 18266  	return &ERC20BurnableApprovalIterator{contract: _ERC20Burnable.contract, event: "Approval", logs: logs, sub: sub}, nil
 18267  }
 18268  
 18269  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 18270  //
 18271  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 18272  func (_ERC20Burnable *ERC20BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20BurnableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
 18273  
 18274  	var ownerRule []interface{}
 18275  	for _, ownerItem := range owner {
 18276  		ownerRule = append(ownerRule, ownerItem)
 18277  	}
 18278  	var spenderRule []interface{}
 18279  	for _, spenderItem := range spender {
 18280  		spenderRule = append(spenderRule, spenderItem)
 18281  	}
 18282  
 18283  	logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
 18284  	if err != nil {
 18285  		return nil, err
 18286  	}
 18287  	return event.NewSubscription(func(quit <-chan struct{}) error {
 18288  		defer sub.Unsubscribe()
 18289  		for {
 18290  			select {
 18291  			case log := <-logs:
 18292  				// New log arrived, parse the event and forward to the user
 18293  				event := new(ERC20BurnableApproval)
 18294  				if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil {
 18295  					return err
 18296  				}
 18297  				event.Raw = log
 18298  
 18299  				select {
 18300  				case sink <- event:
 18301  				case err := <-sub.Err():
 18302  					return err
 18303  				case <-quit:
 18304  					return nil
 18305  				}
 18306  			case err := <-sub.Err():
 18307  				return err
 18308  			case <-quit:
 18309  				return nil
 18310  			}
 18311  		}
 18312  	}), nil
 18313  }
 18314  
 18315  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 18316  //
 18317  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 18318  func (_ERC20Burnable *ERC20BurnableFilterer) ParseApproval(log types.Log) (*ERC20BurnableApproval, error) {
 18319  	event := new(ERC20BurnableApproval)
 18320  	if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil {
 18321  		return nil, err
 18322  	}
 18323  	return event, nil
 18324  }
 18325  
 18326  // 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.
 18327  type ERC20BurnableTransferIterator struct {
 18328  	Event *ERC20BurnableTransfer // Event containing the contract specifics and raw log
 18329  
 18330  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 18331  	event    string              // Event name to use for unpacking event data
 18332  
 18333  	logs chan types.Log      // Log channel receiving the found contract events
 18334  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 18335  	done bool                // Whether the subscription completed delivering logs
 18336  	fail error               // Occurred error to stop iteration
 18337  }
 18338  
 18339  // Next advances the iterator to the subsequent event, returning whether there
 18340  // are any more events found. In case of a retrieval or parsing error, false is
 18341  // returned and Error() can be queried for the exact failure.
 18342  func (it *ERC20BurnableTransferIterator) Next() bool {
 18343  	// If the iterator failed, stop iterating
 18344  	if it.fail != nil {
 18345  		return false
 18346  	}
 18347  	// If the iterator completed, deliver directly whatever's available
 18348  	if it.done {
 18349  		select {
 18350  		case log := <-it.logs:
 18351  			it.Event = new(ERC20BurnableTransfer)
 18352  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 18353  				it.fail = err
 18354  				return false
 18355  			}
 18356  			it.Event.Raw = log
 18357  			return true
 18358  
 18359  		default:
 18360  			return false
 18361  		}
 18362  	}
 18363  	// Iterator still in progress, wait for either a data or an error event
 18364  	select {
 18365  	case log := <-it.logs:
 18366  		it.Event = new(ERC20BurnableTransfer)
 18367  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 18368  			it.fail = err
 18369  			return false
 18370  		}
 18371  		it.Event.Raw = log
 18372  		return true
 18373  
 18374  	case err := <-it.sub.Err():
 18375  		it.done = true
 18376  		it.fail = err
 18377  		return it.Next()
 18378  	}
 18379  }
 18380  
 18381  // Error returns any retrieval or parsing error occurred during filtering.
 18382  func (it *ERC20BurnableTransferIterator) Error() error {
 18383  	return it.fail
 18384  }
 18385  
 18386  // Close terminates the iteration process, releasing any pending underlying
 18387  // resources.
 18388  func (it *ERC20BurnableTransferIterator) Close() error {
 18389  	it.sub.Unsubscribe()
 18390  	return nil
 18391  }
 18392  
 18393  // ERC20BurnableTransfer represents a Transfer event raised by the ERC20Burnable contract.
 18394  type ERC20BurnableTransfer struct {
 18395  	From  common.Address
 18396  	To    common.Address
 18397  	Value *big.Int
 18398  	Raw   types.Log // Blockchain specific contextual infos
 18399  }
 18400  
 18401  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 18402  //
 18403  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 18404  func (_ERC20Burnable *ERC20BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20BurnableTransferIterator, error) {
 18405  
 18406  	var fromRule []interface{}
 18407  	for _, fromItem := range from {
 18408  		fromRule = append(fromRule, fromItem)
 18409  	}
 18410  	var toRule []interface{}
 18411  	for _, toItem := range to {
 18412  		toRule = append(toRule, toItem)
 18413  	}
 18414  
 18415  	logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
 18416  	if err != nil {
 18417  		return nil, err
 18418  	}
 18419  	return &ERC20BurnableTransferIterator{contract: _ERC20Burnable.contract, event: "Transfer", logs: logs, sub: sub}, nil
 18420  }
 18421  
 18422  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 18423  //
 18424  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 18425  func (_ERC20Burnable *ERC20BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20BurnableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {
 18426  
 18427  	var fromRule []interface{}
 18428  	for _, fromItem := range from {
 18429  		fromRule = append(fromRule, fromItem)
 18430  	}
 18431  	var toRule []interface{}
 18432  	for _, toItem := range to {
 18433  		toRule = append(toRule, toItem)
 18434  	}
 18435  
 18436  	logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
 18437  	if err != nil {
 18438  		return nil, err
 18439  	}
 18440  	return event.NewSubscription(func(quit <-chan struct{}) error {
 18441  		defer sub.Unsubscribe()
 18442  		for {
 18443  			select {
 18444  			case log := <-logs:
 18445  				// New log arrived, parse the event and forward to the user
 18446  				event := new(ERC20BurnableTransfer)
 18447  				if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil {
 18448  					return err
 18449  				}
 18450  				event.Raw = log
 18451  
 18452  				select {
 18453  				case sink <- event:
 18454  				case err := <-sub.Err():
 18455  					return err
 18456  				case <-quit:
 18457  					return nil
 18458  				}
 18459  			case err := <-sub.Err():
 18460  				return err
 18461  			case <-quit:
 18462  				return nil
 18463  			}
 18464  		}
 18465  	}), nil
 18466  }
 18467  
 18468  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 18469  //
 18470  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 18471  func (_ERC20Burnable *ERC20BurnableFilterer) ParseTransfer(log types.Log) (*ERC20BurnableTransfer, error) {
 18472  	event := new(ERC20BurnableTransfer)
 18473  	if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil {
 18474  		return nil, err
 18475  	}
 18476  	return event, nil
 18477  }
 18478  
 18479  // ERC20MintableABI is the input ABI used to generate the binding from.
 18480  const ERC20MintableABI = "[{\"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\"}]"
 18481  
 18482  // ERC20MintableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 18483  const ERC20MintableBinRuntime = `608060405234801561001057600080fd5b50600436106100b45760003560e01c8063983b2d5611610071578063983b2d56146101c757806398650275146101ef578063a457c2d7146101f7578063a9059cbb14610223578063aa271e1a1461024f578063dd62ed3e14610275576100b4565b8063095ea7b3146100b957806318160ddd146100f957806323b872dd14610113578063395093511461014957806340c10f191461017557806370a08231146101a1575b600080fd5b6100e5600480360360408110156100cf57600080fd5b506001600160a01b0381351690602001356102a3565b604080519115158252519081900360200190f35b6101016102b9565b60408051918252519081900360200190f35b6100e56004803603606081101561012957600080fd5b506001600160a01b038135811691602081013590911690604001356102bf565b6100e56004803603604081101561015f57600080fd5b506001600160a01b038135169060200135610316565b6100e56004803603604081101561018b57600080fd5b506001600160a01b038135169060200135610352565b610101600480360360208110156101b757600080fd5b50356001600160a01b03166103a5565b6101ed600480360360208110156101dd57600080fd5b50356001600160a01b03166103c0565b005b6101ed610413565b6100e56004803603604081101561020d57600080fd5b506001600160a01b03813516906020013561041e565b6100e56004803603604081101561023957600080fd5b506001600160a01b03813516906020013561045a565b6100e56004803603602081101561026557600080fd5b50356001600160a01b0316610467565b6101016004803603604081101561028b57600080fd5b506001600160a01b0381358116916020013516610480565b60006102b03384846104ab565b50600192915050565b60025490565b60006102cc84848461059d565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461030c918691610307908663ffffffff6106e516565b6104ab565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff61074516565b600061035d33610467565b61039b57604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6102b083836107a9565b6001600160a01b031660009081526020819052604090205490565b6103c933610467565b61040757604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6104108161089c565b50565b61041c336108e4565b565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff6106e516565b60006102b033848461059d565b600061047a60038363ffffffff61092c16565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104f357604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b626024913960400191505060405180910390fd5b6001600160a01b03821661053b57604051600160e51b62461bcd028152600401808060200182810382526022815260200180610aa86022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166105e557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610b3d6025913960400191505060405180910390fd5b6001600160a01b03821661062d57604051600160e51b62461bcd028152600401808060200182810382526023815260200180610a856023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610656908263ffffffff6106e516565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461068b908263ffffffff61074516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561073f5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156107a25760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166108075760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60025461081a908263ffffffff61074516565b6002556001600160a01b038216600090815260208190526040902054610846908263ffffffff61074516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6108ad60038263ffffffff61099616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6108f560038263ffffffff610a1a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661097657604051600160e51b62461bcd028152600401808060200182810382526022815260200180610b1b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6109a0828261092c565b156109f55760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610a24828261092c565b610a6257604051600160e51b62461bcd028152600401808060200182810382526021815260200180610afa6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058208533d6897cadaf6784525a9d32e613a3c81da44cfdedf624f1bdb497f8b68f4a0029`
 18484  
 18485  // ERC20MintableFuncSigs maps the 4-byte function signature to its string representation.
 18486  var ERC20MintableFuncSigs = map[string]string{
 18487  	"983b2d56": "addMinter(address)",
 18488  	"dd62ed3e": "allowance(address,address)",
 18489  	"095ea7b3": "approve(address,uint256)",
 18490  	"70a08231": "balanceOf(address)",
 18491  	"a457c2d7": "decreaseAllowance(address,uint256)",
 18492  	"39509351": "increaseAllowance(address,uint256)",
 18493  	"aa271e1a": "isMinter(address)",
 18494  	"40c10f19": "mint(address,uint256)",
 18495  	"98650275": "renounceMinter()",
 18496  	"18160ddd": "totalSupply()",
 18497  	"a9059cbb": "transfer(address,uint256)",
 18498  	"23b872dd": "transferFrom(address,address,uint256)",
 18499  }
 18500  
 18501  // ERC20MintableBin is the compiled bytecode used for deploying new contracts.
 18502  var ERC20MintableBin = "0x60806040526100133361001860201b60201c565b610189565b61003081600361006760201b6109961790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610077828261010860201b60201c565b156100e357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216610169576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610d496022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b610bb1806101986000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063983b2d5611610071578063983b2d56146101c757806398650275146101ef578063a457c2d7146101f7578063a9059cbb14610223578063aa271e1a1461024f578063dd62ed3e14610275576100b4565b8063095ea7b3146100b957806318160ddd146100f957806323b872dd14610113578063395093511461014957806340c10f191461017557806370a08231146101a1575b600080fd5b6100e5600480360360408110156100cf57600080fd5b506001600160a01b0381351690602001356102a3565b604080519115158252519081900360200190f35b6101016102b9565b60408051918252519081900360200190f35b6100e56004803603606081101561012957600080fd5b506001600160a01b038135811691602081013590911690604001356102bf565b6100e56004803603604081101561015f57600080fd5b506001600160a01b038135169060200135610316565b6100e56004803603604081101561018b57600080fd5b506001600160a01b038135169060200135610352565b610101600480360360208110156101b757600080fd5b50356001600160a01b03166103a5565b6101ed600480360360208110156101dd57600080fd5b50356001600160a01b03166103c0565b005b6101ed610413565b6100e56004803603604081101561020d57600080fd5b506001600160a01b03813516906020013561041e565b6100e56004803603604081101561023957600080fd5b506001600160a01b03813516906020013561045a565b6100e56004803603602081101561026557600080fd5b50356001600160a01b0316610467565b6101016004803603604081101561028b57600080fd5b506001600160a01b0381358116916020013516610480565b60006102b03384846104ab565b50600192915050565b60025490565b60006102cc84848461059d565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461030c918691610307908663ffffffff6106e516565b6104ab565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff61074516565b600061035d33610467565b61039b57604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6102b083836107a9565b6001600160a01b031660009081526020819052604090205490565b6103c933610467565b61040757604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6104108161089c565b50565b61041c336108e4565b565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff6106e516565b60006102b033848461059d565b600061047a60038363ffffffff61092c16565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104f357604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b626024913960400191505060405180910390fd5b6001600160a01b03821661053b57604051600160e51b62461bcd028152600401808060200182810382526022815260200180610aa86022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166105e557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610b3d6025913960400191505060405180910390fd5b6001600160a01b03821661062d57604051600160e51b62461bcd028152600401808060200182810382526023815260200180610a856023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610656908263ffffffff6106e516565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461068b908263ffffffff61074516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561073f5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156107a25760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166108075760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60025461081a908263ffffffff61074516565b6002556001600160a01b038216600090815260208190526040902054610846908263ffffffff61074516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6108ad60038263ffffffff61099616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6108f560038263ffffffff610a1a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661097657604051600160e51b62461bcd028152600401808060200182810382526022815260200180610b1b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6109a0828261092c565b156109f55760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610a24828261092c565b610a6257604051600160e51b62461bcd028152600401808060200182810382526021815260200180610afa6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058208533d6897cadaf6784525a9d32e613a3c81da44cfdedf624f1bdb497f8b68f4a0029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373"
 18503  
 18504  // DeployERC20Mintable deploys a new Klaytn contract, binding an instance of ERC20Mintable to it.
 18505  func DeployERC20Mintable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20Mintable, error) {
 18506  	parsed, err := abi.JSON(strings.NewReader(ERC20MintableABI))
 18507  	if err != nil {
 18508  		return common.Address{}, nil, nil, err
 18509  	}
 18510  
 18511  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC20MintableBin), backend)
 18512  	if err != nil {
 18513  		return common.Address{}, nil, nil, err
 18514  	}
 18515  	return address, tx, &ERC20Mintable{ERC20MintableCaller: ERC20MintableCaller{contract: contract}, ERC20MintableTransactor: ERC20MintableTransactor{contract: contract}, ERC20MintableFilterer: ERC20MintableFilterer{contract: contract}}, nil
 18516  }
 18517  
 18518  // ERC20Mintable is an auto generated Go binding around a Klaytn contract.
 18519  type ERC20Mintable struct {
 18520  	ERC20MintableCaller     // Read-only binding to the contract
 18521  	ERC20MintableTransactor // Write-only binding to the contract
 18522  	ERC20MintableFilterer   // Log filterer for contract events
 18523  }
 18524  
 18525  // ERC20MintableCaller is an auto generated read-only Go binding around a Klaytn contract.
 18526  type ERC20MintableCaller struct {
 18527  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 18528  }
 18529  
 18530  // ERC20MintableTransactor is an auto generated write-only Go binding around a Klaytn contract.
 18531  type ERC20MintableTransactor struct {
 18532  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 18533  }
 18534  
 18535  // ERC20MintableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 18536  type ERC20MintableFilterer struct {
 18537  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 18538  }
 18539  
 18540  // ERC20MintableSession is an auto generated Go binding around a Klaytn contract,
 18541  // with pre-set call and transact options.
 18542  type ERC20MintableSession struct {
 18543  	Contract     *ERC20Mintable    // Generic contract binding to set the session for
 18544  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 18545  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 18546  }
 18547  
 18548  // ERC20MintableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 18549  // with pre-set call options.
 18550  type ERC20MintableCallerSession struct {
 18551  	Contract *ERC20MintableCaller // Generic contract caller binding to set the session for
 18552  	CallOpts bind.CallOpts        // Call options to use throughout this session
 18553  }
 18554  
 18555  // ERC20MintableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 18556  // with pre-set transact options.
 18557  type ERC20MintableTransactorSession struct {
 18558  	Contract     *ERC20MintableTransactor // Generic contract transactor binding to set the session for
 18559  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
 18560  }
 18561  
 18562  // ERC20MintableRaw is an auto generated low-level Go binding around a Klaytn contract.
 18563  type ERC20MintableRaw struct {
 18564  	Contract *ERC20Mintable // Generic contract binding to access the raw methods on
 18565  }
 18566  
 18567  // ERC20MintableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 18568  type ERC20MintableCallerRaw struct {
 18569  	Contract *ERC20MintableCaller // Generic read-only contract binding to access the raw methods on
 18570  }
 18571  
 18572  // ERC20MintableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 18573  type ERC20MintableTransactorRaw struct {
 18574  	Contract *ERC20MintableTransactor // Generic write-only contract binding to access the raw methods on
 18575  }
 18576  
 18577  // NewERC20Mintable creates a new instance of ERC20Mintable, bound to a specific deployed contract.
 18578  func NewERC20Mintable(address common.Address, backend bind.ContractBackend) (*ERC20Mintable, error) {
 18579  	contract, err := bindERC20Mintable(address, backend, backend, backend)
 18580  	if err != nil {
 18581  		return nil, err
 18582  	}
 18583  	return &ERC20Mintable{ERC20MintableCaller: ERC20MintableCaller{contract: contract}, ERC20MintableTransactor: ERC20MintableTransactor{contract: contract}, ERC20MintableFilterer: ERC20MintableFilterer{contract: contract}}, nil
 18584  }
 18585  
 18586  // NewERC20MintableCaller creates a new read-only instance of ERC20Mintable, bound to a specific deployed contract.
 18587  func NewERC20MintableCaller(address common.Address, caller bind.ContractCaller) (*ERC20MintableCaller, error) {
 18588  	contract, err := bindERC20Mintable(address, caller, nil, nil)
 18589  	if err != nil {
 18590  		return nil, err
 18591  	}
 18592  	return &ERC20MintableCaller{contract: contract}, nil
 18593  }
 18594  
 18595  // NewERC20MintableTransactor creates a new write-only instance of ERC20Mintable, bound to a specific deployed contract.
 18596  func NewERC20MintableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20MintableTransactor, error) {
 18597  	contract, err := bindERC20Mintable(address, nil, transactor, nil)
 18598  	if err != nil {
 18599  		return nil, err
 18600  	}
 18601  	return &ERC20MintableTransactor{contract: contract}, nil
 18602  }
 18603  
 18604  // NewERC20MintableFilterer creates a new log filterer instance of ERC20Mintable, bound to a specific deployed contract.
 18605  func NewERC20MintableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20MintableFilterer, error) {
 18606  	contract, err := bindERC20Mintable(address, nil, nil, filterer)
 18607  	if err != nil {
 18608  		return nil, err
 18609  	}
 18610  	return &ERC20MintableFilterer{contract: contract}, nil
 18611  }
 18612  
 18613  // bindERC20Mintable binds a generic wrapper to an already deployed contract.
 18614  func bindERC20Mintable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 18615  	parsed, err := abi.JSON(strings.NewReader(ERC20MintableABI))
 18616  	if err != nil {
 18617  		return nil, err
 18618  	}
 18619  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 18620  }
 18621  
 18622  // Call invokes the (constant) contract method with params as input values and
 18623  // sets the output to result. The result type might be a single field for simple
 18624  // returns, a slice of interfaces for anonymous returns and a struct for named
 18625  // returns.
 18626  func (_ERC20Mintable *ERC20MintableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 18627  	return _ERC20Mintable.Contract.ERC20MintableCaller.contract.Call(opts, result, method, params...)
 18628  }
 18629  
 18630  // Transfer initiates a plain transaction to move funds to the contract, calling
 18631  // its default method if one is available.
 18632  func (_ERC20Mintable *ERC20MintableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 18633  	return _ERC20Mintable.Contract.ERC20MintableTransactor.contract.Transfer(opts)
 18634  }
 18635  
 18636  // Transact invokes the (paid) contract method with params as input values.
 18637  func (_ERC20Mintable *ERC20MintableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 18638  	return _ERC20Mintable.Contract.ERC20MintableTransactor.contract.Transact(opts, method, params...)
 18639  }
 18640  
 18641  // Call invokes the (constant) contract method with params as input values and
 18642  // sets the output to result. The result type might be a single field for simple
 18643  // returns, a slice of interfaces for anonymous returns and a struct for named
 18644  // returns.
 18645  func (_ERC20Mintable *ERC20MintableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 18646  	return _ERC20Mintable.Contract.contract.Call(opts, result, method, params...)
 18647  }
 18648  
 18649  // Transfer initiates a plain transaction to move funds to the contract, calling
 18650  // its default method if one is available.
 18651  func (_ERC20Mintable *ERC20MintableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 18652  	return _ERC20Mintable.Contract.contract.Transfer(opts)
 18653  }
 18654  
 18655  // Transact invokes the (paid) contract method with params as input values.
 18656  func (_ERC20Mintable *ERC20MintableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 18657  	return _ERC20Mintable.Contract.contract.Transact(opts, method, params...)
 18658  }
 18659  
 18660  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 18661  //
 18662  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 18663  func (_ERC20Mintable *ERC20MintableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
 18664  	var (
 18665  		ret0 = new(*big.Int)
 18666  	)
 18667  	out := ret0
 18668  	err := _ERC20Mintable.contract.Call(opts, out, "allowance", owner, spender)
 18669  	return *ret0, err
 18670  }
 18671  
 18672  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 18673  //
 18674  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 18675  func (_ERC20Mintable *ERC20MintableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
 18676  	return _ERC20Mintable.Contract.Allowance(&_ERC20Mintable.CallOpts, owner, spender)
 18677  }
 18678  
 18679  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 18680  //
 18681  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 18682  func (_ERC20Mintable *ERC20MintableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
 18683  	return _ERC20Mintable.Contract.Allowance(&_ERC20Mintable.CallOpts, owner, spender)
 18684  }
 18685  
 18686  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 18687  //
 18688  // Solidity: function balanceOf(address account) view returns(uint256)
 18689  func (_ERC20Mintable *ERC20MintableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
 18690  	var (
 18691  		ret0 = new(*big.Int)
 18692  	)
 18693  	out := ret0
 18694  	err := _ERC20Mintable.contract.Call(opts, out, "balanceOf", account)
 18695  	return *ret0, err
 18696  }
 18697  
 18698  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 18699  //
 18700  // Solidity: function balanceOf(address account) view returns(uint256)
 18701  func (_ERC20Mintable *ERC20MintableSession) BalanceOf(account common.Address) (*big.Int, error) {
 18702  	return _ERC20Mintable.Contract.BalanceOf(&_ERC20Mintable.CallOpts, account)
 18703  }
 18704  
 18705  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 18706  //
 18707  // Solidity: function balanceOf(address account) view returns(uint256)
 18708  func (_ERC20Mintable *ERC20MintableCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
 18709  	return _ERC20Mintable.Contract.BalanceOf(&_ERC20Mintable.CallOpts, account)
 18710  }
 18711  
 18712  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 18713  //
 18714  // Solidity: function isMinter(address account) view returns(bool)
 18715  func (_ERC20Mintable *ERC20MintableCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
 18716  	var (
 18717  		ret0 = new(bool)
 18718  	)
 18719  	out := ret0
 18720  	err := _ERC20Mintable.contract.Call(opts, out, "isMinter", account)
 18721  	return *ret0, err
 18722  }
 18723  
 18724  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 18725  //
 18726  // Solidity: function isMinter(address account) view returns(bool)
 18727  func (_ERC20Mintable *ERC20MintableSession) IsMinter(account common.Address) (bool, error) {
 18728  	return _ERC20Mintable.Contract.IsMinter(&_ERC20Mintable.CallOpts, account)
 18729  }
 18730  
 18731  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 18732  //
 18733  // Solidity: function isMinter(address account) view returns(bool)
 18734  func (_ERC20Mintable *ERC20MintableCallerSession) IsMinter(account common.Address) (bool, error) {
 18735  	return _ERC20Mintable.Contract.IsMinter(&_ERC20Mintable.CallOpts, account)
 18736  }
 18737  
 18738  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 18739  //
 18740  // Solidity: function totalSupply() view returns(uint256)
 18741  func (_ERC20Mintable *ERC20MintableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
 18742  	var (
 18743  		ret0 = new(*big.Int)
 18744  	)
 18745  	out := ret0
 18746  	err := _ERC20Mintable.contract.Call(opts, out, "totalSupply")
 18747  	return *ret0, err
 18748  }
 18749  
 18750  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 18751  //
 18752  // Solidity: function totalSupply() view returns(uint256)
 18753  func (_ERC20Mintable *ERC20MintableSession) TotalSupply() (*big.Int, error) {
 18754  	return _ERC20Mintable.Contract.TotalSupply(&_ERC20Mintable.CallOpts)
 18755  }
 18756  
 18757  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 18758  //
 18759  // Solidity: function totalSupply() view returns(uint256)
 18760  func (_ERC20Mintable *ERC20MintableCallerSession) TotalSupply() (*big.Int, error) {
 18761  	return _ERC20Mintable.Contract.TotalSupply(&_ERC20Mintable.CallOpts)
 18762  }
 18763  
 18764  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 18765  //
 18766  // Solidity: function addMinter(address account) returns()
 18767  func (_ERC20Mintable *ERC20MintableTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
 18768  	return _ERC20Mintable.contract.Transact(opts, "addMinter", account)
 18769  }
 18770  
 18771  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 18772  //
 18773  // Solidity: function addMinter(address account) returns()
 18774  func (_ERC20Mintable *ERC20MintableSession) AddMinter(account common.Address) (*types.Transaction, error) {
 18775  	return _ERC20Mintable.Contract.AddMinter(&_ERC20Mintable.TransactOpts, account)
 18776  }
 18777  
 18778  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 18779  //
 18780  // Solidity: function addMinter(address account) returns()
 18781  func (_ERC20Mintable *ERC20MintableTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
 18782  	return _ERC20Mintable.Contract.AddMinter(&_ERC20Mintable.TransactOpts, account)
 18783  }
 18784  
 18785  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 18786  //
 18787  // Solidity: function approve(address spender, uint256 value) returns(bool)
 18788  func (_ERC20Mintable *ERC20MintableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) {
 18789  	return _ERC20Mintable.contract.Transact(opts, "approve", spender, value)
 18790  }
 18791  
 18792  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 18793  //
 18794  // Solidity: function approve(address spender, uint256 value) returns(bool)
 18795  func (_ERC20Mintable *ERC20MintableSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
 18796  	return _ERC20Mintable.Contract.Approve(&_ERC20Mintable.TransactOpts, spender, value)
 18797  }
 18798  
 18799  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 18800  //
 18801  // Solidity: function approve(address spender, uint256 value) returns(bool)
 18802  func (_ERC20Mintable *ERC20MintableTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
 18803  	return _ERC20Mintable.Contract.Approve(&_ERC20Mintable.TransactOpts, spender, value)
 18804  }
 18805  
 18806  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 18807  //
 18808  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 18809  func (_ERC20Mintable *ERC20MintableTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 18810  	return _ERC20Mintable.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
 18811  }
 18812  
 18813  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 18814  //
 18815  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 18816  func (_ERC20Mintable *ERC20MintableSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 18817  	return _ERC20Mintable.Contract.DecreaseAllowance(&_ERC20Mintable.TransactOpts, spender, subtractedValue)
 18818  }
 18819  
 18820  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 18821  //
 18822  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 18823  func (_ERC20Mintable *ERC20MintableTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 18824  	return _ERC20Mintable.Contract.DecreaseAllowance(&_ERC20Mintable.TransactOpts, spender, subtractedValue)
 18825  }
 18826  
 18827  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 18828  //
 18829  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 18830  func (_ERC20Mintable *ERC20MintableTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 18831  	return _ERC20Mintable.contract.Transact(opts, "increaseAllowance", spender, addedValue)
 18832  }
 18833  
 18834  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 18835  //
 18836  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 18837  func (_ERC20Mintable *ERC20MintableSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 18838  	return _ERC20Mintable.Contract.IncreaseAllowance(&_ERC20Mintable.TransactOpts, spender, addedValue)
 18839  }
 18840  
 18841  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 18842  //
 18843  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 18844  func (_ERC20Mintable *ERC20MintableTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 18845  	return _ERC20Mintable.Contract.IncreaseAllowance(&_ERC20Mintable.TransactOpts, spender, addedValue)
 18846  }
 18847  
 18848  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
 18849  //
 18850  // Solidity: function mint(address account, uint256 amount) returns(bool)
 18851  func (_ERC20Mintable *ERC20MintableTransactor) Mint(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) {
 18852  	return _ERC20Mintable.contract.Transact(opts, "mint", account, amount)
 18853  }
 18854  
 18855  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
 18856  //
 18857  // Solidity: function mint(address account, uint256 amount) returns(bool)
 18858  func (_ERC20Mintable *ERC20MintableSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) {
 18859  	return _ERC20Mintable.Contract.Mint(&_ERC20Mintable.TransactOpts, account, amount)
 18860  }
 18861  
 18862  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
 18863  //
 18864  // Solidity: function mint(address account, uint256 amount) returns(bool)
 18865  func (_ERC20Mintable *ERC20MintableTransactorSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) {
 18866  	return _ERC20Mintable.Contract.Mint(&_ERC20Mintable.TransactOpts, account, amount)
 18867  }
 18868  
 18869  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 18870  //
 18871  // Solidity: function renounceMinter() returns()
 18872  func (_ERC20Mintable *ERC20MintableTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
 18873  	return _ERC20Mintable.contract.Transact(opts, "renounceMinter")
 18874  }
 18875  
 18876  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 18877  //
 18878  // Solidity: function renounceMinter() returns()
 18879  func (_ERC20Mintable *ERC20MintableSession) RenounceMinter() (*types.Transaction, error) {
 18880  	return _ERC20Mintable.Contract.RenounceMinter(&_ERC20Mintable.TransactOpts)
 18881  }
 18882  
 18883  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 18884  //
 18885  // Solidity: function renounceMinter() returns()
 18886  func (_ERC20Mintable *ERC20MintableTransactorSession) RenounceMinter() (*types.Transaction, error) {
 18887  	return _ERC20Mintable.Contract.RenounceMinter(&_ERC20Mintable.TransactOpts)
 18888  }
 18889  
 18890  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 18891  //
 18892  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 18893  func (_ERC20Mintable *ERC20MintableTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 18894  	return _ERC20Mintable.contract.Transact(opts, "transfer", recipient, amount)
 18895  }
 18896  
 18897  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 18898  //
 18899  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 18900  func (_ERC20Mintable *ERC20MintableSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 18901  	return _ERC20Mintable.Contract.Transfer(&_ERC20Mintable.TransactOpts, recipient, amount)
 18902  }
 18903  
 18904  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 18905  //
 18906  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 18907  func (_ERC20Mintable *ERC20MintableTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 18908  	return _ERC20Mintable.Contract.Transfer(&_ERC20Mintable.TransactOpts, recipient, amount)
 18909  }
 18910  
 18911  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 18912  //
 18913  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 18914  func (_ERC20Mintable *ERC20MintableTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 18915  	return _ERC20Mintable.contract.Transact(opts, "transferFrom", sender, recipient, amount)
 18916  }
 18917  
 18918  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 18919  //
 18920  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 18921  func (_ERC20Mintable *ERC20MintableSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 18922  	return _ERC20Mintable.Contract.TransferFrom(&_ERC20Mintable.TransactOpts, sender, recipient, amount)
 18923  }
 18924  
 18925  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 18926  //
 18927  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 18928  func (_ERC20Mintable *ERC20MintableTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 18929  	return _ERC20Mintable.Contract.TransferFrom(&_ERC20Mintable.TransactOpts, sender, recipient, amount)
 18930  }
 18931  
 18932  // 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.
 18933  type ERC20MintableApprovalIterator struct {
 18934  	Event *ERC20MintableApproval // Event containing the contract specifics and raw log
 18935  
 18936  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 18937  	event    string              // Event name to use for unpacking event data
 18938  
 18939  	logs chan types.Log      // Log channel receiving the found contract events
 18940  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 18941  	done bool                // Whether the subscription completed delivering logs
 18942  	fail error               // Occurred error to stop iteration
 18943  }
 18944  
 18945  // Next advances the iterator to the subsequent event, returning whether there
 18946  // are any more events found. In case of a retrieval or parsing error, false is
 18947  // returned and Error() can be queried for the exact failure.
 18948  func (it *ERC20MintableApprovalIterator) Next() bool {
 18949  	// If the iterator failed, stop iterating
 18950  	if it.fail != nil {
 18951  		return false
 18952  	}
 18953  	// If the iterator completed, deliver directly whatever's available
 18954  	if it.done {
 18955  		select {
 18956  		case log := <-it.logs:
 18957  			it.Event = new(ERC20MintableApproval)
 18958  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 18959  				it.fail = err
 18960  				return false
 18961  			}
 18962  			it.Event.Raw = log
 18963  			return true
 18964  
 18965  		default:
 18966  			return false
 18967  		}
 18968  	}
 18969  	// Iterator still in progress, wait for either a data or an error event
 18970  	select {
 18971  	case log := <-it.logs:
 18972  		it.Event = new(ERC20MintableApproval)
 18973  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 18974  			it.fail = err
 18975  			return false
 18976  		}
 18977  		it.Event.Raw = log
 18978  		return true
 18979  
 18980  	case err := <-it.sub.Err():
 18981  		it.done = true
 18982  		it.fail = err
 18983  		return it.Next()
 18984  	}
 18985  }
 18986  
 18987  // Error returns any retrieval or parsing error occurred during filtering.
 18988  func (it *ERC20MintableApprovalIterator) Error() error {
 18989  	return it.fail
 18990  }
 18991  
 18992  // Close terminates the iteration process, releasing any pending underlying
 18993  // resources.
 18994  func (it *ERC20MintableApprovalIterator) Close() error {
 18995  	it.sub.Unsubscribe()
 18996  	return nil
 18997  }
 18998  
 18999  // ERC20MintableApproval represents a Approval event raised by the ERC20Mintable contract.
 19000  type ERC20MintableApproval struct {
 19001  	Owner   common.Address
 19002  	Spender common.Address
 19003  	Value   *big.Int
 19004  	Raw     types.Log // Blockchain specific contextual infos
 19005  }
 19006  
 19007  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 19008  //
 19009  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 19010  func (_ERC20Mintable *ERC20MintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20MintableApprovalIterator, error) {
 19011  
 19012  	var ownerRule []interface{}
 19013  	for _, ownerItem := range owner {
 19014  		ownerRule = append(ownerRule, ownerItem)
 19015  	}
 19016  	var spenderRule []interface{}
 19017  	for _, spenderItem := range spender {
 19018  		spenderRule = append(spenderRule, spenderItem)
 19019  	}
 19020  
 19021  	logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
 19022  	if err != nil {
 19023  		return nil, err
 19024  	}
 19025  	return &ERC20MintableApprovalIterator{contract: _ERC20Mintable.contract, event: "Approval", logs: logs, sub: sub}, nil
 19026  }
 19027  
 19028  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 19029  //
 19030  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 19031  func (_ERC20Mintable *ERC20MintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20MintableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
 19032  
 19033  	var ownerRule []interface{}
 19034  	for _, ownerItem := range owner {
 19035  		ownerRule = append(ownerRule, ownerItem)
 19036  	}
 19037  	var spenderRule []interface{}
 19038  	for _, spenderItem := range spender {
 19039  		spenderRule = append(spenderRule, spenderItem)
 19040  	}
 19041  
 19042  	logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
 19043  	if err != nil {
 19044  		return nil, err
 19045  	}
 19046  	return event.NewSubscription(func(quit <-chan struct{}) error {
 19047  		defer sub.Unsubscribe()
 19048  		for {
 19049  			select {
 19050  			case log := <-logs:
 19051  				// New log arrived, parse the event and forward to the user
 19052  				event := new(ERC20MintableApproval)
 19053  				if err := _ERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil {
 19054  					return err
 19055  				}
 19056  				event.Raw = log
 19057  
 19058  				select {
 19059  				case sink <- event:
 19060  				case err := <-sub.Err():
 19061  					return err
 19062  				case <-quit:
 19063  					return nil
 19064  				}
 19065  			case err := <-sub.Err():
 19066  				return err
 19067  			case <-quit:
 19068  				return nil
 19069  			}
 19070  		}
 19071  	}), nil
 19072  }
 19073  
 19074  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 19075  //
 19076  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 19077  func (_ERC20Mintable *ERC20MintableFilterer) ParseApproval(log types.Log) (*ERC20MintableApproval, error) {
 19078  	event := new(ERC20MintableApproval)
 19079  	if err := _ERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil {
 19080  		return nil, err
 19081  	}
 19082  	return event, nil
 19083  }
 19084  
 19085  // 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.
 19086  type ERC20MintableMinterAddedIterator struct {
 19087  	Event *ERC20MintableMinterAdded // Event containing the contract specifics and raw log
 19088  
 19089  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 19090  	event    string              // Event name to use for unpacking event data
 19091  
 19092  	logs chan types.Log      // Log channel receiving the found contract events
 19093  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 19094  	done bool                // Whether the subscription completed delivering logs
 19095  	fail error               // Occurred error to stop iteration
 19096  }
 19097  
 19098  // Next advances the iterator to the subsequent event, returning whether there
 19099  // are any more events found. In case of a retrieval or parsing error, false is
 19100  // returned and Error() can be queried for the exact failure.
 19101  func (it *ERC20MintableMinterAddedIterator) Next() bool {
 19102  	// If the iterator failed, stop iterating
 19103  	if it.fail != nil {
 19104  		return false
 19105  	}
 19106  	// If the iterator completed, deliver directly whatever's available
 19107  	if it.done {
 19108  		select {
 19109  		case log := <-it.logs:
 19110  			it.Event = new(ERC20MintableMinterAdded)
 19111  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 19112  				it.fail = err
 19113  				return false
 19114  			}
 19115  			it.Event.Raw = log
 19116  			return true
 19117  
 19118  		default:
 19119  			return false
 19120  		}
 19121  	}
 19122  	// Iterator still in progress, wait for either a data or an error event
 19123  	select {
 19124  	case log := <-it.logs:
 19125  		it.Event = new(ERC20MintableMinterAdded)
 19126  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 19127  			it.fail = err
 19128  			return false
 19129  		}
 19130  		it.Event.Raw = log
 19131  		return true
 19132  
 19133  	case err := <-it.sub.Err():
 19134  		it.done = true
 19135  		it.fail = err
 19136  		return it.Next()
 19137  	}
 19138  }
 19139  
 19140  // Error returns any retrieval or parsing error occurred during filtering.
 19141  func (it *ERC20MintableMinterAddedIterator) Error() error {
 19142  	return it.fail
 19143  }
 19144  
 19145  // Close terminates the iteration process, releasing any pending underlying
 19146  // resources.
 19147  func (it *ERC20MintableMinterAddedIterator) Close() error {
 19148  	it.sub.Unsubscribe()
 19149  	return nil
 19150  }
 19151  
 19152  // ERC20MintableMinterAdded represents a MinterAdded event raised by the ERC20Mintable contract.
 19153  type ERC20MintableMinterAdded struct {
 19154  	Account common.Address
 19155  	Raw     types.Log // Blockchain specific contextual infos
 19156  }
 19157  
 19158  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 19159  //
 19160  // Solidity: event MinterAdded(address indexed account)
 19161  func (_ERC20Mintable *ERC20MintableFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ERC20MintableMinterAddedIterator, error) {
 19162  
 19163  	var accountRule []interface{}
 19164  	for _, accountItem := range account {
 19165  		accountRule = append(accountRule, accountItem)
 19166  	}
 19167  
 19168  	logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "MinterAdded", accountRule)
 19169  	if err != nil {
 19170  		return nil, err
 19171  	}
 19172  	return &ERC20MintableMinterAddedIterator{contract: _ERC20Mintable.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
 19173  }
 19174  
 19175  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 19176  //
 19177  // Solidity: event MinterAdded(address indexed account)
 19178  func (_ERC20Mintable *ERC20MintableFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ERC20MintableMinterAdded, account []common.Address) (event.Subscription, error) {
 19179  
 19180  	var accountRule []interface{}
 19181  	for _, accountItem := range account {
 19182  		accountRule = append(accountRule, accountItem)
 19183  	}
 19184  
 19185  	logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "MinterAdded", accountRule)
 19186  	if err != nil {
 19187  		return nil, err
 19188  	}
 19189  	return event.NewSubscription(func(quit <-chan struct{}) error {
 19190  		defer sub.Unsubscribe()
 19191  		for {
 19192  			select {
 19193  			case log := <-logs:
 19194  				// New log arrived, parse the event and forward to the user
 19195  				event := new(ERC20MintableMinterAdded)
 19196  				if err := _ERC20Mintable.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 19197  					return err
 19198  				}
 19199  				event.Raw = log
 19200  
 19201  				select {
 19202  				case sink <- event:
 19203  				case err := <-sub.Err():
 19204  					return err
 19205  				case <-quit:
 19206  					return nil
 19207  				}
 19208  			case err := <-sub.Err():
 19209  				return err
 19210  			case <-quit:
 19211  				return nil
 19212  			}
 19213  		}
 19214  	}), nil
 19215  }
 19216  
 19217  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 19218  //
 19219  // Solidity: event MinterAdded(address indexed account)
 19220  func (_ERC20Mintable *ERC20MintableFilterer) ParseMinterAdded(log types.Log) (*ERC20MintableMinterAdded, error) {
 19221  	event := new(ERC20MintableMinterAdded)
 19222  	if err := _ERC20Mintable.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 19223  		return nil, err
 19224  	}
 19225  	return event, nil
 19226  }
 19227  
 19228  // 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.
 19229  type ERC20MintableMinterRemovedIterator struct {
 19230  	Event *ERC20MintableMinterRemoved // Event containing the contract specifics and raw log
 19231  
 19232  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 19233  	event    string              // Event name to use for unpacking event data
 19234  
 19235  	logs chan types.Log      // Log channel receiving the found contract events
 19236  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 19237  	done bool                // Whether the subscription completed delivering logs
 19238  	fail error               // Occurred error to stop iteration
 19239  }
 19240  
 19241  // Next advances the iterator to the subsequent event, returning whether there
 19242  // are any more events found. In case of a retrieval or parsing error, false is
 19243  // returned and Error() can be queried for the exact failure.
 19244  func (it *ERC20MintableMinterRemovedIterator) Next() bool {
 19245  	// If the iterator failed, stop iterating
 19246  	if it.fail != nil {
 19247  		return false
 19248  	}
 19249  	// If the iterator completed, deliver directly whatever's available
 19250  	if it.done {
 19251  		select {
 19252  		case log := <-it.logs:
 19253  			it.Event = new(ERC20MintableMinterRemoved)
 19254  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 19255  				it.fail = err
 19256  				return false
 19257  			}
 19258  			it.Event.Raw = log
 19259  			return true
 19260  
 19261  		default:
 19262  			return false
 19263  		}
 19264  	}
 19265  	// Iterator still in progress, wait for either a data or an error event
 19266  	select {
 19267  	case log := <-it.logs:
 19268  		it.Event = new(ERC20MintableMinterRemoved)
 19269  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 19270  			it.fail = err
 19271  			return false
 19272  		}
 19273  		it.Event.Raw = log
 19274  		return true
 19275  
 19276  	case err := <-it.sub.Err():
 19277  		it.done = true
 19278  		it.fail = err
 19279  		return it.Next()
 19280  	}
 19281  }
 19282  
 19283  // Error returns any retrieval or parsing error occurred during filtering.
 19284  func (it *ERC20MintableMinterRemovedIterator) Error() error {
 19285  	return it.fail
 19286  }
 19287  
 19288  // Close terminates the iteration process, releasing any pending underlying
 19289  // resources.
 19290  func (it *ERC20MintableMinterRemovedIterator) Close() error {
 19291  	it.sub.Unsubscribe()
 19292  	return nil
 19293  }
 19294  
 19295  // ERC20MintableMinterRemoved represents a MinterRemoved event raised by the ERC20Mintable contract.
 19296  type ERC20MintableMinterRemoved struct {
 19297  	Account common.Address
 19298  	Raw     types.Log // Blockchain specific contextual infos
 19299  }
 19300  
 19301  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 19302  //
 19303  // Solidity: event MinterRemoved(address indexed account)
 19304  func (_ERC20Mintable *ERC20MintableFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ERC20MintableMinterRemovedIterator, error) {
 19305  
 19306  	var accountRule []interface{}
 19307  	for _, accountItem := range account {
 19308  		accountRule = append(accountRule, accountItem)
 19309  	}
 19310  
 19311  	logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "MinterRemoved", accountRule)
 19312  	if err != nil {
 19313  		return nil, err
 19314  	}
 19315  	return &ERC20MintableMinterRemovedIterator{contract: _ERC20Mintable.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
 19316  }
 19317  
 19318  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 19319  //
 19320  // Solidity: event MinterRemoved(address indexed account)
 19321  func (_ERC20Mintable *ERC20MintableFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ERC20MintableMinterRemoved, account []common.Address) (event.Subscription, error) {
 19322  
 19323  	var accountRule []interface{}
 19324  	for _, accountItem := range account {
 19325  		accountRule = append(accountRule, accountItem)
 19326  	}
 19327  
 19328  	logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "MinterRemoved", accountRule)
 19329  	if err != nil {
 19330  		return nil, err
 19331  	}
 19332  	return event.NewSubscription(func(quit <-chan struct{}) error {
 19333  		defer sub.Unsubscribe()
 19334  		for {
 19335  			select {
 19336  			case log := <-logs:
 19337  				// New log arrived, parse the event and forward to the user
 19338  				event := new(ERC20MintableMinterRemoved)
 19339  				if err := _ERC20Mintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 19340  					return err
 19341  				}
 19342  				event.Raw = log
 19343  
 19344  				select {
 19345  				case sink <- event:
 19346  				case err := <-sub.Err():
 19347  					return err
 19348  				case <-quit:
 19349  					return nil
 19350  				}
 19351  			case err := <-sub.Err():
 19352  				return err
 19353  			case <-quit:
 19354  				return nil
 19355  			}
 19356  		}
 19357  	}), nil
 19358  }
 19359  
 19360  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 19361  //
 19362  // Solidity: event MinterRemoved(address indexed account)
 19363  func (_ERC20Mintable *ERC20MintableFilterer) ParseMinterRemoved(log types.Log) (*ERC20MintableMinterRemoved, error) {
 19364  	event := new(ERC20MintableMinterRemoved)
 19365  	if err := _ERC20Mintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 19366  		return nil, err
 19367  	}
 19368  	return event, nil
 19369  }
 19370  
 19371  // 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.
 19372  type ERC20MintableTransferIterator struct {
 19373  	Event *ERC20MintableTransfer // Event containing the contract specifics and raw log
 19374  
 19375  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 19376  	event    string              // Event name to use for unpacking event data
 19377  
 19378  	logs chan types.Log      // Log channel receiving the found contract events
 19379  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 19380  	done bool                // Whether the subscription completed delivering logs
 19381  	fail error               // Occurred error to stop iteration
 19382  }
 19383  
 19384  // Next advances the iterator to the subsequent event, returning whether there
 19385  // are any more events found. In case of a retrieval or parsing error, false is
 19386  // returned and Error() can be queried for the exact failure.
 19387  func (it *ERC20MintableTransferIterator) Next() bool {
 19388  	// If the iterator failed, stop iterating
 19389  	if it.fail != nil {
 19390  		return false
 19391  	}
 19392  	// If the iterator completed, deliver directly whatever's available
 19393  	if it.done {
 19394  		select {
 19395  		case log := <-it.logs:
 19396  			it.Event = new(ERC20MintableTransfer)
 19397  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 19398  				it.fail = err
 19399  				return false
 19400  			}
 19401  			it.Event.Raw = log
 19402  			return true
 19403  
 19404  		default:
 19405  			return false
 19406  		}
 19407  	}
 19408  	// Iterator still in progress, wait for either a data or an error event
 19409  	select {
 19410  	case log := <-it.logs:
 19411  		it.Event = new(ERC20MintableTransfer)
 19412  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 19413  			it.fail = err
 19414  			return false
 19415  		}
 19416  		it.Event.Raw = log
 19417  		return true
 19418  
 19419  	case err := <-it.sub.Err():
 19420  		it.done = true
 19421  		it.fail = err
 19422  		return it.Next()
 19423  	}
 19424  }
 19425  
 19426  // Error returns any retrieval or parsing error occurred during filtering.
 19427  func (it *ERC20MintableTransferIterator) Error() error {
 19428  	return it.fail
 19429  }
 19430  
 19431  // Close terminates the iteration process, releasing any pending underlying
 19432  // resources.
 19433  func (it *ERC20MintableTransferIterator) Close() error {
 19434  	it.sub.Unsubscribe()
 19435  	return nil
 19436  }
 19437  
 19438  // ERC20MintableTransfer represents a Transfer event raised by the ERC20Mintable contract.
 19439  type ERC20MintableTransfer struct {
 19440  	From  common.Address
 19441  	To    common.Address
 19442  	Value *big.Int
 19443  	Raw   types.Log // Blockchain specific contextual infos
 19444  }
 19445  
 19446  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 19447  //
 19448  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 19449  func (_ERC20Mintable *ERC20MintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20MintableTransferIterator, error) {
 19450  
 19451  	var fromRule []interface{}
 19452  	for _, fromItem := range from {
 19453  		fromRule = append(fromRule, fromItem)
 19454  	}
 19455  	var toRule []interface{}
 19456  	for _, toItem := range to {
 19457  		toRule = append(toRule, toItem)
 19458  	}
 19459  
 19460  	logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
 19461  	if err != nil {
 19462  		return nil, err
 19463  	}
 19464  	return &ERC20MintableTransferIterator{contract: _ERC20Mintable.contract, event: "Transfer", logs: logs, sub: sub}, nil
 19465  }
 19466  
 19467  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 19468  //
 19469  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 19470  func (_ERC20Mintable *ERC20MintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20MintableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {
 19471  
 19472  	var fromRule []interface{}
 19473  	for _, fromItem := range from {
 19474  		fromRule = append(fromRule, fromItem)
 19475  	}
 19476  	var toRule []interface{}
 19477  	for _, toItem := range to {
 19478  		toRule = append(toRule, toItem)
 19479  	}
 19480  
 19481  	logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
 19482  	if err != nil {
 19483  		return nil, err
 19484  	}
 19485  	return event.NewSubscription(func(quit <-chan struct{}) error {
 19486  		defer sub.Unsubscribe()
 19487  		for {
 19488  			select {
 19489  			case log := <-logs:
 19490  				// New log arrived, parse the event and forward to the user
 19491  				event := new(ERC20MintableTransfer)
 19492  				if err := _ERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil {
 19493  					return err
 19494  				}
 19495  				event.Raw = log
 19496  
 19497  				select {
 19498  				case sink <- event:
 19499  				case err := <-sub.Err():
 19500  					return err
 19501  				case <-quit:
 19502  					return nil
 19503  				}
 19504  			case err := <-sub.Err():
 19505  				return err
 19506  			case <-quit:
 19507  				return nil
 19508  			}
 19509  		}
 19510  	}), nil
 19511  }
 19512  
 19513  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 19514  //
 19515  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 19516  func (_ERC20Mintable *ERC20MintableFilterer) ParseTransfer(log types.Log) (*ERC20MintableTransfer, error) {
 19517  	event := new(ERC20MintableTransfer)
 19518  	if err := _ERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil {
 19519  		return nil, err
 19520  	}
 19521  	return event, nil
 19522  }
 19523  
 19524  // ERC721ABI is the input ABI used to generate the binding from.
 19525  const ERC721ABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
 19526  
 19527  // ERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 19528  const ERC721BinRuntime = `608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820729ef652fa5b3de930aa2053816415426d90b8ede7f21175faa42825db4887780029`
 19529  
 19530  // ERC721FuncSigs maps the 4-byte function signature to its string representation.
 19531  var ERC721FuncSigs = map[string]string{
 19532  	"095ea7b3": "approve(address,uint256)",
 19533  	"70a08231": "balanceOf(address)",
 19534  	"081812fc": "getApproved(uint256)",
 19535  	"e985e9c5": "isApprovedForAll(address,address)",
 19536  	"6352211e": "ownerOf(uint256)",
 19537  	"42842e0e": "safeTransferFrom(address,address,uint256)",
 19538  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
 19539  	"a22cb465": "setApprovalForAll(address,bool)",
 19540  	"01ffc9a7": "supportsInterface(bytes4)",
 19541  	"23b872dd": "transferFrom(address,address,uint256)",
 19542  }
 19543  
 19544  // ERC721Bin is the compiled bytecode used for deploying new contracts.
 19545  var ERC721Bin = "0x608060405234801561001057600080fd5b506100276301ffc9a760e01b61004260201b60201c565b61003d6380ac58cd60e01b61004260201b60201c565b610110565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b610d448061011f6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820729ef652fa5b3de930aa2053816415426d90b8ede7f21175faa42825db4887780029"
 19546  
 19547  // DeployERC721 deploys a new Klaytn contract, binding an instance of ERC721 to it.
 19548  func DeployERC721(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC721, error) {
 19549  	parsed, err := abi.JSON(strings.NewReader(ERC721ABI))
 19550  	if err != nil {
 19551  		return common.Address{}, nil, nil, err
 19552  	}
 19553  
 19554  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC721Bin), backend)
 19555  	if err != nil {
 19556  		return common.Address{}, nil, nil, err
 19557  	}
 19558  	return address, tx, &ERC721{ERC721Caller: ERC721Caller{contract: contract}, ERC721Transactor: ERC721Transactor{contract: contract}, ERC721Filterer: ERC721Filterer{contract: contract}}, nil
 19559  }
 19560  
 19561  // ERC721 is an auto generated Go binding around a Klaytn contract.
 19562  type ERC721 struct {
 19563  	ERC721Caller     // Read-only binding to the contract
 19564  	ERC721Transactor // Write-only binding to the contract
 19565  	ERC721Filterer   // Log filterer for contract events
 19566  }
 19567  
 19568  // ERC721Caller is an auto generated read-only Go binding around a Klaytn contract.
 19569  type ERC721Caller struct {
 19570  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 19571  }
 19572  
 19573  // ERC721Transactor is an auto generated write-only Go binding around a Klaytn contract.
 19574  type ERC721Transactor struct {
 19575  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 19576  }
 19577  
 19578  // ERC721Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
 19579  type ERC721Filterer struct {
 19580  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 19581  }
 19582  
 19583  // ERC721Session is an auto generated Go binding around a Klaytn contract,
 19584  // with pre-set call and transact options.
 19585  type ERC721Session struct {
 19586  	Contract     *ERC721           // Generic contract binding to set the session for
 19587  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 19588  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 19589  }
 19590  
 19591  // ERC721CallerSession is an auto generated read-only Go binding around a Klaytn contract,
 19592  // with pre-set call options.
 19593  type ERC721CallerSession struct {
 19594  	Contract *ERC721Caller // Generic contract caller binding to set the session for
 19595  	CallOpts bind.CallOpts // Call options to use throughout this session
 19596  }
 19597  
 19598  // ERC721TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 19599  // with pre-set transact options.
 19600  type ERC721TransactorSession struct {
 19601  	Contract     *ERC721Transactor // Generic contract transactor binding to set the session for
 19602  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 19603  }
 19604  
 19605  // ERC721Raw is an auto generated low-level Go binding around a Klaytn contract.
 19606  type ERC721Raw struct {
 19607  	Contract *ERC721 // Generic contract binding to access the raw methods on
 19608  }
 19609  
 19610  // ERC721CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 19611  type ERC721CallerRaw struct {
 19612  	Contract *ERC721Caller // Generic read-only contract binding to access the raw methods on
 19613  }
 19614  
 19615  // ERC721TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 19616  type ERC721TransactorRaw struct {
 19617  	Contract *ERC721Transactor // Generic write-only contract binding to access the raw methods on
 19618  }
 19619  
 19620  // NewERC721 creates a new instance of ERC721, bound to a specific deployed contract.
 19621  func NewERC721(address common.Address, backend bind.ContractBackend) (*ERC721, error) {
 19622  	contract, err := bindERC721(address, backend, backend, backend)
 19623  	if err != nil {
 19624  		return nil, err
 19625  	}
 19626  	return &ERC721{ERC721Caller: ERC721Caller{contract: contract}, ERC721Transactor: ERC721Transactor{contract: contract}, ERC721Filterer: ERC721Filterer{contract: contract}}, nil
 19627  }
 19628  
 19629  // NewERC721Caller creates a new read-only instance of ERC721, bound to a specific deployed contract.
 19630  func NewERC721Caller(address common.Address, caller bind.ContractCaller) (*ERC721Caller, error) {
 19631  	contract, err := bindERC721(address, caller, nil, nil)
 19632  	if err != nil {
 19633  		return nil, err
 19634  	}
 19635  	return &ERC721Caller{contract: contract}, nil
 19636  }
 19637  
 19638  // NewERC721Transactor creates a new write-only instance of ERC721, bound to a specific deployed contract.
 19639  func NewERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC721Transactor, error) {
 19640  	contract, err := bindERC721(address, nil, transactor, nil)
 19641  	if err != nil {
 19642  		return nil, err
 19643  	}
 19644  	return &ERC721Transactor{contract: contract}, nil
 19645  }
 19646  
 19647  // NewERC721Filterer creates a new log filterer instance of ERC721, bound to a specific deployed contract.
 19648  func NewERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC721Filterer, error) {
 19649  	contract, err := bindERC721(address, nil, nil, filterer)
 19650  	if err != nil {
 19651  		return nil, err
 19652  	}
 19653  	return &ERC721Filterer{contract: contract}, nil
 19654  }
 19655  
 19656  // bindERC721 binds a generic wrapper to an already deployed contract.
 19657  func bindERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 19658  	parsed, err := abi.JSON(strings.NewReader(ERC721ABI))
 19659  	if err != nil {
 19660  		return nil, err
 19661  	}
 19662  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 19663  }
 19664  
 19665  // Call invokes the (constant) contract method with params as input values and
 19666  // sets the output to result. The result type might be a single field for simple
 19667  // returns, a slice of interfaces for anonymous returns and a struct for named
 19668  // returns.
 19669  func (_ERC721 *ERC721Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 19670  	return _ERC721.Contract.ERC721Caller.contract.Call(opts, result, method, params...)
 19671  }
 19672  
 19673  // Transfer initiates a plain transaction to move funds to the contract, calling
 19674  // its default method if one is available.
 19675  func (_ERC721 *ERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 19676  	return _ERC721.Contract.ERC721Transactor.contract.Transfer(opts)
 19677  }
 19678  
 19679  // Transact invokes the (paid) contract method with params as input values.
 19680  func (_ERC721 *ERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 19681  	return _ERC721.Contract.ERC721Transactor.contract.Transact(opts, method, params...)
 19682  }
 19683  
 19684  // Call invokes the (constant) contract method with params as input values and
 19685  // sets the output to result. The result type might be a single field for simple
 19686  // returns, a slice of interfaces for anonymous returns and a struct for named
 19687  // returns.
 19688  func (_ERC721 *ERC721CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 19689  	return _ERC721.Contract.contract.Call(opts, result, method, params...)
 19690  }
 19691  
 19692  // Transfer initiates a plain transaction to move funds to the contract, calling
 19693  // its default method if one is available.
 19694  func (_ERC721 *ERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 19695  	return _ERC721.Contract.contract.Transfer(opts)
 19696  }
 19697  
 19698  // Transact invokes the (paid) contract method with params as input values.
 19699  func (_ERC721 *ERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 19700  	return _ERC721.Contract.contract.Transact(opts, method, params...)
 19701  }
 19702  
 19703  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 19704  //
 19705  // Solidity: function balanceOf(address owner) view returns(uint256)
 19706  func (_ERC721 *ERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
 19707  	var (
 19708  		ret0 = new(*big.Int)
 19709  	)
 19710  	out := ret0
 19711  	err := _ERC721.contract.Call(opts, out, "balanceOf", owner)
 19712  	return *ret0, err
 19713  }
 19714  
 19715  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 19716  //
 19717  // Solidity: function balanceOf(address owner) view returns(uint256)
 19718  func (_ERC721 *ERC721Session) BalanceOf(owner common.Address) (*big.Int, error) {
 19719  	return _ERC721.Contract.BalanceOf(&_ERC721.CallOpts, owner)
 19720  }
 19721  
 19722  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 19723  //
 19724  // Solidity: function balanceOf(address owner) view returns(uint256)
 19725  func (_ERC721 *ERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
 19726  	return _ERC721.Contract.BalanceOf(&_ERC721.CallOpts, owner)
 19727  }
 19728  
 19729  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 19730  //
 19731  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 19732  func (_ERC721 *ERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 19733  	var (
 19734  		ret0 = new(common.Address)
 19735  	)
 19736  	out := ret0
 19737  	err := _ERC721.contract.Call(opts, out, "getApproved", tokenId)
 19738  	return *ret0, err
 19739  }
 19740  
 19741  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 19742  //
 19743  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 19744  func (_ERC721 *ERC721Session) GetApproved(tokenId *big.Int) (common.Address, error) {
 19745  	return _ERC721.Contract.GetApproved(&_ERC721.CallOpts, tokenId)
 19746  }
 19747  
 19748  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 19749  //
 19750  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 19751  func (_ERC721 *ERC721CallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 19752  	return _ERC721.Contract.GetApproved(&_ERC721.CallOpts, tokenId)
 19753  }
 19754  
 19755  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 19756  //
 19757  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 19758  func (_ERC721 *ERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
 19759  	var (
 19760  		ret0 = new(bool)
 19761  	)
 19762  	out := ret0
 19763  	err := _ERC721.contract.Call(opts, out, "isApprovedForAll", owner, operator)
 19764  	return *ret0, err
 19765  }
 19766  
 19767  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 19768  //
 19769  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 19770  func (_ERC721 *ERC721Session) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 19771  	return _ERC721.Contract.IsApprovedForAll(&_ERC721.CallOpts, owner, operator)
 19772  }
 19773  
 19774  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 19775  //
 19776  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 19777  func (_ERC721 *ERC721CallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 19778  	return _ERC721.Contract.IsApprovedForAll(&_ERC721.CallOpts, owner, operator)
 19779  }
 19780  
 19781  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 19782  //
 19783  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 19784  func (_ERC721 *ERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 19785  	var (
 19786  		ret0 = new(common.Address)
 19787  	)
 19788  	out := ret0
 19789  	err := _ERC721.contract.Call(opts, out, "ownerOf", tokenId)
 19790  	return *ret0, err
 19791  }
 19792  
 19793  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 19794  //
 19795  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 19796  func (_ERC721 *ERC721Session) OwnerOf(tokenId *big.Int) (common.Address, error) {
 19797  	return _ERC721.Contract.OwnerOf(&_ERC721.CallOpts, tokenId)
 19798  }
 19799  
 19800  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 19801  //
 19802  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 19803  func (_ERC721 *ERC721CallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 19804  	return _ERC721.Contract.OwnerOf(&_ERC721.CallOpts, tokenId)
 19805  }
 19806  
 19807  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 19808  //
 19809  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 19810  func (_ERC721 *ERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
 19811  	var (
 19812  		ret0 = new(bool)
 19813  	)
 19814  	out := ret0
 19815  	err := _ERC721.contract.Call(opts, out, "supportsInterface", interfaceId)
 19816  	return *ret0, err
 19817  }
 19818  
 19819  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 19820  //
 19821  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 19822  func (_ERC721 *ERC721Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
 19823  	return _ERC721.Contract.SupportsInterface(&_ERC721.CallOpts, interfaceId)
 19824  }
 19825  
 19826  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 19827  //
 19828  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 19829  func (_ERC721 *ERC721CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 19830  	return _ERC721.Contract.SupportsInterface(&_ERC721.CallOpts, interfaceId)
 19831  }
 19832  
 19833  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 19834  //
 19835  // Solidity: function approve(address to, uint256 tokenId) returns()
 19836  func (_ERC721 *ERC721Transactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 19837  	return _ERC721.contract.Transact(opts, "approve", to, tokenId)
 19838  }
 19839  
 19840  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 19841  //
 19842  // Solidity: function approve(address to, uint256 tokenId) returns()
 19843  func (_ERC721 *ERC721Session) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 19844  	return _ERC721.Contract.Approve(&_ERC721.TransactOpts, to, tokenId)
 19845  }
 19846  
 19847  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 19848  //
 19849  // Solidity: function approve(address to, uint256 tokenId) returns()
 19850  func (_ERC721 *ERC721TransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 19851  	return _ERC721.Contract.Approve(&_ERC721.TransactOpts, to, tokenId)
 19852  }
 19853  
 19854  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 19855  //
 19856  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 19857  func (_ERC721 *ERC721Transactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 19858  	return _ERC721.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
 19859  }
 19860  
 19861  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 19862  //
 19863  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 19864  func (_ERC721 *ERC721Session) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 19865  	return _ERC721.Contract.SafeTransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
 19866  }
 19867  
 19868  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 19869  //
 19870  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 19871  func (_ERC721 *ERC721TransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 19872  	return _ERC721.Contract.SafeTransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
 19873  }
 19874  
 19875  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 19876  //
 19877  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 19878  func (_ERC721 *ERC721Transactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 19879  	return _ERC721.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
 19880  }
 19881  
 19882  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 19883  //
 19884  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 19885  func (_ERC721 *ERC721Session) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 19886  	return _ERC721.Contract.SafeTransferFrom0(&_ERC721.TransactOpts, from, to, tokenId, _data)
 19887  }
 19888  
 19889  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 19890  //
 19891  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 19892  func (_ERC721 *ERC721TransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 19893  	return _ERC721.Contract.SafeTransferFrom0(&_ERC721.TransactOpts, from, to, tokenId, _data)
 19894  }
 19895  
 19896  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 19897  //
 19898  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 19899  func (_ERC721 *ERC721Transactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
 19900  	return _ERC721.contract.Transact(opts, "setApprovalForAll", to, approved)
 19901  }
 19902  
 19903  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 19904  //
 19905  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 19906  func (_ERC721 *ERC721Session) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
 19907  	return _ERC721.Contract.SetApprovalForAll(&_ERC721.TransactOpts, to, approved)
 19908  }
 19909  
 19910  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 19911  //
 19912  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 19913  func (_ERC721 *ERC721TransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
 19914  	return _ERC721.Contract.SetApprovalForAll(&_ERC721.TransactOpts, to, approved)
 19915  }
 19916  
 19917  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 19918  //
 19919  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 19920  func (_ERC721 *ERC721Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 19921  	return _ERC721.contract.Transact(opts, "transferFrom", from, to, tokenId)
 19922  }
 19923  
 19924  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 19925  //
 19926  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 19927  func (_ERC721 *ERC721Session) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 19928  	return _ERC721.Contract.TransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
 19929  }
 19930  
 19931  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 19932  //
 19933  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 19934  func (_ERC721 *ERC721TransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 19935  	return _ERC721.Contract.TransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
 19936  }
 19937  
 19938  // ERC721ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721 contract.
 19939  type ERC721ApprovalIterator struct {
 19940  	Event *ERC721Approval // Event containing the contract specifics and raw log
 19941  
 19942  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 19943  	event    string              // Event name to use for unpacking event data
 19944  
 19945  	logs chan types.Log      // Log channel receiving the found contract events
 19946  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 19947  	done bool                // Whether the subscription completed delivering logs
 19948  	fail error               // Occurred error to stop iteration
 19949  }
 19950  
 19951  // Next advances the iterator to the subsequent event, returning whether there
 19952  // are any more events found. In case of a retrieval or parsing error, false is
 19953  // returned and Error() can be queried for the exact failure.
 19954  func (it *ERC721ApprovalIterator) Next() bool {
 19955  	// If the iterator failed, stop iterating
 19956  	if it.fail != nil {
 19957  		return false
 19958  	}
 19959  	// If the iterator completed, deliver directly whatever's available
 19960  	if it.done {
 19961  		select {
 19962  		case log := <-it.logs:
 19963  			it.Event = new(ERC721Approval)
 19964  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 19965  				it.fail = err
 19966  				return false
 19967  			}
 19968  			it.Event.Raw = log
 19969  			return true
 19970  
 19971  		default:
 19972  			return false
 19973  		}
 19974  	}
 19975  	// Iterator still in progress, wait for either a data or an error event
 19976  	select {
 19977  	case log := <-it.logs:
 19978  		it.Event = new(ERC721Approval)
 19979  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 19980  			it.fail = err
 19981  			return false
 19982  		}
 19983  		it.Event.Raw = log
 19984  		return true
 19985  
 19986  	case err := <-it.sub.Err():
 19987  		it.done = true
 19988  		it.fail = err
 19989  		return it.Next()
 19990  	}
 19991  }
 19992  
 19993  // Error returns any retrieval or parsing error occurred during filtering.
 19994  func (it *ERC721ApprovalIterator) Error() error {
 19995  	return it.fail
 19996  }
 19997  
 19998  // Close terminates the iteration process, releasing any pending underlying
 19999  // resources.
 20000  func (it *ERC721ApprovalIterator) Close() error {
 20001  	it.sub.Unsubscribe()
 20002  	return nil
 20003  }
 20004  
 20005  // ERC721Approval represents a Approval event raised by the ERC721 contract.
 20006  type ERC721Approval struct {
 20007  	Owner    common.Address
 20008  	Approved common.Address
 20009  	TokenId  *big.Int
 20010  	Raw      types.Log // Blockchain specific contextual infos
 20011  }
 20012  
 20013  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 20014  //
 20015  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 20016  func (_ERC721 *ERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721ApprovalIterator, error) {
 20017  
 20018  	var ownerRule []interface{}
 20019  	for _, ownerItem := range owner {
 20020  		ownerRule = append(ownerRule, ownerItem)
 20021  	}
 20022  	var approvedRule []interface{}
 20023  	for _, approvedItem := range approved {
 20024  		approvedRule = append(approvedRule, approvedItem)
 20025  	}
 20026  	var tokenIdRule []interface{}
 20027  	for _, tokenIdItem := range tokenId {
 20028  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 20029  	}
 20030  
 20031  	logs, sub, err := _ERC721.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 20032  	if err != nil {
 20033  		return nil, err
 20034  	}
 20035  	return &ERC721ApprovalIterator{contract: _ERC721.contract, event: "Approval", logs: logs, sub: sub}, nil
 20036  }
 20037  
 20038  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 20039  //
 20040  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 20041  func (_ERC721 *ERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 20042  
 20043  	var ownerRule []interface{}
 20044  	for _, ownerItem := range owner {
 20045  		ownerRule = append(ownerRule, ownerItem)
 20046  	}
 20047  	var approvedRule []interface{}
 20048  	for _, approvedItem := range approved {
 20049  		approvedRule = append(approvedRule, approvedItem)
 20050  	}
 20051  	var tokenIdRule []interface{}
 20052  	for _, tokenIdItem := range tokenId {
 20053  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 20054  	}
 20055  
 20056  	logs, sub, err := _ERC721.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 20057  	if err != nil {
 20058  		return nil, err
 20059  	}
 20060  	return event.NewSubscription(func(quit <-chan struct{}) error {
 20061  		defer sub.Unsubscribe()
 20062  		for {
 20063  			select {
 20064  			case log := <-logs:
 20065  				// New log arrived, parse the event and forward to the user
 20066  				event := new(ERC721Approval)
 20067  				if err := _ERC721.contract.UnpackLog(event, "Approval", log); err != nil {
 20068  					return err
 20069  				}
 20070  				event.Raw = log
 20071  
 20072  				select {
 20073  				case sink <- event:
 20074  				case err := <-sub.Err():
 20075  					return err
 20076  				case <-quit:
 20077  					return nil
 20078  				}
 20079  			case err := <-sub.Err():
 20080  				return err
 20081  			case <-quit:
 20082  				return nil
 20083  			}
 20084  		}
 20085  	}), nil
 20086  }
 20087  
 20088  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 20089  //
 20090  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 20091  func (_ERC721 *ERC721Filterer) ParseApproval(log types.Log) (*ERC721Approval, error) {
 20092  	event := new(ERC721Approval)
 20093  	if err := _ERC721.contract.UnpackLog(event, "Approval", log); err != nil {
 20094  		return nil, err
 20095  	}
 20096  	return event, nil
 20097  }
 20098  
 20099  // ERC721ApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721 contract.
 20100  type ERC721ApprovalForAllIterator struct {
 20101  	Event *ERC721ApprovalForAll // Event containing the contract specifics and raw log
 20102  
 20103  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 20104  	event    string              // Event name to use for unpacking event data
 20105  
 20106  	logs chan types.Log      // Log channel receiving the found contract events
 20107  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 20108  	done bool                // Whether the subscription completed delivering logs
 20109  	fail error               // Occurred error to stop iteration
 20110  }
 20111  
 20112  // Next advances the iterator to the subsequent event, returning whether there
 20113  // are any more events found. In case of a retrieval or parsing error, false is
 20114  // returned and Error() can be queried for the exact failure.
 20115  func (it *ERC721ApprovalForAllIterator) Next() bool {
 20116  	// If the iterator failed, stop iterating
 20117  	if it.fail != nil {
 20118  		return false
 20119  	}
 20120  	// If the iterator completed, deliver directly whatever's available
 20121  	if it.done {
 20122  		select {
 20123  		case log := <-it.logs:
 20124  			it.Event = new(ERC721ApprovalForAll)
 20125  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 20126  				it.fail = err
 20127  				return false
 20128  			}
 20129  			it.Event.Raw = log
 20130  			return true
 20131  
 20132  		default:
 20133  			return false
 20134  		}
 20135  	}
 20136  	// Iterator still in progress, wait for either a data or an error event
 20137  	select {
 20138  	case log := <-it.logs:
 20139  		it.Event = new(ERC721ApprovalForAll)
 20140  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 20141  			it.fail = err
 20142  			return false
 20143  		}
 20144  		it.Event.Raw = log
 20145  		return true
 20146  
 20147  	case err := <-it.sub.Err():
 20148  		it.done = true
 20149  		it.fail = err
 20150  		return it.Next()
 20151  	}
 20152  }
 20153  
 20154  // Error returns any retrieval or parsing error occurred during filtering.
 20155  func (it *ERC721ApprovalForAllIterator) Error() error {
 20156  	return it.fail
 20157  }
 20158  
 20159  // Close terminates the iteration process, releasing any pending underlying
 20160  // resources.
 20161  func (it *ERC721ApprovalForAllIterator) Close() error {
 20162  	it.sub.Unsubscribe()
 20163  	return nil
 20164  }
 20165  
 20166  // ERC721ApprovalForAll represents a ApprovalForAll event raised by the ERC721 contract.
 20167  type ERC721ApprovalForAll struct {
 20168  	Owner    common.Address
 20169  	Operator common.Address
 20170  	Approved bool
 20171  	Raw      types.Log // Blockchain specific contextual infos
 20172  }
 20173  
 20174  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 20175  //
 20176  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 20177  func (_ERC721 *ERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721ApprovalForAllIterator, error) {
 20178  
 20179  	var ownerRule []interface{}
 20180  	for _, ownerItem := range owner {
 20181  		ownerRule = append(ownerRule, ownerItem)
 20182  	}
 20183  	var operatorRule []interface{}
 20184  	for _, operatorItem := range operator {
 20185  		operatorRule = append(operatorRule, operatorItem)
 20186  	}
 20187  
 20188  	logs, sub, err := _ERC721.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 20189  	if err != nil {
 20190  		return nil, err
 20191  	}
 20192  	return &ERC721ApprovalForAllIterator{contract: _ERC721.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
 20193  }
 20194  
 20195  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 20196  //
 20197  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 20198  func (_ERC721 *ERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
 20199  
 20200  	var ownerRule []interface{}
 20201  	for _, ownerItem := range owner {
 20202  		ownerRule = append(ownerRule, ownerItem)
 20203  	}
 20204  	var operatorRule []interface{}
 20205  	for _, operatorItem := range operator {
 20206  		operatorRule = append(operatorRule, operatorItem)
 20207  	}
 20208  
 20209  	logs, sub, err := _ERC721.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 20210  	if err != nil {
 20211  		return nil, err
 20212  	}
 20213  	return event.NewSubscription(func(quit <-chan struct{}) error {
 20214  		defer sub.Unsubscribe()
 20215  		for {
 20216  			select {
 20217  			case log := <-logs:
 20218  				// New log arrived, parse the event and forward to the user
 20219  				event := new(ERC721ApprovalForAll)
 20220  				if err := _ERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 20221  					return err
 20222  				}
 20223  				event.Raw = log
 20224  
 20225  				select {
 20226  				case sink <- event:
 20227  				case err := <-sub.Err():
 20228  					return err
 20229  				case <-quit:
 20230  					return nil
 20231  				}
 20232  			case err := <-sub.Err():
 20233  				return err
 20234  			case <-quit:
 20235  				return nil
 20236  			}
 20237  		}
 20238  	}), nil
 20239  }
 20240  
 20241  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 20242  //
 20243  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 20244  func (_ERC721 *ERC721Filterer) ParseApprovalForAll(log types.Log) (*ERC721ApprovalForAll, error) {
 20245  	event := new(ERC721ApprovalForAll)
 20246  	if err := _ERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 20247  		return nil, err
 20248  	}
 20249  	return event, nil
 20250  }
 20251  
 20252  // ERC721TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721 contract.
 20253  type ERC721TransferIterator struct {
 20254  	Event *ERC721Transfer // Event containing the contract specifics and raw log
 20255  
 20256  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 20257  	event    string              // Event name to use for unpacking event data
 20258  
 20259  	logs chan types.Log      // Log channel receiving the found contract events
 20260  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 20261  	done bool                // Whether the subscription completed delivering logs
 20262  	fail error               // Occurred error to stop iteration
 20263  }
 20264  
 20265  // Next advances the iterator to the subsequent event, returning whether there
 20266  // are any more events found. In case of a retrieval or parsing error, false is
 20267  // returned and Error() can be queried for the exact failure.
 20268  func (it *ERC721TransferIterator) Next() bool {
 20269  	// If the iterator failed, stop iterating
 20270  	if it.fail != nil {
 20271  		return false
 20272  	}
 20273  	// If the iterator completed, deliver directly whatever's available
 20274  	if it.done {
 20275  		select {
 20276  		case log := <-it.logs:
 20277  			it.Event = new(ERC721Transfer)
 20278  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 20279  				it.fail = err
 20280  				return false
 20281  			}
 20282  			it.Event.Raw = log
 20283  			return true
 20284  
 20285  		default:
 20286  			return false
 20287  		}
 20288  	}
 20289  	// Iterator still in progress, wait for either a data or an error event
 20290  	select {
 20291  	case log := <-it.logs:
 20292  		it.Event = new(ERC721Transfer)
 20293  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 20294  			it.fail = err
 20295  			return false
 20296  		}
 20297  		it.Event.Raw = log
 20298  		return true
 20299  
 20300  	case err := <-it.sub.Err():
 20301  		it.done = true
 20302  		it.fail = err
 20303  		return it.Next()
 20304  	}
 20305  }
 20306  
 20307  // Error returns any retrieval or parsing error occurred during filtering.
 20308  func (it *ERC721TransferIterator) Error() error {
 20309  	return it.fail
 20310  }
 20311  
 20312  // Close terminates the iteration process, releasing any pending underlying
 20313  // resources.
 20314  func (it *ERC721TransferIterator) Close() error {
 20315  	it.sub.Unsubscribe()
 20316  	return nil
 20317  }
 20318  
 20319  // ERC721Transfer represents a Transfer event raised by the ERC721 contract.
 20320  type ERC721Transfer struct {
 20321  	From    common.Address
 20322  	To      common.Address
 20323  	TokenId *big.Int
 20324  	Raw     types.Log // Blockchain specific contextual infos
 20325  }
 20326  
 20327  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 20328  //
 20329  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 20330  func (_ERC721 *ERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721TransferIterator, error) {
 20331  
 20332  	var fromRule []interface{}
 20333  	for _, fromItem := range from {
 20334  		fromRule = append(fromRule, fromItem)
 20335  	}
 20336  	var toRule []interface{}
 20337  	for _, toItem := range to {
 20338  		toRule = append(toRule, toItem)
 20339  	}
 20340  	var tokenIdRule []interface{}
 20341  	for _, tokenIdItem := range tokenId {
 20342  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 20343  	}
 20344  
 20345  	logs, sub, err := _ERC721.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 20346  	if err != nil {
 20347  		return nil, err
 20348  	}
 20349  	return &ERC721TransferIterator{contract: _ERC721.contract, event: "Transfer", logs: logs, sub: sub}, nil
 20350  }
 20351  
 20352  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 20353  //
 20354  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 20355  func (_ERC721 *ERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 20356  
 20357  	var fromRule []interface{}
 20358  	for _, fromItem := range from {
 20359  		fromRule = append(fromRule, fromItem)
 20360  	}
 20361  	var toRule []interface{}
 20362  	for _, toItem := range to {
 20363  		toRule = append(toRule, toItem)
 20364  	}
 20365  	var tokenIdRule []interface{}
 20366  	for _, tokenIdItem := range tokenId {
 20367  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 20368  	}
 20369  
 20370  	logs, sub, err := _ERC721.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 20371  	if err != nil {
 20372  		return nil, err
 20373  	}
 20374  	return event.NewSubscription(func(quit <-chan struct{}) error {
 20375  		defer sub.Unsubscribe()
 20376  		for {
 20377  			select {
 20378  			case log := <-logs:
 20379  				// New log arrived, parse the event and forward to the user
 20380  				event := new(ERC721Transfer)
 20381  				if err := _ERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
 20382  					return err
 20383  				}
 20384  				event.Raw = log
 20385  
 20386  				select {
 20387  				case sink <- event:
 20388  				case err := <-sub.Err():
 20389  					return err
 20390  				case <-quit:
 20391  					return nil
 20392  				}
 20393  			case err := <-sub.Err():
 20394  				return err
 20395  			case <-quit:
 20396  				return nil
 20397  			}
 20398  		}
 20399  	}), nil
 20400  }
 20401  
 20402  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 20403  //
 20404  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 20405  func (_ERC721 *ERC721Filterer) ParseTransfer(log types.Log) (*ERC721Transfer, error) {
 20406  	event := new(ERC721Transfer)
 20407  	if err := _ERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
 20408  		return nil, err
 20409  	}
 20410  	return event, nil
 20411  }
 20412  
 20413  // ERC721BurnableABI is the input ABI used to generate the binding from.
 20414  const ERC721BurnableABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
 20415  
 20416  // ERC721BurnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 20417  const ERC721BurnableBinRuntime = `608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582035986e074f001b98f3d4f8e669063ef8d5efcf5cb63f5103e5e5296048223c1d0029`
 20418  
 20419  // ERC721BurnableFuncSigs maps the 4-byte function signature to its string representation.
 20420  var ERC721BurnableFuncSigs = map[string]string{
 20421  	"095ea7b3": "approve(address,uint256)",
 20422  	"70a08231": "balanceOf(address)",
 20423  	"42966c68": "burn(uint256)",
 20424  	"081812fc": "getApproved(uint256)",
 20425  	"e985e9c5": "isApprovedForAll(address,address)",
 20426  	"6352211e": "ownerOf(uint256)",
 20427  	"42842e0e": "safeTransferFrom(address,address,uint256)",
 20428  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
 20429  	"a22cb465": "setApprovalForAll(address,bool)",
 20430  	"01ffc9a7": "supportsInterface(bytes4)",
 20431  	"23b872dd": "transferFrom(address,address,uint256)",
 20432  }
 20433  
 20434  // ERC721BurnableBin is the compiled bytecode used for deploying new contracts.
 20435  var ERC721BurnableBin = "0x608060405261001a6301ffc9a760e01b61003560201b60201c565b6100306380ac58cd60e01b61003560201b60201c565b610103565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100c657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b610eff806101126000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582035986e074f001b98f3d4f8e669063ef8d5efcf5cb63f5103e5e5296048223c1d0029"
 20436  
 20437  // DeployERC721Burnable deploys a new Klaytn contract, binding an instance of ERC721Burnable to it.
 20438  func DeployERC721Burnable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC721Burnable, error) {
 20439  	parsed, err := abi.JSON(strings.NewReader(ERC721BurnableABI))
 20440  	if err != nil {
 20441  		return common.Address{}, nil, nil, err
 20442  	}
 20443  
 20444  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC721BurnableBin), backend)
 20445  	if err != nil {
 20446  		return common.Address{}, nil, nil, err
 20447  	}
 20448  	return address, tx, &ERC721Burnable{ERC721BurnableCaller: ERC721BurnableCaller{contract: contract}, ERC721BurnableTransactor: ERC721BurnableTransactor{contract: contract}, ERC721BurnableFilterer: ERC721BurnableFilterer{contract: contract}}, nil
 20449  }
 20450  
 20451  // ERC721Burnable is an auto generated Go binding around a Klaytn contract.
 20452  type ERC721Burnable struct {
 20453  	ERC721BurnableCaller     // Read-only binding to the contract
 20454  	ERC721BurnableTransactor // Write-only binding to the contract
 20455  	ERC721BurnableFilterer   // Log filterer for contract events
 20456  }
 20457  
 20458  // ERC721BurnableCaller is an auto generated read-only Go binding around a Klaytn contract.
 20459  type ERC721BurnableCaller struct {
 20460  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 20461  }
 20462  
 20463  // ERC721BurnableTransactor is an auto generated write-only Go binding around a Klaytn contract.
 20464  type ERC721BurnableTransactor struct {
 20465  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 20466  }
 20467  
 20468  // ERC721BurnableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 20469  type ERC721BurnableFilterer struct {
 20470  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 20471  }
 20472  
 20473  // ERC721BurnableSession is an auto generated Go binding around a Klaytn contract,
 20474  // with pre-set call and transact options.
 20475  type ERC721BurnableSession struct {
 20476  	Contract     *ERC721Burnable   // Generic contract binding to set the session for
 20477  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 20478  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 20479  }
 20480  
 20481  // ERC721BurnableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 20482  // with pre-set call options.
 20483  type ERC721BurnableCallerSession struct {
 20484  	Contract *ERC721BurnableCaller // Generic contract caller binding to set the session for
 20485  	CallOpts bind.CallOpts         // Call options to use throughout this session
 20486  }
 20487  
 20488  // ERC721BurnableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 20489  // with pre-set transact options.
 20490  type ERC721BurnableTransactorSession struct {
 20491  	Contract     *ERC721BurnableTransactor // Generic contract transactor binding to set the session for
 20492  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
 20493  }
 20494  
 20495  // ERC721BurnableRaw is an auto generated low-level Go binding around a Klaytn contract.
 20496  type ERC721BurnableRaw struct {
 20497  	Contract *ERC721Burnable // Generic contract binding to access the raw methods on
 20498  }
 20499  
 20500  // ERC721BurnableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 20501  type ERC721BurnableCallerRaw struct {
 20502  	Contract *ERC721BurnableCaller // Generic read-only contract binding to access the raw methods on
 20503  }
 20504  
 20505  // ERC721BurnableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 20506  type ERC721BurnableTransactorRaw struct {
 20507  	Contract *ERC721BurnableTransactor // Generic write-only contract binding to access the raw methods on
 20508  }
 20509  
 20510  // NewERC721Burnable creates a new instance of ERC721Burnable, bound to a specific deployed contract.
 20511  func NewERC721Burnable(address common.Address, backend bind.ContractBackend) (*ERC721Burnable, error) {
 20512  	contract, err := bindERC721Burnable(address, backend, backend, backend)
 20513  	if err != nil {
 20514  		return nil, err
 20515  	}
 20516  	return &ERC721Burnable{ERC721BurnableCaller: ERC721BurnableCaller{contract: contract}, ERC721BurnableTransactor: ERC721BurnableTransactor{contract: contract}, ERC721BurnableFilterer: ERC721BurnableFilterer{contract: contract}}, nil
 20517  }
 20518  
 20519  // NewERC721BurnableCaller creates a new read-only instance of ERC721Burnable, bound to a specific deployed contract.
 20520  func NewERC721BurnableCaller(address common.Address, caller bind.ContractCaller) (*ERC721BurnableCaller, error) {
 20521  	contract, err := bindERC721Burnable(address, caller, nil, nil)
 20522  	if err != nil {
 20523  		return nil, err
 20524  	}
 20525  	return &ERC721BurnableCaller{contract: contract}, nil
 20526  }
 20527  
 20528  // NewERC721BurnableTransactor creates a new write-only instance of ERC721Burnable, bound to a specific deployed contract.
 20529  func NewERC721BurnableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721BurnableTransactor, error) {
 20530  	contract, err := bindERC721Burnable(address, nil, transactor, nil)
 20531  	if err != nil {
 20532  		return nil, err
 20533  	}
 20534  	return &ERC721BurnableTransactor{contract: contract}, nil
 20535  }
 20536  
 20537  // NewERC721BurnableFilterer creates a new log filterer instance of ERC721Burnable, bound to a specific deployed contract.
 20538  func NewERC721BurnableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721BurnableFilterer, error) {
 20539  	contract, err := bindERC721Burnable(address, nil, nil, filterer)
 20540  	if err != nil {
 20541  		return nil, err
 20542  	}
 20543  	return &ERC721BurnableFilterer{contract: contract}, nil
 20544  }
 20545  
 20546  // bindERC721Burnable binds a generic wrapper to an already deployed contract.
 20547  func bindERC721Burnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 20548  	parsed, err := abi.JSON(strings.NewReader(ERC721BurnableABI))
 20549  	if err != nil {
 20550  		return nil, err
 20551  	}
 20552  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 20553  }
 20554  
 20555  // Call invokes the (constant) contract method with params as input values and
 20556  // sets the output to result. The result type might be a single field for simple
 20557  // returns, a slice of interfaces for anonymous returns and a struct for named
 20558  // returns.
 20559  func (_ERC721Burnable *ERC721BurnableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 20560  	return _ERC721Burnable.Contract.ERC721BurnableCaller.contract.Call(opts, result, method, params...)
 20561  }
 20562  
 20563  // Transfer initiates a plain transaction to move funds to the contract, calling
 20564  // its default method if one is available.
 20565  func (_ERC721Burnable *ERC721BurnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 20566  	return _ERC721Burnable.Contract.ERC721BurnableTransactor.contract.Transfer(opts)
 20567  }
 20568  
 20569  // Transact invokes the (paid) contract method with params as input values.
 20570  func (_ERC721Burnable *ERC721BurnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 20571  	return _ERC721Burnable.Contract.ERC721BurnableTransactor.contract.Transact(opts, method, params...)
 20572  }
 20573  
 20574  // Call invokes the (constant) contract method with params as input values and
 20575  // sets the output to result. The result type might be a single field for simple
 20576  // returns, a slice of interfaces for anonymous returns and a struct for named
 20577  // returns.
 20578  func (_ERC721Burnable *ERC721BurnableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 20579  	return _ERC721Burnable.Contract.contract.Call(opts, result, method, params...)
 20580  }
 20581  
 20582  // Transfer initiates a plain transaction to move funds to the contract, calling
 20583  // its default method if one is available.
 20584  func (_ERC721Burnable *ERC721BurnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 20585  	return _ERC721Burnable.Contract.contract.Transfer(opts)
 20586  }
 20587  
 20588  // Transact invokes the (paid) contract method with params as input values.
 20589  func (_ERC721Burnable *ERC721BurnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 20590  	return _ERC721Burnable.Contract.contract.Transact(opts, method, params...)
 20591  }
 20592  
 20593  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 20594  //
 20595  // Solidity: function balanceOf(address owner) view returns(uint256)
 20596  func (_ERC721Burnable *ERC721BurnableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
 20597  	var (
 20598  		ret0 = new(*big.Int)
 20599  	)
 20600  	out := ret0
 20601  	err := _ERC721Burnable.contract.Call(opts, out, "balanceOf", owner)
 20602  	return *ret0, err
 20603  }
 20604  
 20605  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 20606  //
 20607  // Solidity: function balanceOf(address owner) view returns(uint256)
 20608  func (_ERC721Burnable *ERC721BurnableSession) BalanceOf(owner common.Address) (*big.Int, error) {
 20609  	return _ERC721Burnable.Contract.BalanceOf(&_ERC721Burnable.CallOpts, owner)
 20610  }
 20611  
 20612  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 20613  //
 20614  // Solidity: function balanceOf(address owner) view returns(uint256)
 20615  func (_ERC721Burnable *ERC721BurnableCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
 20616  	return _ERC721Burnable.Contract.BalanceOf(&_ERC721Burnable.CallOpts, owner)
 20617  }
 20618  
 20619  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 20620  //
 20621  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 20622  func (_ERC721Burnable *ERC721BurnableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 20623  	var (
 20624  		ret0 = new(common.Address)
 20625  	)
 20626  	out := ret0
 20627  	err := _ERC721Burnable.contract.Call(opts, out, "getApproved", tokenId)
 20628  	return *ret0, err
 20629  }
 20630  
 20631  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 20632  //
 20633  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 20634  func (_ERC721Burnable *ERC721BurnableSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 20635  	return _ERC721Burnable.Contract.GetApproved(&_ERC721Burnable.CallOpts, tokenId)
 20636  }
 20637  
 20638  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 20639  //
 20640  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 20641  func (_ERC721Burnable *ERC721BurnableCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 20642  	return _ERC721Burnable.Contract.GetApproved(&_ERC721Burnable.CallOpts, tokenId)
 20643  }
 20644  
 20645  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 20646  //
 20647  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 20648  func (_ERC721Burnable *ERC721BurnableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
 20649  	var (
 20650  		ret0 = new(bool)
 20651  	)
 20652  	out := ret0
 20653  	err := _ERC721Burnable.contract.Call(opts, out, "isApprovedForAll", owner, operator)
 20654  	return *ret0, err
 20655  }
 20656  
 20657  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 20658  //
 20659  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 20660  func (_ERC721Burnable *ERC721BurnableSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 20661  	return _ERC721Burnable.Contract.IsApprovedForAll(&_ERC721Burnable.CallOpts, owner, operator)
 20662  }
 20663  
 20664  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 20665  //
 20666  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 20667  func (_ERC721Burnable *ERC721BurnableCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 20668  	return _ERC721Burnable.Contract.IsApprovedForAll(&_ERC721Burnable.CallOpts, owner, operator)
 20669  }
 20670  
 20671  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 20672  //
 20673  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 20674  func (_ERC721Burnable *ERC721BurnableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 20675  	var (
 20676  		ret0 = new(common.Address)
 20677  	)
 20678  	out := ret0
 20679  	err := _ERC721Burnable.contract.Call(opts, out, "ownerOf", tokenId)
 20680  	return *ret0, err
 20681  }
 20682  
 20683  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 20684  //
 20685  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 20686  func (_ERC721Burnable *ERC721BurnableSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 20687  	return _ERC721Burnable.Contract.OwnerOf(&_ERC721Burnable.CallOpts, tokenId)
 20688  }
 20689  
 20690  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 20691  //
 20692  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 20693  func (_ERC721Burnable *ERC721BurnableCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 20694  	return _ERC721Burnable.Contract.OwnerOf(&_ERC721Burnable.CallOpts, tokenId)
 20695  }
 20696  
 20697  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 20698  //
 20699  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 20700  func (_ERC721Burnable *ERC721BurnableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
 20701  	var (
 20702  		ret0 = new(bool)
 20703  	)
 20704  	out := ret0
 20705  	err := _ERC721Burnable.contract.Call(opts, out, "supportsInterface", interfaceId)
 20706  	return *ret0, err
 20707  }
 20708  
 20709  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 20710  //
 20711  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 20712  func (_ERC721Burnable *ERC721BurnableSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 20713  	return _ERC721Burnable.Contract.SupportsInterface(&_ERC721Burnable.CallOpts, interfaceId)
 20714  }
 20715  
 20716  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 20717  //
 20718  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 20719  func (_ERC721Burnable *ERC721BurnableCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 20720  	return _ERC721Burnable.Contract.SupportsInterface(&_ERC721Burnable.CallOpts, interfaceId)
 20721  }
 20722  
 20723  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 20724  //
 20725  // Solidity: function approve(address to, uint256 tokenId) returns()
 20726  func (_ERC721Burnable *ERC721BurnableTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 20727  	return _ERC721Burnable.contract.Transact(opts, "approve", to, tokenId)
 20728  }
 20729  
 20730  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 20731  //
 20732  // Solidity: function approve(address to, uint256 tokenId) returns()
 20733  func (_ERC721Burnable *ERC721BurnableSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 20734  	return _ERC721Burnable.Contract.Approve(&_ERC721Burnable.TransactOpts, to, tokenId)
 20735  }
 20736  
 20737  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 20738  //
 20739  // Solidity: function approve(address to, uint256 tokenId) returns()
 20740  func (_ERC721Burnable *ERC721BurnableTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 20741  	return _ERC721Burnable.Contract.Approve(&_ERC721Burnable.TransactOpts, to, tokenId)
 20742  }
 20743  
 20744  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 20745  //
 20746  // Solidity: function burn(uint256 tokenId) returns()
 20747  func (_ERC721Burnable *ERC721BurnableTransactor) Burn(opts *bind.TransactOpts, tokenId *big.Int) (*types.Transaction, error) {
 20748  	return _ERC721Burnable.contract.Transact(opts, "burn", tokenId)
 20749  }
 20750  
 20751  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 20752  //
 20753  // Solidity: function burn(uint256 tokenId) returns()
 20754  func (_ERC721Burnable *ERC721BurnableSession) Burn(tokenId *big.Int) (*types.Transaction, error) {
 20755  	return _ERC721Burnable.Contract.Burn(&_ERC721Burnable.TransactOpts, tokenId)
 20756  }
 20757  
 20758  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 20759  //
 20760  // Solidity: function burn(uint256 tokenId) returns()
 20761  func (_ERC721Burnable *ERC721BurnableTransactorSession) Burn(tokenId *big.Int) (*types.Transaction, error) {
 20762  	return _ERC721Burnable.Contract.Burn(&_ERC721Burnable.TransactOpts, tokenId)
 20763  }
 20764  
 20765  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 20766  //
 20767  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 20768  func (_ERC721Burnable *ERC721BurnableTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 20769  	return _ERC721Burnable.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
 20770  }
 20771  
 20772  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 20773  //
 20774  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 20775  func (_ERC721Burnable *ERC721BurnableSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 20776  	return _ERC721Burnable.Contract.SafeTransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId)
 20777  }
 20778  
 20779  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 20780  //
 20781  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 20782  func (_ERC721Burnable *ERC721BurnableTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 20783  	return _ERC721Burnable.Contract.SafeTransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId)
 20784  }
 20785  
 20786  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 20787  //
 20788  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 20789  func (_ERC721Burnable *ERC721BurnableTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 20790  	return _ERC721Burnable.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
 20791  }
 20792  
 20793  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 20794  //
 20795  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 20796  func (_ERC721Burnable *ERC721BurnableSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 20797  	return _ERC721Burnable.Contract.SafeTransferFrom0(&_ERC721Burnable.TransactOpts, from, to, tokenId, _data)
 20798  }
 20799  
 20800  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 20801  //
 20802  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 20803  func (_ERC721Burnable *ERC721BurnableTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 20804  	return _ERC721Burnable.Contract.SafeTransferFrom0(&_ERC721Burnable.TransactOpts, from, to, tokenId, _data)
 20805  }
 20806  
 20807  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 20808  //
 20809  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 20810  func (_ERC721Burnable *ERC721BurnableTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
 20811  	return _ERC721Burnable.contract.Transact(opts, "setApprovalForAll", to, approved)
 20812  }
 20813  
 20814  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 20815  //
 20816  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 20817  func (_ERC721Burnable *ERC721BurnableSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
 20818  	return _ERC721Burnable.Contract.SetApprovalForAll(&_ERC721Burnable.TransactOpts, to, approved)
 20819  }
 20820  
 20821  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 20822  //
 20823  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 20824  func (_ERC721Burnable *ERC721BurnableTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
 20825  	return _ERC721Burnable.Contract.SetApprovalForAll(&_ERC721Burnable.TransactOpts, to, approved)
 20826  }
 20827  
 20828  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 20829  //
 20830  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 20831  func (_ERC721Burnable *ERC721BurnableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 20832  	return _ERC721Burnable.contract.Transact(opts, "transferFrom", from, to, tokenId)
 20833  }
 20834  
 20835  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 20836  //
 20837  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 20838  func (_ERC721Burnable *ERC721BurnableSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 20839  	return _ERC721Burnable.Contract.TransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId)
 20840  }
 20841  
 20842  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 20843  //
 20844  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 20845  func (_ERC721Burnable *ERC721BurnableTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 20846  	return _ERC721Burnable.Contract.TransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId)
 20847  }
 20848  
 20849  // ERC721BurnableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721Burnable contract.
 20850  type ERC721BurnableApprovalIterator struct {
 20851  	Event *ERC721BurnableApproval // Event containing the contract specifics and raw log
 20852  
 20853  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 20854  	event    string              // Event name to use for unpacking event data
 20855  
 20856  	logs chan types.Log      // Log channel receiving the found contract events
 20857  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 20858  	done bool                // Whether the subscription completed delivering logs
 20859  	fail error               // Occurred error to stop iteration
 20860  }
 20861  
 20862  // Next advances the iterator to the subsequent event, returning whether there
 20863  // are any more events found. In case of a retrieval or parsing error, false is
 20864  // returned and Error() can be queried for the exact failure.
 20865  func (it *ERC721BurnableApprovalIterator) Next() bool {
 20866  	// If the iterator failed, stop iterating
 20867  	if it.fail != nil {
 20868  		return false
 20869  	}
 20870  	// If the iterator completed, deliver directly whatever's available
 20871  	if it.done {
 20872  		select {
 20873  		case log := <-it.logs:
 20874  			it.Event = new(ERC721BurnableApproval)
 20875  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 20876  				it.fail = err
 20877  				return false
 20878  			}
 20879  			it.Event.Raw = log
 20880  			return true
 20881  
 20882  		default:
 20883  			return false
 20884  		}
 20885  	}
 20886  	// Iterator still in progress, wait for either a data or an error event
 20887  	select {
 20888  	case log := <-it.logs:
 20889  		it.Event = new(ERC721BurnableApproval)
 20890  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 20891  			it.fail = err
 20892  			return false
 20893  		}
 20894  		it.Event.Raw = log
 20895  		return true
 20896  
 20897  	case err := <-it.sub.Err():
 20898  		it.done = true
 20899  		it.fail = err
 20900  		return it.Next()
 20901  	}
 20902  }
 20903  
 20904  // Error returns any retrieval or parsing error occurred during filtering.
 20905  func (it *ERC721BurnableApprovalIterator) Error() error {
 20906  	return it.fail
 20907  }
 20908  
 20909  // Close terminates the iteration process, releasing any pending underlying
 20910  // resources.
 20911  func (it *ERC721BurnableApprovalIterator) Close() error {
 20912  	it.sub.Unsubscribe()
 20913  	return nil
 20914  }
 20915  
 20916  // ERC721BurnableApproval represents a Approval event raised by the ERC721Burnable contract.
 20917  type ERC721BurnableApproval struct {
 20918  	Owner    common.Address
 20919  	Approved common.Address
 20920  	TokenId  *big.Int
 20921  	Raw      types.Log // Blockchain specific contextual infos
 20922  }
 20923  
 20924  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 20925  //
 20926  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 20927  func (_ERC721Burnable *ERC721BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721BurnableApprovalIterator, error) {
 20928  
 20929  	var ownerRule []interface{}
 20930  	for _, ownerItem := range owner {
 20931  		ownerRule = append(ownerRule, ownerItem)
 20932  	}
 20933  	var approvedRule []interface{}
 20934  	for _, approvedItem := range approved {
 20935  		approvedRule = append(approvedRule, approvedItem)
 20936  	}
 20937  	var tokenIdRule []interface{}
 20938  	for _, tokenIdItem := range tokenId {
 20939  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 20940  	}
 20941  
 20942  	logs, sub, err := _ERC721Burnable.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 20943  	if err != nil {
 20944  		return nil, err
 20945  	}
 20946  	return &ERC721BurnableApprovalIterator{contract: _ERC721Burnable.contract, event: "Approval", logs: logs, sub: sub}, nil
 20947  }
 20948  
 20949  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 20950  //
 20951  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 20952  func (_ERC721Burnable *ERC721BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721BurnableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 20953  
 20954  	var ownerRule []interface{}
 20955  	for _, ownerItem := range owner {
 20956  		ownerRule = append(ownerRule, ownerItem)
 20957  	}
 20958  	var approvedRule []interface{}
 20959  	for _, approvedItem := range approved {
 20960  		approvedRule = append(approvedRule, approvedItem)
 20961  	}
 20962  	var tokenIdRule []interface{}
 20963  	for _, tokenIdItem := range tokenId {
 20964  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 20965  	}
 20966  
 20967  	logs, sub, err := _ERC721Burnable.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 20968  	if err != nil {
 20969  		return nil, err
 20970  	}
 20971  	return event.NewSubscription(func(quit <-chan struct{}) error {
 20972  		defer sub.Unsubscribe()
 20973  		for {
 20974  			select {
 20975  			case log := <-logs:
 20976  				// New log arrived, parse the event and forward to the user
 20977  				event := new(ERC721BurnableApproval)
 20978  				if err := _ERC721Burnable.contract.UnpackLog(event, "Approval", log); err != nil {
 20979  					return err
 20980  				}
 20981  				event.Raw = log
 20982  
 20983  				select {
 20984  				case sink <- event:
 20985  				case err := <-sub.Err():
 20986  					return err
 20987  				case <-quit:
 20988  					return nil
 20989  				}
 20990  			case err := <-sub.Err():
 20991  				return err
 20992  			case <-quit:
 20993  				return nil
 20994  			}
 20995  		}
 20996  	}), nil
 20997  }
 20998  
 20999  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 21000  //
 21001  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 21002  func (_ERC721Burnable *ERC721BurnableFilterer) ParseApproval(log types.Log) (*ERC721BurnableApproval, error) {
 21003  	event := new(ERC721BurnableApproval)
 21004  	if err := _ERC721Burnable.contract.UnpackLog(event, "Approval", log); err != nil {
 21005  		return nil, err
 21006  	}
 21007  	return event, nil
 21008  }
 21009  
 21010  // ERC721BurnableApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721Burnable contract.
 21011  type ERC721BurnableApprovalForAllIterator struct {
 21012  	Event *ERC721BurnableApprovalForAll // Event containing the contract specifics and raw log
 21013  
 21014  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 21015  	event    string              // Event name to use for unpacking event data
 21016  
 21017  	logs chan types.Log      // Log channel receiving the found contract events
 21018  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 21019  	done bool                // Whether the subscription completed delivering logs
 21020  	fail error               // Occurred error to stop iteration
 21021  }
 21022  
 21023  // Next advances the iterator to the subsequent event, returning whether there
 21024  // are any more events found. In case of a retrieval or parsing error, false is
 21025  // returned and Error() can be queried for the exact failure.
 21026  func (it *ERC721BurnableApprovalForAllIterator) Next() bool {
 21027  	// If the iterator failed, stop iterating
 21028  	if it.fail != nil {
 21029  		return false
 21030  	}
 21031  	// If the iterator completed, deliver directly whatever's available
 21032  	if it.done {
 21033  		select {
 21034  		case log := <-it.logs:
 21035  			it.Event = new(ERC721BurnableApprovalForAll)
 21036  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 21037  				it.fail = err
 21038  				return false
 21039  			}
 21040  			it.Event.Raw = log
 21041  			return true
 21042  
 21043  		default:
 21044  			return false
 21045  		}
 21046  	}
 21047  	// Iterator still in progress, wait for either a data or an error event
 21048  	select {
 21049  	case log := <-it.logs:
 21050  		it.Event = new(ERC721BurnableApprovalForAll)
 21051  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 21052  			it.fail = err
 21053  			return false
 21054  		}
 21055  		it.Event.Raw = log
 21056  		return true
 21057  
 21058  	case err := <-it.sub.Err():
 21059  		it.done = true
 21060  		it.fail = err
 21061  		return it.Next()
 21062  	}
 21063  }
 21064  
 21065  // Error returns any retrieval or parsing error occurred during filtering.
 21066  func (it *ERC721BurnableApprovalForAllIterator) Error() error {
 21067  	return it.fail
 21068  }
 21069  
 21070  // Close terminates the iteration process, releasing any pending underlying
 21071  // resources.
 21072  func (it *ERC721BurnableApprovalForAllIterator) Close() error {
 21073  	it.sub.Unsubscribe()
 21074  	return nil
 21075  }
 21076  
 21077  // ERC721BurnableApprovalForAll represents a ApprovalForAll event raised by the ERC721Burnable contract.
 21078  type ERC721BurnableApprovalForAll struct {
 21079  	Owner    common.Address
 21080  	Operator common.Address
 21081  	Approved bool
 21082  	Raw      types.Log // Blockchain specific contextual infos
 21083  }
 21084  
 21085  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 21086  //
 21087  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 21088  func (_ERC721Burnable *ERC721BurnableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721BurnableApprovalForAllIterator, error) {
 21089  
 21090  	var ownerRule []interface{}
 21091  	for _, ownerItem := range owner {
 21092  		ownerRule = append(ownerRule, ownerItem)
 21093  	}
 21094  	var operatorRule []interface{}
 21095  	for _, operatorItem := range operator {
 21096  		operatorRule = append(operatorRule, operatorItem)
 21097  	}
 21098  
 21099  	logs, sub, err := _ERC721Burnable.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 21100  	if err != nil {
 21101  		return nil, err
 21102  	}
 21103  	return &ERC721BurnableApprovalForAllIterator{contract: _ERC721Burnable.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
 21104  }
 21105  
 21106  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 21107  //
 21108  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 21109  func (_ERC721Burnable *ERC721BurnableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721BurnableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
 21110  
 21111  	var ownerRule []interface{}
 21112  	for _, ownerItem := range owner {
 21113  		ownerRule = append(ownerRule, ownerItem)
 21114  	}
 21115  	var operatorRule []interface{}
 21116  	for _, operatorItem := range operator {
 21117  		operatorRule = append(operatorRule, operatorItem)
 21118  	}
 21119  
 21120  	logs, sub, err := _ERC721Burnable.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 21121  	if err != nil {
 21122  		return nil, err
 21123  	}
 21124  	return event.NewSubscription(func(quit <-chan struct{}) error {
 21125  		defer sub.Unsubscribe()
 21126  		for {
 21127  			select {
 21128  			case log := <-logs:
 21129  				// New log arrived, parse the event and forward to the user
 21130  				event := new(ERC721BurnableApprovalForAll)
 21131  				if err := _ERC721Burnable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 21132  					return err
 21133  				}
 21134  				event.Raw = log
 21135  
 21136  				select {
 21137  				case sink <- event:
 21138  				case err := <-sub.Err():
 21139  					return err
 21140  				case <-quit:
 21141  					return nil
 21142  				}
 21143  			case err := <-sub.Err():
 21144  				return err
 21145  			case <-quit:
 21146  				return nil
 21147  			}
 21148  		}
 21149  	}), nil
 21150  }
 21151  
 21152  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 21153  //
 21154  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 21155  func (_ERC721Burnable *ERC721BurnableFilterer) ParseApprovalForAll(log types.Log) (*ERC721BurnableApprovalForAll, error) {
 21156  	event := new(ERC721BurnableApprovalForAll)
 21157  	if err := _ERC721Burnable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 21158  		return nil, err
 21159  	}
 21160  	return event, nil
 21161  }
 21162  
 21163  // ERC721BurnableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721Burnable contract.
 21164  type ERC721BurnableTransferIterator struct {
 21165  	Event *ERC721BurnableTransfer // Event containing the contract specifics and raw log
 21166  
 21167  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 21168  	event    string              // Event name to use for unpacking event data
 21169  
 21170  	logs chan types.Log      // Log channel receiving the found contract events
 21171  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 21172  	done bool                // Whether the subscription completed delivering logs
 21173  	fail error               // Occurred error to stop iteration
 21174  }
 21175  
 21176  // Next advances the iterator to the subsequent event, returning whether there
 21177  // are any more events found. In case of a retrieval or parsing error, false is
 21178  // returned and Error() can be queried for the exact failure.
 21179  func (it *ERC721BurnableTransferIterator) Next() bool {
 21180  	// If the iterator failed, stop iterating
 21181  	if it.fail != nil {
 21182  		return false
 21183  	}
 21184  	// If the iterator completed, deliver directly whatever's available
 21185  	if it.done {
 21186  		select {
 21187  		case log := <-it.logs:
 21188  			it.Event = new(ERC721BurnableTransfer)
 21189  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 21190  				it.fail = err
 21191  				return false
 21192  			}
 21193  			it.Event.Raw = log
 21194  			return true
 21195  
 21196  		default:
 21197  			return false
 21198  		}
 21199  	}
 21200  	// Iterator still in progress, wait for either a data or an error event
 21201  	select {
 21202  	case log := <-it.logs:
 21203  		it.Event = new(ERC721BurnableTransfer)
 21204  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 21205  			it.fail = err
 21206  			return false
 21207  		}
 21208  		it.Event.Raw = log
 21209  		return true
 21210  
 21211  	case err := <-it.sub.Err():
 21212  		it.done = true
 21213  		it.fail = err
 21214  		return it.Next()
 21215  	}
 21216  }
 21217  
 21218  // Error returns any retrieval or parsing error occurred during filtering.
 21219  func (it *ERC721BurnableTransferIterator) Error() error {
 21220  	return it.fail
 21221  }
 21222  
 21223  // Close terminates the iteration process, releasing any pending underlying
 21224  // resources.
 21225  func (it *ERC721BurnableTransferIterator) Close() error {
 21226  	it.sub.Unsubscribe()
 21227  	return nil
 21228  }
 21229  
 21230  // ERC721BurnableTransfer represents a Transfer event raised by the ERC721Burnable contract.
 21231  type ERC721BurnableTransfer struct {
 21232  	From    common.Address
 21233  	To      common.Address
 21234  	TokenId *big.Int
 21235  	Raw     types.Log // Blockchain specific contextual infos
 21236  }
 21237  
 21238  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 21239  //
 21240  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 21241  func (_ERC721Burnable *ERC721BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721BurnableTransferIterator, error) {
 21242  
 21243  	var fromRule []interface{}
 21244  	for _, fromItem := range from {
 21245  		fromRule = append(fromRule, fromItem)
 21246  	}
 21247  	var toRule []interface{}
 21248  	for _, toItem := range to {
 21249  		toRule = append(toRule, toItem)
 21250  	}
 21251  	var tokenIdRule []interface{}
 21252  	for _, tokenIdItem := range tokenId {
 21253  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 21254  	}
 21255  
 21256  	logs, sub, err := _ERC721Burnable.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 21257  	if err != nil {
 21258  		return nil, err
 21259  	}
 21260  	return &ERC721BurnableTransferIterator{contract: _ERC721Burnable.contract, event: "Transfer", logs: logs, sub: sub}, nil
 21261  }
 21262  
 21263  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 21264  //
 21265  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 21266  func (_ERC721Burnable *ERC721BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721BurnableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 21267  
 21268  	var fromRule []interface{}
 21269  	for _, fromItem := range from {
 21270  		fromRule = append(fromRule, fromItem)
 21271  	}
 21272  	var toRule []interface{}
 21273  	for _, toItem := range to {
 21274  		toRule = append(toRule, toItem)
 21275  	}
 21276  	var tokenIdRule []interface{}
 21277  	for _, tokenIdItem := range tokenId {
 21278  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 21279  	}
 21280  
 21281  	logs, sub, err := _ERC721Burnable.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 21282  	if err != nil {
 21283  		return nil, err
 21284  	}
 21285  	return event.NewSubscription(func(quit <-chan struct{}) error {
 21286  		defer sub.Unsubscribe()
 21287  		for {
 21288  			select {
 21289  			case log := <-logs:
 21290  				// New log arrived, parse the event and forward to the user
 21291  				event := new(ERC721BurnableTransfer)
 21292  				if err := _ERC721Burnable.contract.UnpackLog(event, "Transfer", log); err != nil {
 21293  					return err
 21294  				}
 21295  				event.Raw = log
 21296  
 21297  				select {
 21298  				case sink <- event:
 21299  				case err := <-sub.Err():
 21300  					return err
 21301  				case <-quit:
 21302  					return nil
 21303  				}
 21304  			case err := <-sub.Err():
 21305  				return err
 21306  			case <-quit:
 21307  				return nil
 21308  			}
 21309  		}
 21310  	}), nil
 21311  }
 21312  
 21313  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 21314  //
 21315  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 21316  func (_ERC721Burnable *ERC721BurnableFilterer) ParseTransfer(log types.Log) (*ERC721BurnableTransfer, error) {
 21317  	event := new(ERC721BurnableTransfer)
 21318  	if err := _ERC721Burnable.contract.UnpackLog(event, "Transfer", log); err != nil {
 21319  		return nil, err
 21320  	}
 21321  	return event, nil
 21322  }
 21323  
 21324  // ERC721MetadataABI is the input ABI used to generate the binding from.
 21325  const ERC721MetadataABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"symbol\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
 21326  
 21327  // ERC721MetadataBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 21328  const ERC721MetadataBinRuntime = `608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146102bc578063b88d4fde146102ea578063c87b56dd146103b0578063e985e9c5146103cd576100cf565b80636352211e1461025f57806370a082311461027c57806395d89b41146102b4576100cf565b806301ffc9a7146100d457806306fdde031461010f578063081812fc1461018c578063095ea7b3146101c557806323b872dd146101f357806342842e0e14610229575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103fb565b604080519115158252519081900360200190f35b61011761041a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610151578181015183820152602001610139565b50505050905090810190601f16801561017e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a9600480360360208110156101a257600080fd5b50356104b0565b604080516001600160a01b039092168252519081900360200190f35b6101f1600480360360408110156101db57600080fd5b506001600160a01b038135169060200135610515565b005b6101f16004803603606081101561020957600080fd5b506001600160a01b0381358116916020810135909116906040013561062c565b6101f16004803603606081101561023f57600080fd5b506001600160a01b03813581169160208101359091169060400135610684565b6101a96004803603602081101561027557600080fd5b503561069f565b6102a26004803603602081101561029257600080fd5b50356001600160a01b03166106fc565b60408051918252519081900360200190f35b610117610767565b6101f1600480360360408110156102d257600080fd5b506001600160a01b03813516906020013515156107c8565b6101f16004803603608081101561030057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184600183028401116401000000008311171561036f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610897945050505050565b610117600480360360208110156103c657600080fd5b50356108f2565b6100fb600480360360408110156103e357600080fd5b506001600160a01b03813581169160200135166109da565b6001600160e01b03191660009081526020819052604090205460ff1690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b820191906000526020600020905b81548152906001019060200180831161048957829003601f168201915b5050505050905090565b60006104bb82610a08565b6104f957604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610f24602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105208261069f565b9050806001600160a01b0316836001600160a01b0316141561057657604051600160e51b62461bcd028152600401808060200182810382526021815260200180610fa86021913960400191505060405180910390fd5b336001600160a01b0382161480610592575061059281336109da565b6105d057604051600160e51b62461bcd028152600401808060200182810382526038815260200180610e996038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6106363382610a25565b61067457604051600160e51b62461bcd028152600401808060200182810382526031815260200180610fc96031913960400191505060405180910390fd5b61067f838383610acc565b505050565b61067f83838360405180602001604052806000815250610897565b6000818152600160205260408120546001600160a01b0316806106f657604051600160e51b62461bcd028152600401808060200182810382526029815260200180610efb6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661074657604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610ed1602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106f690610c16565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b6001600160a01b0382163314156108295760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6108a284848461062c565b6108ae84848484610c1a565b6108ec57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e176032913960400191505060405180910390fd5b50505050565b60606108fd82610a08565b61093b57604051600160e51b62461bcd02815260040180806020018281038252602f815260200180610f79602f913960400191505060405180910390fd5b60008281526007602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156109ce5780601f106109a3576101008083540402835291602001916109ce565b820191906000526020600020905b8154815290600101906020018083116109b157829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610a3082610a08565b610a6e57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610e6d602c913960400191505060405180910390fd5b6000610a798361069f565b9050806001600160a01b0316846001600160a01b03161480610ab45750836001600160a01b0316610aa9846104b0565b6001600160a01b0316145b80610ac45750610ac481856109da565b949350505050565b826001600160a01b0316610adf8261069f565b6001600160a01b031614610b2757604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f506029913960400191505060405180910390fd5b6001600160a01b038216610b6f57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610e496024913960400191505060405180910390fd5b610b7881610d53565b6001600160a01b0383166000908152600360205260409020610b9990610d90565b6001600160a01b0382166000908152600360205260409020610bba90610da7565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b6000610c2e846001600160a01b0316610db0565b610c3a57506001610ac4565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610cb7578181015183820152602001610c9f565b50505050905090810190601f168015610ce45780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610d8d57600081815260026020526040902080546001600160a01b03191690555b50565b8054610da390600163ffffffff610db616565b9055565b80546001019055565b3b151590565b600082821115610e105760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582037ba54c848524be0056a573891a8b0f5c56b08f8613060e9876ee13fe582c6480029`
 21329  
 21330  // ERC721MetadataFuncSigs maps the 4-byte function signature to its string representation.
 21331  var ERC721MetadataFuncSigs = map[string]string{
 21332  	"095ea7b3": "approve(address,uint256)",
 21333  	"70a08231": "balanceOf(address)",
 21334  	"081812fc": "getApproved(uint256)",
 21335  	"e985e9c5": "isApprovedForAll(address,address)",
 21336  	"06fdde03": "name()",
 21337  	"6352211e": "ownerOf(uint256)",
 21338  	"42842e0e": "safeTransferFrom(address,address,uint256)",
 21339  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
 21340  	"a22cb465": "setApprovalForAll(address,bool)",
 21341  	"01ffc9a7": "supportsInterface(bytes4)",
 21342  	"95d89b41": "symbol()",
 21343  	"c87b56dd": "tokenURI(uint256)",
 21344  	"23b872dd": "transferFrom(address,address,uint256)",
 21345  }
 21346  
 21347  // ERC721MetadataBin is the compiled bytecode used for deploying new contracts.
 21348  var ERC721MetadataBin = "0x60806040523480156200001157600080fd5b50604051620012f8380380620012f8833981018060405260408110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b820160208101848111156200006457600080fd5b81516401000000008111828201871017156200007f57600080fd5b505092919060200180516401000000008111156200009c57600080fd5b82016020810184811115620000b057600080fd5b8151640100000000811182820187101715620000cb57600080fd5b5050929190505050620000eb6301ffc9a760e01b6200014f60201b60201c565b620001036380ac58cd60e01b6200014f60201b60201c565b8151620001189060059060208501906200021e565b5080516200012e9060069060208401906200021e565b5062000147635b5e139f60e01b6200014f60201b60201c565b5050620002c3565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620001e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026157805160ff191683800117855562000291565b8280016001018555821562000291579182015b828111156200029157825182559160200191906001019062000274565b506200029f929150620002a3565b5090565b620002c091905b808211156200029f5760008155600101620002aa565b90565b61102580620002d36000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146102bc578063b88d4fde146102ea578063c87b56dd146103b0578063e985e9c5146103cd576100cf565b80636352211e1461025f57806370a082311461027c57806395d89b41146102b4576100cf565b806301ffc9a7146100d457806306fdde031461010f578063081812fc1461018c578063095ea7b3146101c557806323b872dd146101f357806342842e0e14610229575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103fb565b604080519115158252519081900360200190f35b61011761041a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610151578181015183820152602001610139565b50505050905090810190601f16801561017e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a9600480360360208110156101a257600080fd5b50356104b0565b604080516001600160a01b039092168252519081900360200190f35b6101f1600480360360408110156101db57600080fd5b506001600160a01b038135169060200135610515565b005b6101f16004803603606081101561020957600080fd5b506001600160a01b0381358116916020810135909116906040013561062c565b6101f16004803603606081101561023f57600080fd5b506001600160a01b03813581169160208101359091169060400135610684565b6101a96004803603602081101561027557600080fd5b503561069f565b6102a26004803603602081101561029257600080fd5b50356001600160a01b03166106fc565b60408051918252519081900360200190f35b610117610767565b6101f1600480360360408110156102d257600080fd5b506001600160a01b03813516906020013515156107c8565b6101f16004803603608081101561030057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184600183028401116401000000008311171561036f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610897945050505050565b610117600480360360208110156103c657600080fd5b50356108f2565b6100fb600480360360408110156103e357600080fd5b506001600160a01b03813581169160200135166109da565b6001600160e01b03191660009081526020819052604090205460ff1690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b820191906000526020600020905b81548152906001019060200180831161048957829003601f168201915b5050505050905090565b60006104bb82610a08565b6104f957604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610f24602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105208261069f565b9050806001600160a01b0316836001600160a01b0316141561057657604051600160e51b62461bcd028152600401808060200182810382526021815260200180610fa86021913960400191505060405180910390fd5b336001600160a01b0382161480610592575061059281336109da565b6105d057604051600160e51b62461bcd028152600401808060200182810382526038815260200180610e996038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6106363382610a25565b61067457604051600160e51b62461bcd028152600401808060200182810382526031815260200180610fc96031913960400191505060405180910390fd5b61067f838383610acc565b505050565b61067f83838360405180602001604052806000815250610897565b6000818152600160205260408120546001600160a01b0316806106f657604051600160e51b62461bcd028152600401808060200182810382526029815260200180610efb6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661074657604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610ed1602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106f690610c16565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b6001600160a01b0382163314156108295760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6108a284848461062c565b6108ae84848484610c1a565b6108ec57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e176032913960400191505060405180910390fd5b50505050565b60606108fd82610a08565b61093b57604051600160e51b62461bcd02815260040180806020018281038252602f815260200180610f79602f913960400191505060405180910390fd5b60008281526007602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156109ce5780601f106109a3576101008083540402835291602001916109ce565b820191906000526020600020905b8154815290600101906020018083116109b157829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610a3082610a08565b610a6e57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610e6d602c913960400191505060405180910390fd5b6000610a798361069f565b9050806001600160a01b0316846001600160a01b03161480610ab45750836001600160a01b0316610aa9846104b0565b6001600160a01b0316145b80610ac45750610ac481856109da565b949350505050565b826001600160a01b0316610adf8261069f565b6001600160a01b031614610b2757604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f506029913960400191505060405180910390fd5b6001600160a01b038216610b6f57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610e496024913960400191505060405180910390fd5b610b7881610d53565b6001600160a01b0383166000908152600360205260409020610b9990610d90565b6001600160a01b0382166000908152600360205260409020610bba90610da7565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b6000610c2e846001600160a01b0316610db0565b610c3a57506001610ac4565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610cb7578181015183820152602001610c9f565b50505050905090810190601f168015610ce45780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610d8d57600081815260026020526040902080546001600160a01b03191690555b50565b8054610da390600163ffffffff610db616565b9055565b80546001019055565b3b151590565b600082821115610e105760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582037ba54c848524be0056a573891a8b0f5c56b08f8613060e9876ee13fe582c6480029"
 21349  
 21350  // DeployERC721Metadata deploys a new Klaytn contract, binding an instance of ERC721Metadata to it.
 21351  func DeployERC721Metadata(auth *bind.TransactOpts, backend bind.ContractBackend, name string, symbol string) (common.Address, *types.Transaction, *ERC721Metadata, error) {
 21352  	parsed, err := abi.JSON(strings.NewReader(ERC721MetadataABI))
 21353  	if err != nil {
 21354  		return common.Address{}, nil, nil, err
 21355  	}
 21356  
 21357  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC721MetadataBin), backend, name, symbol)
 21358  	if err != nil {
 21359  		return common.Address{}, nil, nil, err
 21360  	}
 21361  	return address, tx, &ERC721Metadata{ERC721MetadataCaller: ERC721MetadataCaller{contract: contract}, ERC721MetadataTransactor: ERC721MetadataTransactor{contract: contract}, ERC721MetadataFilterer: ERC721MetadataFilterer{contract: contract}}, nil
 21362  }
 21363  
 21364  // ERC721Metadata is an auto generated Go binding around a Klaytn contract.
 21365  type ERC721Metadata struct {
 21366  	ERC721MetadataCaller     // Read-only binding to the contract
 21367  	ERC721MetadataTransactor // Write-only binding to the contract
 21368  	ERC721MetadataFilterer   // Log filterer for contract events
 21369  }
 21370  
 21371  // ERC721MetadataCaller is an auto generated read-only Go binding around a Klaytn contract.
 21372  type ERC721MetadataCaller struct {
 21373  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 21374  }
 21375  
 21376  // ERC721MetadataTransactor is an auto generated write-only Go binding around a Klaytn contract.
 21377  type ERC721MetadataTransactor struct {
 21378  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 21379  }
 21380  
 21381  // ERC721MetadataFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 21382  type ERC721MetadataFilterer struct {
 21383  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 21384  }
 21385  
 21386  // ERC721MetadataSession is an auto generated Go binding around a Klaytn contract,
 21387  // with pre-set call and transact options.
 21388  type ERC721MetadataSession struct {
 21389  	Contract     *ERC721Metadata   // Generic contract binding to set the session for
 21390  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 21391  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 21392  }
 21393  
 21394  // ERC721MetadataCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 21395  // with pre-set call options.
 21396  type ERC721MetadataCallerSession struct {
 21397  	Contract *ERC721MetadataCaller // Generic contract caller binding to set the session for
 21398  	CallOpts bind.CallOpts         // Call options to use throughout this session
 21399  }
 21400  
 21401  // ERC721MetadataTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 21402  // with pre-set transact options.
 21403  type ERC721MetadataTransactorSession struct {
 21404  	Contract     *ERC721MetadataTransactor // Generic contract transactor binding to set the session for
 21405  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
 21406  }
 21407  
 21408  // ERC721MetadataRaw is an auto generated low-level Go binding around a Klaytn contract.
 21409  type ERC721MetadataRaw struct {
 21410  	Contract *ERC721Metadata // Generic contract binding to access the raw methods on
 21411  }
 21412  
 21413  // ERC721MetadataCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 21414  type ERC721MetadataCallerRaw struct {
 21415  	Contract *ERC721MetadataCaller // Generic read-only contract binding to access the raw methods on
 21416  }
 21417  
 21418  // ERC721MetadataTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 21419  type ERC721MetadataTransactorRaw struct {
 21420  	Contract *ERC721MetadataTransactor // Generic write-only contract binding to access the raw methods on
 21421  }
 21422  
 21423  // NewERC721Metadata creates a new instance of ERC721Metadata, bound to a specific deployed contract.
 21424  func NewERC721Metadata(address common.Address, backend bind.ContractBackend) (*ERC721Metadata, error) {
 21425  	contract, err := bindERC721Metadata(address, backend, backend, backend)
 21426  	if err != nil {
 21427  		return nil, err
 21428  	}
 21429  	return &ERC721Metadata{ERC721MetadataCaller: ERC721MetadataCaller{contract: contract}, ERC721MetadataTransactor: ERC721MetadataTransactor{contract: contract}, ERC721MetadataFilterer: ERC721MetadataFilterer{contract: contract}}, nil
 21430  }
 21431  
 21432  // NewERC721MetadataCaller creates a new read-only instance of ERC721Metadata, bound to a specific deployed contract.
 21433  func NewERC721MetadataCaller(address common.Address, caller bind.ContractCaller) (*ERC721MetadataCaller, error) {
 21434  	contract, err := bindERC721Metadata(address, caller, nil, nil)
 21435  	if err != nil {
 21436  		return nil, err
 21437  	}
 21438  	return &ERC721MetadataCaller{contract: contract}, nil
 21439  }
 21440  
 21441  // NewERC721MetadataTransactor creates a new write-only instance of ERC721Metadata, bound to a specific deployed contract.
 21442  func NewERC721MetadataTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721MetadataTransactor, error) {
 21443  	contract, err := bindERC721Metadata(address, nil, transactor, nil)
 21444  	if err != nil {
 21445  		return nil, err
 21446  	}
 21447  	return &ERC721MetadataTransactor{contract: contract}, nil
 21448  }
 21449  
 21450  // NewERC721MetadataFilterer creates a new log filterer instance of ERC721Metadata, bound to a specific deployed contract.
 21451  func NewERC721MetadataFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721MetadataFilterer, error) {
 21452  	contract, err := bindERC721Metadata(address, nil, nil, filterer)
 21453  	if err != nil {
 21454  		return nil, err
 21455  	}
 21456  	return &ERC721MetadataFilterer{contract: contract}, nil
 21457  }
 21458  
 21459  // bindERC721Metadata binds a generic wrapper to an already deployed contract.
 21460  func bindERC721Metadata(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 21461  	parsed, err := abi.JSON(strings.NewReader(ERC721MetadataABI))
 21462  	if err != nil {
 21463  		return nil, err
 21464  	}
 21465  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 21466  }
 21467  
 21468  // Call invokes the (constant) contract method with params as input values and
 21469  // sets the output to result. The result type might be a single field for simple
 21470  // returns, a slice of interfaces for anonymous returns and a struct for named
 21471  // returns.
 21472  func (_ERC721Metadata *ERC721MetadataRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 21473  	return _ERC721Metadata.Contract.ERC721MetadataCaller.contract.Call(opts, result, method, params...)
 21474  }
 21475  
 21476  // Transfer initiates a plain transaction to move funds to the contract, calling
 21477  // its default method if one is available.
 21478  func (_ERC721Metadata *ERC721MetadataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 21479  	return _ERC721Metadata.Contract.ERC721MetadataTransactor.contract.Transfer(opts)
 21480  }
 21481  
 21482  // Transact invokes the (paid) contract method with params as input values.
 21483  func (_ERC721Metadata *ERC721MetadataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 21484  	return _ERC721Metadata.Contract.ERC721MetadataTransactor.contract.Transact(opts, method, params...)
 21485  }
 21486  
 21487  // Call invokes the (constant) contract method with params as input values and
 21488  // sets the output to result. The result type might be a single field for simple
 21489  // returns, a slice of interfaces for anonymous returns and a struct for named
 21490  // returns.
 21491  func (_ERC721Metadata *ERC721MetadataCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 21492  	return _ERC721Metadata.Contract.contract.Call(opts, result, method, params...)
 21493  }
 21494  
 21495  // Transfer initiates a plain transaction to move funds to the contract, calling
 21496  // its default method if one is available.
 21497  func (_ERC721Metadata *ERC721MetadataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 21498  	return _ERC721Metadata.Contract.contract.Transfer(opts)
 21499  }
 21500  
 21501  // Transact invokes the (paid) contract method with params as input values.
 21502  func (_ERC721Metadata *ERC721MetadataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 21503  	return _ERC721Metadata.Contract.contract.Transact(opts, method, params...)
 21504  }
 21505  
 21506  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 21507  //
 21508  // Solidity: function balanceOf(address owner) view returns(uint256)
 21509  func (_ERC721Metadata *ERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
 21510  	var (
 21511  		ret0 = new(*big.Int)
 21512  	)
 21513  	out := ret0
 21514  	err := _ERC721Metadata.contract.Call(opts, out, "balanceOf", owner)
 21515  	return *ret0, err
 21516  }
 21517  
 21518  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 21519  //
 21520  // Solidity: function balanceOf(address owner) view returns(uint256)
 21521  func (_ERC721Metadata *ERC721MetadataSession) BalanceOf(owner common.Address) (*big.Int, error) {
 21522  	return _ERC721Metadata.Contract.BalanceOf(&_ERC721Metadata.CallOpts, owner)
 21523  }
 21524  
 21525  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 21526  //
 21527  // Solidity: function balanceOf(address owner) view returns(uint256)
 21528  func (_ERC721Metadata *ERC721MetadataCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
 21529  	return _ERC721Metadata.Contract.BalanceOf(&_ERC721Metadata.CallOpts, owner)
 21530  }
 21531  
 21532  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 21533  //
 21534  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 21535  func (_ERC721Metadata *ERC721MetadataCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 21536  	var (
 21537  		ret0 = new(common.Address)
 21538  	)
 21539  	out := ret0
 21540  	err := _ERC721Metadata.contract.Call(opts, out, "getApproved", tokenId)
 21541  	return *ret0, err
 21542  }
 21543  
 21544  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 21545  //
 21546  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 21547  func (_ERC721Metadata *ERC721MetadataSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 21548  	return _ERC721Metadata.Contract.GetApproved(&_ERC721Metadata.CallOpts, tokenId)
 21549  }
 21550  
 21551  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 21552  //
 21553  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 21554  func (_ERC721Metadata *ERC721MetadataCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 21555  	return _ERC721Metadata.Contract.GetApproved(&_ERC721Metadata.CallOpts, tokenId)
 21556  }
 21557  
 21558  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 21559  //
 21560  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 21561  func (_ERC721Metadata *ERC721MetadataCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
 21562  	var (
 21563  		ret0 = new(bool)
 21564  	)
 21565  	out := ret0
 21566  	err := _ERC721Metadata.contract.Call(opts, out, "isApprovedForAll", owner, operator)
 21567  	return *ret0, err
 21568  }
 21569  
 21570  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 21571  //
 21572  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 21573  func (_ERC721Metadata *ERC721MetadataSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 21574  	return _ERC721Metadata.Contract.IsApprovedForAll(&_ERC721Metadata.CallOpts, owner, operator)
 21575  }
 21576  
 21577  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 21578  //
 21579  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 21580  func (_ERC721Metadata *ERC721MetadataCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 21581  	return _ERC721Metadata.Contract.IsApprovedForAll(&_ERC721Metadata.CallOpts, owner, operator)
 21582  }
 21583  
 21584  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 21585  //
 21586  // Solidity: function name() view returns(string)
 21587  func (_ERC721Metadata *ERC721MetadataCaller) Name(opts *bind.CallOpts) (string, error) {
 21588  	var (
 21589  		ret0 = new(string)
 21590  	)
 21591  	out := ret0
 21592  	err := _ERC721Metadata.contract.Call(opts, out, "name")
 21593  	return *ret0, err
 21594  }
 21595  
 21596  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 21597  //
 21598  // Solidity: function name() view returns(string)
 21599  func (_ERC721Metadata *ERC721MetadataSession) Name() (string, error) {
 21600  	return _ERC721Metadata.Contract.Name(&_ERC721Metadata.CallOpts)
 21601  }
 21602  
 21603  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 21604  //
 21605  // Solidity: function name() view returns(string)
 21606  func (_ERC721Metadata *ERC721MetadataCallerSession) Name() (string, error) {
 21607  	return _ERC721Metadata.Contract.Name(&_ERC721Metadata.CallOpts)
 21608  }
 21609  
 21610  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 21611  //
 21612  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 21613  func (_ERC721Metadata *ERC721MetadataCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 21614  	var (
 21615  		ret0 = new(common.Address)
 21616  	)
 21617  	out := ret0
 21618  	err := _ERC721Metadata.contract.Call(opts, out, "ownerOf", tokenId)
 21619  	return *ret0, err
 21620  }
 21621  
 21622  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 21623  //
 21624  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 21625  func (_ERC721Metadata *ERC721MetadataSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 21626  	return _ERC721Metadata.Contract.OwnerOf(&_ERC721Metadata.CallOpts, tokenId)
 21627  }
 21628  
 21629  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 21630  //
 21631  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 21632  func (_ERC721Metadata *ERC721MetadataCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 21633  	return _ERC721Metadata.Contract.OwnerOf(&_ERC721Metadata.CallOpts, tokenId)
 21634  }
 21635  
 21636  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 21637  //
 21638  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 21639  func (_ERC721Metadata *ERC721MetadataCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
 21640  	var (
 21641  		ret0 = new(bool)
 21642  	)
 21643  	out := ret0
 21644  	err := _ERC721Metadata.contract.Call(opts, out, "supportsInterface", interfaceId)
 21645  	return *ret0, err
 21646  }
 21647  
 21648  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 21649  //
 21650  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 21651  func (_ERC721Metadata *ERC721MetadataSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 21652  	return _ERC721Metadata.Contract.SupportsInterface(&_ERC721Metadata.CallOpts, interfaceId)
 21653  }
 21654  
 21655  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 21656  //
 21657  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 21658  func (_ERC721Metadata *ERC721MetadataCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 21659  	return _ERC721Metadata.Contract.SupportsInterface(&_ERC721Metadata.CallOpts, interfaceId)
 21660  }
 21661  
 21662  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 21663  //
 21664  // Solidity: function symbol() view returns(string)
 21665  func (_ERC721Metadata *ERC721MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) {
 21666  	var (
 21667  		ret0 = new(string)
 21668  	)
 21669  	out := ret0
 21670  	err := _ERC721Metadata.contract.Call(opts, out, "symbol")
 21671  	return *ret0, err
 21672  }
 21673  
 21674  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 21675  //
 21676  // Solidity: function symbol() view returns(string)
 21677  func (_ERC721Metadata *ERC721MetadataSession) Symbol() (string, error) {
 21678  	return _ERC721Metadata.Contract.Symbol(&_ERC721Metadata.CallOpts)
 21679  }
 21680  
 21681  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 21682  //
 21683  // Solidity: function symbol() view returns(string)
 21684  func (_ERC721Metadata *ERC721MetadataCallerSession) Symbol() (string, error) {
 21685  	return _ERC721Metadata.Contract.Symbol(&_ERC721Metadata.CallOpts)
 21686  }
 21687  
 21688  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 21689  //
 21690  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 21691  func (_ERC721Metadata *ERC721MetadataCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) {
 21692  	var (
 21693  		ret0 = new(string)
 21694  	)
 21695  	out := ret0
 21696  	err := _ERC721Metadata.contract.Call(opts, out, "tokenURI", tokenId)
 21697  	return *ret0, err
 21698  }
 21699  
 21700  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 21701  //
 21702  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 21703  func (_ERC721Metadata *ERC721MetadataSession) TokenURI(tokenId *big.Int) (string, error) {
 21704  	return _ERC721Metadata.Contract.TokenURI(&_ERC721Metadata.CallOpts, tokenId)
 21705  }
 21706  
 21707  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 21708  //
 21709  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 21710  func (_ERC721Metadata *ERC721MetadataCallerSession) TokenURI(tokenId *big.Int) (string, error) {
 21711  	return _ERC721Metadata.Contract.TokenURI(&_ERC721Metadata.CallOpts, tokenId)
 21712  }
 21713  
 21714  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 21715  //
 21716  // Solidity: function approve(address to, uint256 tokenId) returns()
 21717  func (_ERC721Metadata *ERC721MetadataTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 21718  	return _ERC721Metadata.contract.Transact(opts, "approve", to, tokenId)
 21719  }
 21720  
 21721  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 21722  //
 21723  // Solidity: function approve(address to, uint256 tokenId) returns()
 21724  func (_ERC721Metadata *ERC721MetadataSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 21725  	return _ERC721Metadata.Contract.Approve(&_ERC721Metadata.TransactOpts, to, tokenId)
 21726  }
 21727  
 21728  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 21729  //
 21730  // Solidity: function approve(address to, uint256 tokenId) returns()
 21731  func (_ERC721Metadata *ERC721MetadataTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 21732  	return _ERC721Metadata.Contract.Approve(&_ERC721Metadata.TransactOpts, to, tokenId)
 21733  }
 21734  
 21735  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 21736  //
 21737  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 21738  func (_ERC721Metadata *ERC721MetadataTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 21739  	return _ERC721Metadata.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
 21740  }
 21741  
 21742  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 21743  //
 21744  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 21745  func (_ERC721Metadata *ERC721MetadataSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 21746  	return _ERC721Metadata.Contract.SafeTransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId)
 21747  }
 21748  
 21749  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 21750  //
 21751  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 21752  func (_ERC721Metadata *ERC721MetadataTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 21753  	return _ERC721Metadata.Contract.SafeTransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId)
 21754  }
 21755  
 21756  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 21757  //
 21758  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 21759  func (_ERC721Metadata *ERC721MetadataTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 21760  	return _ERC721Metadata.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
 21761  }
 21762  
 21763  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 21764  //
 21765  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 21766  func (_ERC721Metadata *ERC721MetadataSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 21767  	return _ERC721Metadata.Contract.SafeTransferFrom0(&_ERC721Metadata.TransactOpts, from, to, tokenId, _data)
 21768  }
 21769  
 21770  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 21771  //
 21772  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 21773  func (_ERC721Metadata *ERC721MetadataTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 21774  	return _ERC721Metadata.Contract.SafeTransferFrom0(&_ERC721Metadata.TransactOpts, from, to, tokenId, _data)
 21775  }
 21776  
 21777  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 21778  //
 21779  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 21780  func (_ERC721Metadata *ERC721MetadataTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
 21781  	return _ERC721Metadata.contract.Transact(opts, "setApprovalForAll", to, approved)
 21782  }
 21783  
 21784  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 21785  //
 21786  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 21787  func (_ERC721Metadata *ERC721MetadataSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
 21788  	return _ERC721Metadata.Contract.SetApprovalForAll(&_ERC721Metadata.TransactOpts, to, approved)
 21789  }
 21790  
 21791  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 21792  //
 21793  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 21794  func (_ERC721Metadata *ERC721MetadataTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
 21795  	return _ERC721Metadata.Contract.SetApprovalForAll(&_ERC721Metadata.TransactOpts, to, approved)
 21796  }
 21797  
 21798  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 21799  //
 21800  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 21801  func (_ERC721Metadata *ERC721MetadataTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 21802  	return _ERC721Metadata.contract.Transact(opts, "transferFrom", from, to, tokenId)
 21803  }
 21804  
 21805  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 21806  //
 21807  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 21808  func (_ERC721Metadata *ERC721MetadataSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 21809  	return _ERC721Metadata.Contract.TransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId)
 21810  }
 21811  
 21812  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 21813  //
 21814  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 21815  func (_ERC721Metadata *ERC721MetadataTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 21816  	return _ERC721Metadata.Contract.TransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId)
 21817  }
 21818  
 21819  // ERC721MetadataApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721Metadata contract.
 21820  type ERC721MetadataApprovalIterator struct {
 21821  	Event *ERC721MetadataApproval // Event containing the contract specifics and raw log
 21822  
 21823  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 21824  	event    string              // Event name to use for unpacking event data
 21825  
 21826  	logs chan types.Log      // Log channel receiving the found contract events
 21827  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 21828  	done bool                // Whether the subscription completed delivering logs
 21829  	fail error               // Occurred error to stop iteration
 21830  }
 21831  
 21832  // Next advances the iterator to the subsequent event, returning whether there
 21833  // are any more events found. In case of a retrieval or parsing error, false is
 21834  // returned and Error() can be queried for the exact failure.
 21835  func (it *ERC721MetadataApprovalIterator) Next() bool {
 21836  	// If the iterator failed, stop iterating
 21837  	if it.fail != nil {
 21838  		return false
 21839  	}
 21840  	// If the iterator completed, deliver directly whatever's available
 21841  	if it.done {
 21842  		select {
 21843  		case log := <-it.logs:
 21844  			it.Event = new(ERC721MetadataApproval)
 21845  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 21846  				it.fail = err
 21847  				return false
 21848  			}
 21849  			it.Event.Raw = log
 21850  			return true
 21851  
 21852  		default:
 21853  			return false
 21854  		}
 21855  	}
 21856  	// Iterator still in progress, wait for either a data or an error event
 21857  	select {
 21858  	case log := <-it.logs:
 21859  		it.Event = new(ERC721MetadataApproval)
 21860  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 21861  			it.fail = err
 21862  			return false
 21863  		}
 21864  		it.Event.Raw = log
 21865  		return true
 21866  
 21867  	case err := <-it.sub.Err():
 21868  		it.done = true
 21869  		it.fail = err
 21870  		return it.Next()
 21871  	}
 21872  }
 21873  
 21874  // Error returns any retrieval or parsing error occurred during filtering.
 21875  func (it *ERC721MetadataApprovalIterator) Error() error {
 21876  	return it.fail
 21877  }
 21878  
 21879  // Close terminates the iteration process, releasing any pending underlying
 21880  // resources.
 21881  func (it *ERC721MetadataApprovalIterator) Close() error {
 21882  	it.sub.Unsubscribe()
 21883  	return nil
 21884  }
 21885  
 21886  // ERC721MetadataApproval represents a Approval event raised by the ERC721Metadata contract.
 21887  type ERC721MetadataApproval struct {
 21888  	Owner    common.Address
 21889  	Approved common.Address
 21890  	TokenId  *big.Int
 21891  	Raw      types.Log // Blockchain specific contextual infos
 21892  }
 21893  
 21894  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 21895  //
 21896  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 21897  func (_ERC721Metadata *ERC721MetadataFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721MetadataApprovalIterator, error) {
 21898  
 21899  	var ownerRule []interface{}
 21900  	for _, ownerItem := range owner {
 21901  		ownerRule = append(ownerRule, ownerItem)
 21902  	}
 21903  	var approvedRule []interface{}
 21904  	for _, approvedItem := range approved {
 21905  		approvedRule = append(approvedRule, approvedItem)
 21906  	}
 21907  	var tokenIdRule []interface{}
 21908  	for _, tokenIdItem := range tokenId {
 21909  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 21910  	}
 21911  
 21912  	logs, sub, err := _ERC721Metadata.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 21913  	if err != nil {
 21914  		return nil, err
 21915  	}
 21916  	return &ERC721MetadataApprovalIterator{contract: _ERC721Metadata.contract, event: "Approval", logs: logs, sub: sub}, nil
 21917  }
 21918  
 21919  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 21920  //
 21921  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 21922  func (_ERC721Metadata *ERC721MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721MetadataApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 21923  
 21924  	var ownerRule []interface{}
 21925  	for _, ownerItem := range owner {
 21926  		ownerRule = append(ownerRule, ownerItem)
 21927  	}
 21928  	var approvedRule []interface{}
 21929  	for _, approvedItem := range approved {
 21930  		approvedRule = append(approvedRule, approvedItem)
 21931  	}
 21932  	var tokenIdRule []interface{}
 21933  	for _, tokenIdItem := range tokenId {
 21934  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 21935  	}
 21936  
 21937  	logs, sub, err := _ERC721Metadata.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 21938  	if err != nil {
 21939  		return nil, err
 21940  	}
 21941  	return event.NewSubscription(func(quit <-chan struct{}) error {
 21942  		defer sub.Unsubscribe()
 21943  		for {
 21944  			select {
 21945  			case log := <-logs:
 21946  				// New log arrived, parse the event and forward to the user
 21947  				event := new(ERC721MetadataApproval)
 21948  				if err := _ERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil {
 21949  					return err
 21950  				}
 21951  				event.Raw = log
 21952  
 21953  				select {
 21954  				case sink <- event:
 21955  				case err := <-sub.Err():
 21956  					return err
 21957  				case <-quit:
 21958  					return nil
 21959  				}
 21960  			case err := <-sub.Err():
 21961  				return err
 21962  			case <-quit:
 21963  				return nil
 21964  			}
 21965  		}
 21966  	}), nil
 21967  }
 21968  
 21969  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 21970  //
 21971  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 21972  func (_ERC721Metadata *ERC721MetadataFilterer) ParseApproval(log types.Log) (*ERC721MetadataApproval, error) {
 21973  	event := new(ERC721MetadataApproval)
 21974  	if err := _ERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil {
 21975  		return nil, err
 21976  	}
 21977  	return event, nil
 21978  }
 21979  
 21980  // ERC721MetadataApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721Metadata contract.
 21981  type ERC721MetadataApprovalForAllIterator struct {
 21982  	Event *ERC721MetadataApprovalForAll // Event containing the contract specifics and raw log
 21983  
 21984  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 21985  	event    string              // Event name to use for unpacking event data
 21986  
 21987  	logs chan types.Log      // Log channel receiving the found contract events
 21988  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 21989  	done bool                // Whether the subscription completed delivering logs
 21990  	fail error               // Occurred error to stop iteration
 21991  }
 21992  
 21993  // Next advances the iterator to the subsequent event, returning whether there
 21994  // are any more events found. In case of a retrieval or parsing error, false is
 21995  // returned and Error() can be queried for the exact failure.
 21996  func (it *ERC721MetadataApprovalForAllIterator) Next() bool {
 21997  	// If the iterator failed, stop iterating
 21998  	if it.fail != nil {
 21999  		return false
 22000  	}
 22001  	// If the iterator completed, deliver directly whatever's available
 22002  	if it.done {
 22003  		select {
 22004  		case log := <-it.logs:
 22005  			it.Event = new(ERC721MetadataApprovalForAll)
 22006  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 22007  				it.fail = err
 22008  				return false
 22009  			}
 22010  			it.Event.Raw = log
 22011  			return true
 22012  
 22013  		default:
 22014  			return false
 22015  		}
 22016  	}
 22017  	// Iterator still in progress, wait for either a data or an error event
 22018  	select {
 22019  	case log := <-it.logs:
 22020  		it.Event = new(ERC721MetadataApprovalForAll)
 22021  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 22022  			it.fail = err
 22023  			return false
 22024  		}
 22025  		it.Event.Raw = log
 22026  		return true
 22027  
 22028  	case err := <-it.sub.Err():
 22029  		it.done = true
 22030  		it.fail = err
 22031  		return it.Next()
 22032  	}
 22033  }
 22034  
 22035  // Error returns any retrieval or parsing error occurred during filtering.
 22036  func (it *ERC721MetadataApprovalForAllIterator) Error() error {
 22037  	return it.fail
 22038  }
 22039  
 22040  // Close terminates the iteration process, releasing any pending underlying
 22041  // resources.
 22042  func (it *ERC721MetadataApprovalForAllIterator) Close() error {
 22043  	it.sub.Unsubscribe()
 22044  	return nil
 22045  }
 22046  
 22047  // ERC721MetadataApprovalForAll represents a ApprovalForAll event raised by the ERC721Metadata contract.
 22048  type ERC721MetadataApprovalForAll struct {
 22049  	Owner    common.Address
 22050  	Operator common.Address
 22051  	Approved bool
 22052  	Raw      types.Log // Blockchain specific contextual infos
 22053  }
 22054  
 22055  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 22056  //
 22057  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 22058  func (_ERC721Metadata *ERC721MetadataFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721MetadataApprovalForAllIterator, error) {
 22059  
 22060  	var ownerRule []interface{}
 22061  	for _, ownerItem := range owner {
 22062  		ownerRule = append(ownerRule, ownerItem)
 22063  	}
 22064  	var operatorRule []interface{}
 22065  	for _, operatorItem := range operator {
 22066  		operatorRule = append(operatorRule, operatorItem)
 22067  	}
 22068  
 22069  	logs, sub, err := _ERC721Metadata.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 22070  	if err != nil {
 22071  		return nil, err
 22072  	}
 22073  	return &ERC721MetadataApprovalForAllIterator{contract: _ERC721Metadata.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
 22074  }
 22075  
 22076  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 22077  //
 22078  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 22079  func (_ERC721Metadata *ERC721MetadataFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721MetadataApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
 22080  
 22081  	var ownerRule []interface{}
 22082  	for _, ownerItem := range owner {
 22083  		ownerRule = append(ownerRule, ownerItem)
 22084  	}
 22085  	var operatorRule []interface{}
 22086  	for _, operatorItem := range operator {
 22087  		operatorRule = append(operatorRule, operatorItem)
 22088  	}
 22089  
 22090  	logs, sub, err := _ERC721Metadata.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 22091  	if err != nil {
 22092  		return nil, err
 22093  	}
 22094  	return event.NewSubscription(func(quit <-chan struct{}) error {
 22095  		defer sub.Unsubscribe()
 22096  		for {
 22097  			select {
 22098  			case log := <-logs:
 22099  				// New log arrived, parse the event and forward to the user
 22100  				event := new(ERC721MetadataApprovalForAll)
 22101  				if err := _ERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 22102  					return err
 22103  				}
 22104  				event.Raw = log
 22105  
 22106  				select {
 22107  				case sink <- event:
 22108  				case err := <-sub.Err():
 22109  					return err
 22110  				case <-quit:
 22111  					return nil
 22112  				}
 22113  			case err := <-sub.Err():
 22114  				return err
 22115  			case <-quit:
 22116  				return nil
 22117  			}
 22118  		}
 22119  	}), nil
 22120  }
 22121  
 22122  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 22123  //
 22124  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 22125  func (_ERC721Metadata *ERC721MetadataFilterer) ParseApprovalForAll(log types.Log) (*ERC721MetadataApprovalForAll, error) {
 22126  	event := new(ERC721MetadataApprovalForAll)
 22127  	if err := _ERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 22128  		return nil, err
 22129  	}
 22130  	return event, nil
 22131  }
 22132  
 22133  // ERC721MetadataTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721Metadata contract.
 22134  type ERC721MetadataTransferIterator struct {
 22135  	Event *ERC721MetadataTransfer // Event containing the contract specifics and raw log
 22136  
 22137  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 22138  	event    string              // Event name to use for unpacking event data
 22139  
 22140  	logs chan types.Log      // Log channel receiving the found contract events
 22141  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 22142  	done bool                // Whether the subscription completed delivering logs
 22143  	fail error               // Occurred error to stop iteration
 22144  }
 22145  
 22146  // Next advances the iterator to the subsequent event, returning whether there
 22147  // are any more events found. In case of a retrieval or parsing error, false is
 22148  // returned and Error() can be queried for the exact failure.
 22149  func (it *ERC721MetadataTransferIterator) Next() bool {
 22150  	// If the iterator failed, stop iterating
 22151  	if it.fail != nil {
 22152  		return false
 22153  	}
 22154  	// If the iterator completed, deliver directly whatever's available
 22155  	if it.done {
 22156  		select {
 22157  		case log := <-it.logs:
 22158  			it.Event = new(ERC721MetadataTransfer)
 22159  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 22160  				it.fail = err
 22161  				return false
 22162  			}
 22163  			it.Event.Raw = log
 22164  			return true
 22165  
 22166  		default:
 22167  			return false
 22168  		}
 22169  	}
 22170  	// Iterator still in progress, wait for either a data or an error event
 22171  	select {
 22172  	case log := <-it.logs:
 22173  		it.Event = new(ERC721MetadataTransfer)
 22174  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 22175  			it.fail = err
 22176  			return false
 22177  		}
 22178  		it.Event.Raw = log
 22179  		return true
 22180  
 22181  	case err := <-it.sub.Err():
 22182  		it.done = true
 22183  		it.fail = err
 22184  		return it.Next()
 22185  	}
 22186  }
 22187  
 22188  // Error returns any retrieval or parsing error occurred during filtering.
 22189  func (it *ERC721MetadataTransferIterator) Error() error {
 22190  	return it.fail
 22191  }
 22192  
 22193  // Close terminates the iteration process, releasing any pending underlying
 22194  // resources.
 22195  func (it *ERC721MetadataTransferIterator) Close() error {
 22196  	it.sub.Unsubscribe()
 22197  	return nil
 22198  }
 22199  
 22200  // ERC721MetadataTransfer represents a Transfer event raised by the ERC721Metadata contract.
 22201  type ERC721MetadataTransfer struct {
 22202  	From    common.Address
 22203  	To      common.Address
 22204  	TokenId *big.Int
 22205  	Raw     types.Log // Blockchain specific contextual infos
 22206  }
 22207  
 22208  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 22209  //
 22210  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 22211  func (_ERC721Metadata *ERC721MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721MetadataTransferIterator, error) {
 22212  
 22213  	var fromRule []interface{}
 22214  	for _, fromItem := range from {
 22215  		fromRule = append(fromRule, fromItem)
 22216  	}
 22217  	var toRule []interface{}
 22218  	for _, toItem := range to {
 22219  		toRule = append(toRule, toItem)
 22220  	}
 22221  	var tokenIdRule []interface{}
 22222  	for _, tokenIdItem := range tokenId {
 22223  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 22224  	}
 22225  
 22226  	logs, sub, err := _ERC721Metadata.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 22227  	if err != nil {
 22228  		return nil, err
 22229  	}
 22230  	return &ERC721MetadataTransferIterator{contract: _ERC721Metadata.contract, event: "Transfer", logs: logs, sub: sub}, nil
 22231  }
 22232  
 22233  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 22234  //
 22235  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 22236  func (_ERC721Metadata *ERC721MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721MetadataTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 22237  
 22238  	var fromRule []interface{}
 22239  	for _, fromItem := range from {
 22240  		fromRule = append(fromRule, fromItem)
 22241  	}
 22242  	var toRule []interface{}
 22243  	for _, toItem := range to {
 22244  		toRule = append(toRule, toItem)
 22245  	}
 22246  	var tokenIdRule []interface{}
 22247  	for _, tokenIdItem := range tokenId {
 22248  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 22249  	}
 22250  
 22251  	logs, sub, err := _ERC721Metadata.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 22252  	if err != nil {
 22253  		return nil, err
 22254  	}
 22255  	return event.NewSubscription(func(quit <-chan struct{}) error {
 22256  		defer sub.Unsubscribe()
 22257  		for {
 22258  			select {
 22259  			case log := <-logs:
 22260  				// New log arrived, parse the event and forward to the user
 22261  				event := new(ERC721MetadataTransfer)
 22262  				if err := _ERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil {
 22263  					return err
 22264  				}
 22265  				event.Raw = log
 22266  
 22267  				select {
 22268  				case sink <- event:
 22269  				case err := <-sub.Err():
 22270  					return err
 22271  				case <-quit:
 22272  					return nil
 22273  				}
 22274  			case err := <-sub.Err():
 22275  				return err
 22276  			case <-quit:
 22277  				return nil
 22278  			}
 22279  		}
 22280  	}), nil
 22281  }
 22282  
 22283  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 22284  //
 22285  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 22286  func (_ERC721Metadata *ERC721MetadataFilterer) ParseTransfer(log types.Log) (*ERC721MetadataTransfer, error) {
 22287  	event := new(ERC721MetadataTransfer)
 22288  	if err := _ERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil {
 22289  		return nil, err
 22290  	}
 22291  	return event, nil
 22292  }
 22293  
 22294  // ERC721MetadataMintableABI is the input ABI used to generate the binding from.
 22295  const ERC721MetadataMintableABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"mintWithTokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"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\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"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\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"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\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
 22296  
 22297  // ERC721MetadataMintableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 22298  const ERC721MetadataMintableBinRuntime = ``
 22299  
 22300  // ERC721MetadataMintableFuncSigs maps the 4-byte function signature to its string representation.
 22301  var ERC721MetadataMintableFuncSigs = map[string]string{
 22302  	"983b2d56": "addMinter(address)",
 22303  	"095ea7b3": "approve(address,uint256)",
 22304  	"70a08231": "balanceOf(address)",
 22305  	"081812fc": "getApproved(uint256)",
 22306  	"e985e9c5": "isApprovedForAll(address,address)",
 22307  	"aa271e1a": "isMinter(address)",
 22308  	"50bb4e7f": "mintWithTokenURI(address,uint256,string)",
 22309  	"06fdde03": "name()",
 22310  	"6352211e": "ownerOf(uint256)",
 22311  	"98650275": "renounceMinter()",
 22312  	"42842e0e": "safeTransferFrom(address,address,uint256)",
 22313  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
 22314  	"a22cb465": "setApprovalForAll(address,bool)",
 22315  	"01ffc9a7": "supportsInterface(bytes4)",
 22316  	"95d89b41": "symbol()",
 22317  	"c87b56dd": "tokenURI(uint256)",
 22318  	"23b872dd": "transferFrom(address,address,uint256)",
 22319  }
 22320  
 22321  // ERC721MetadataMintable is an auto generated Go binding around a Klaytn contract.
 22322  type ERC721MetadataMintable struct {
 22323  	ERC721MetadataMintableCaller     // Read-only binding to the contract
 22324  	ERC721MetadataMintableTransactor // Write-only binding to the contract
 22325  	ERC721MetadataMintableFilterer   // Log filterer for contract events
 22326  }
 22327  
 22328  // ERC721MetadataMintableCaller is an auto generated read-only Go binding around a Klaytn contract.
 22329  type ERC721MetadataMintableCaller struct {
 22330  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 22331  }
 22332  
 22333  // ERC721MetadataMintableTransactor is an auto generated write-only Go binding around a Klaytn contract.
 22334  type ERC721MetadataMintableTransactor struct {
 22335  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 22336  }
 22337  
 22338  // ERC721MetadataMintableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 22339  type ERC721MetadataMintableFilterer struct {
 22340  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 22341  }
 22342  
 22343  // ERC721MetadataMintableSession is an auto generated Go binding around a Klaytn contract,
 22344  // with pre-set call and transact options.
 22345  type ERC721MetadataMintableSession struct {
 22346  	Contract     *ERC721MetadataMintable // Generic contract binding to set the session for
 22347  	CallOpts     bind.CallOpts           // Call options to use throughout this session
 22348  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
 22349  }
 22350  
 22351  // ERC721MetadataMintableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 22352  // with pre-set call options.
 22353  type ERC721MetadataMintableCallerSession struct {
 22354  	Contract *ERC721MetadataMintableCaller // Generic contract caller binding to set the session for
 22355  	CallOpts bind.CallOpts                 // Call options to use throughout this session
 22356  }
 22357  
 22358  // ERC721MetadataMintableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 22359  // with pre-set transact options.
 22360  type ERC721MetadataMintableTransactorSession struct {
 22361  	Contract     *ERC721MetadataMintableTransactor // Generic contract transactor binding to set the session for
 22362  	TransactOpts bind.TransactOpts                 // Transaction auth options to use throughout this session
 22363  }
 22364  
 22365  // ERC721MetadataMintableRaw is an auto generated low-level Go binding around a Klaytn contract.
 22366  type ERC721MetadataMintableRaw struct {
 22367  	Contract *ERC721MetadataMintable // Generic contract binding to access the raw methods on
 22368  }
 22369  
 22370  // ERC721MetadataMintableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 22371  type ERC721MetadataMintableCallerRaw struct {
 22372  	Contract *ERC721MetadataMintableCaller // Generic read-only contract binding to access the raw methods on
 22373  }
 22374  
 22375  // ERC721MetadataMintableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 22376  type ERC721MetadataMintableTransactorRaw struct {
 22377  	Contract *ERC721MetadataMintableTransactor // Generic write-only contract binding to access the raw methods on
 22378  }
 22379  
 22380  // NewERC721MetadataMintable creates a new instance of ERC721MetadataMintable, bound to a specific deployed contract.
 22381  func NewERC721MetadataMintable(address common.Address, backend bind.ContractBackend) (*ERC721MetadataMintable, error) {
 22382  	contract, err := bindERC721MetadataMintable(address, backend, backend, backend)
 22383  	if err != nil {
 22384  		return nil, err
 22385  	}
 22386  	return &ERC721MetadataMintable{ERC721MetadataMintableCaller: ERC721MetadataMintableCaller{contract: contract}, ERC721MetadataMintableTransactor: ERC721MetadataMintableTransactor{contract: contract}, ERC721MetadataMintableFilterer: ERC721MetadataMintableFilterer{contract: contract}}, nil
 22387  }
 22388  
 22389  // NewERC721MetadataMintableCaller creates a new read-only instance of ERC721MetadataMintable, bound to a specific deployed contract.
 22390  func NewERC721MetadataMintableCaller(address common.Address, caller bind.ContractCaller) (*ERC721MetadataMintableCaller, error) {
 22391  	contract, err := bindERC721MetadataMintable(address, caller, nil, nil)
 22392  	if err != nil {
 22393  		return nil, err
 22394  	}
 22395  	return &ERC721MetadataMintableCaller{contract: contract}, nil
 22396  }
 22397  
 22398  // NewERC721MetadataMintableTransactor creates a new write-only instance of ERC721MetadataMintable, bound to a specific deployed contract.
 22399  func NewERC721MetadataMintableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721MetadataMintableTransactor, error) {
 22400  	contract, err := bindERC721MetadataMintable(address, nil, transactor, nil)
 22401  	if err != nil {
 22402  		return nil, err
 22403  	}
 22404  	return &ERC721MetadataMintableTransactor{contract: contract}, nil
 22405  }
 22406  
 22407  // NewERC721MetadataMintableFilterer creates a new log filterer instance of ERC721MetadataMintable, bound to a specific deployed contract.
 22408  func NewERC721MetadataMintableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721MetadataMintableFilterer, error) {
 22409  	contract, err := bindERC721MetadataMintable(address, nil, nil, filterer)
 22410  	if err != nil {
 22411  		return nil, err
 22412  	}
 22413  	return &ERC721MetadataMintableFilterer{contract: contract}, nil
 22414  }
 22415  
 22416  // bindERC721MetadataMintable binds a generic wrapper to an already deployed contract.
 22417  func bindERC721MetadataMintable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 22418  	parsed, err := abi.JSON(strings.NewReader(ERC721MetadataMintableABI))
 22419  	if err != nil {
 22420  		return nil, err
 22421  	}
 22422  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 22423  }
 22424  
 22425  // Call invokes the (constant) contract method with params as input values and
 22426  // sets the output to result. The result type might be a single field for simple
 22427  // returns, a slice of interfaces for anonymous returns and a struct for named
 22428  // returns.
 22429  func (_ERC721MetadataMintable *ERC721MetadataMintableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 22430  	return _ERC721MetadataMintable.Contract.ERC721MetadataMintableCaller.contract.Call(opts, result, method, params...)
 22431  }
 22432  
 22433  // Transfer initiates a plain transaction to move funds to the contract, calling
 22434  // its default method if one is available.
 22435  func (_ERC721MetadataMintable *ERC721MetadataMintableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 22436  	return _ERC721MetadataMintable.Contract.ERC721MetadataMintableTransactor.contract.Transfer(opts)
 22437  }
 22438  
 22439  // Transact invokes the (paid) contract method with params as input values.
 22440  func (_ERC721MetadataMintable *ERC721MetadataMintableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 22441  	return _ERC721MetadataMintable.Contract.ERC721MetadataMintableTransactor.contract.Transact(opts, method, params...)
 22442  }
 22443  
 22444  // Call invokes the (constant) contract method with params as input values and
 22445  // sets the output to result. The result type might be a single field for simple
 22446  // returns, a slice of interfaces for anonymous returns and a struct for named
 22447  // returns.
 22448  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 22449  	return _ERC721MetadataMintable.Contract.contract.Call(opts, result, method, params...)
 22450  }
 22451  
 22452  // Transfer initiates a plain transaction to move funds to the contract, calling
 22453  // its default method if one is available.
 22454  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 22455  	return _ERC721MetadataMintable.Contract.contract.Transfer(opts)
 22456  }
 22457  
 22458  // Transact invokes the (paid) contract method with params as input values.
 22459  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 22460  	return _ERC721MetadataMintable.Contract.contract.Transact(opts, method, params...)
 22461  }
 22462  
 22463  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 22464  //
 22465  // Solidity: function balanceOf(address owner) view returns(uint256)
 22466  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
 22467  	var (
 22468  		ret0 = new(*big.Int)
 22469  	)
 22470  	out := ret0
 22471  	err := _ERC721MetadataMintable.contract.Call(opts, out, "balanceOf", owner)
 22472  	return *ret0, err
 22473  }
 22474  
 22475  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 22476  //
 22477  // Solidity: function balanceOf(address owner) view returns(uint256)
 22478  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) BalanceOf(owner common.Address) (*big.Int, error) {
 22479  	return _ERC721MetadataMintable.Contract.BalanceOf(&_ERC721MetadataMintable.CallOpts, owner)
 22480  }
 22481  
 22482  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 22483  //
 22484  // Solidity: function balanceOf(address owner) view returns(uint256)
 22485  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
 22486  	return _ERC721MetadataMintable.Contract.BalanceOf(&_ERC721MetadataMintable.CallOpts, owner)
 22487  }
 22488  
 22489  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 22490  //
 22491  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 22492  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 22493  	var (
 22494  		ret0 = new(common.Address)
 22495  	)
 22496  	out := ret0
 22497  	err := _ERC721MetadataMintable.contract.Call(opts, out, "getApproved", tokenId)
 22498  	return *ret0, err
 22499  }
 22500  
 22501  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 22502  //
 22503  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 22504  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 22505  	return _ERC721MetadataMintable.Contract.GetApproved(&_ERC721MetadataMintable.CallOpts, tokenId)
 22506  }
 22507  
 22508  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 22509  //
 22510  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 22511  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 22512  	return _ERC721MetadataMintable.Contract.GetApproved(&_ERC721MetadataMintable.CallOpts, tokenId)
 22513  }
 22514  
 22515  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 22516  //
 22517  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 22518  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
 22519  	var (
 22520  		ret0 = new(bool)
 22521  	)
 22522  	out := ret0
 22523  	err := _ERC721MetadataMintable.contract.Call(opts, out, "isApprovedForAll", owner, operator)
 22524  	return *ret0, err
 22525  }
 22526  
 22527  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 22528  //
 22529  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 22530  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 22531  	return _ERC721MetadataMintable.Contract.IsApprovedForAll(&_ERC721MetadataMintable.CallOpts, owner, operator)
 22532  }
 22533  
 22534  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 22535  //
 22536  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 22537  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 22538  	return _ERC721MetadataMintable.Contract.IsApprovedForAll(&_ERC721MetadataMintable.CallOpts, owner, operator)
 22539  }
 22540  
 22541  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 22542  //
 22543  // Solidity: function isMinter(address account) view returns(bool)
 22544  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
 22545  	var (
 22546  		ret0 = new(bool)
 22547  	)
 22548  	out := ret0
 22549  	err := _ERC721MetadataMintable.contract.Call(opts, out, "isMinter", account)
 22550  	return *ret0, err
 22551  }
 22552  
 22553  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 22554  //
 22555  // Solidity: function isMinter(address account) view returns(bool)
 22556  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) IsMinter(account common.Address) (bool, error) {
 22557  	return _ERC721MetadataMintable.Contract.IsMinter(&_ERC721MetadataMintable.CallOpts, account)
 22558  }
 22559  
 22560  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 22561  //
 22562  // Solidity: function isMinter(address account) view returns(bool)
 22563  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) IsMinter(account common.Address) (bool, error) {
 22564  	return _ERC721MetadataMintable.Contract.IsMinter(&_ERC721MetadataMintable.CallOpts, account)
 22565  }
 22566  
 22567  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 22568  //
 22569  // Solidity: function name() view returns(string)
 22570  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) Name(opts *bind.CallOpts) (string, error) {
 22571  	var (
 22572  		ret0 = new(string)
 22573  	)
 22574  	out := ret0
 22575  	err := _ERC721MetadataMintable.contract.Call(opts, out, "name")
 22576  	return *ret0, err
 22577  }
 22578  
 22579  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 22580  //
 22581  // Solidity: function name() view returns(string)
 22582  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) Name() (string, error) {
 22583  	return _ERC721MetadataMintable.Contract.Name(&_ERC721MetadataMintable.CallOpts)
 22584  }
 22585  
 22586  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 22587  //
 22588  // Solidity: function name() view returns(string)
 22589  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) Name() (string, error) {
 22590  	return _ERC721MetadataMintable.Contract.Name(&_ERC721MetadataMintable.CallOpts)
 22591  }
 22592  
 22593  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 22594  //
 22595  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 22596  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 22597  	var (
 22598  		ret0 = new(common.Address)
 22599  	)
 22600  	out := ret0
 22601  	err := _ERC721MetadataMintable.contract.Call(opts, out, "ownerOf", tokenId)
 22602  	return *ret0, err
 22603  }
 22604  
 22605  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 22606  //
 22607  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 22608  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 22609  	return _ERC721MetadataMintable.Contract.OwnerOf(&_ERC721MetadataMintable.CallOpts, tokenId)
 22610  }
 22611  
 22612  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 22613  //
 22614  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 22615  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 22616  	return _ERC721MetadataMintable.Contract.OwnerOf(&_ERC721MetadataMintable.CallOpts, tokenId)
 22617  }
 22618  
 22619  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 22620  //
 22621  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 22622  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
 22623  	var (
 22624  		ret0 = new(bool)
 22625  	)
 22626  	out := ret0
 22627  	err := _ERC721MetadataMintable.contract.Call(opts, out, "supportsInterface", interfaceId)
 22628  	return *ret0, err
 22629  }
 22630  
 22631  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 22632  //
 22633  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 22634  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 22635  	return _ERC721MetadataMintable.Contract.SupportsInterface(&_ERC721MetadataMintable.CallOpts, interfaceId)
 22636  }
 22637  
 22638  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 22639  //
 22640  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 22641  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 22642  	return _ERC721MetadataMintable.Contract.SupportsInterface(&_ERC721MetadataMintable.CallOpts, interfaceId)
 22643  }
 22644  
 22645  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 22646  //
 22647  // Solidity: function symbol() view returns(string)
 22648  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) Symbol(opts *bind.CallOpts) (string, error) {
 22649  	var (
 22650  		ret0 = new(string)
 22651  	)
 22652  	out := ret0
 22653  	err := _ERC721MetadataMintable.contract.Call(opts, out, "symbol")
 22654  	return *ret0, err
 22655  }
 22656  
 22657  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 22658  //
 22659  // Solidity: function symbol() view returns(string)
 22660  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) Symbol() (string, error) {
 22661  	return _ERC721MetadataMintable.Contract.Symbol(&_ERC721MetadataMintable.CallOpts)
 22662  }
 22663  
 22664  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 22665  //
 22666  // Solidity: function symbol() view returns(string)
 22667  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) Symbol() (string, error) {
 22668  	return _ERC721MetadataMintable.Contract.Symbol(&_ERC721MetadataMintable.CallOpts)
 22669  }
 22670  
 22671  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 22672  //
 22673  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 22674  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) {
 22675  	var (
 22676  		ret0 = new(string)
 22677  	)
 22678  	out := ret0
 22679  	err := _ERC721MetadataMintable.contract.Call(opts, out, "tokenURI", tokenId)
 22680  	return *ret0, err
 22681  }
 22682  
 22683  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 22684  //
 22685  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 22686  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) TokenURI(tokenId *big.Int) (string, error) {
 22687  	return _ERC721MetadataMintable.Contract.TokenURI(&_ERC721MetadataMintable.CallOpts, tokenId)
 22688  }
 22689  
 22690  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 22691  //
 22692  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 22693  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) TokenURI(tokenId *big.Int) (string, error) {
 22694  	return _ERC721MetadataMintable.Contract.TokenURI(&_ERC721MetadataMintable.CallOpts, tokenId)
 22695  }
 22696  
 22697  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 22698  //
 22699  // Solidity: function addMinter(address account) returns()
 22700  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
 22701  	return _ERC721MetadataMintable.contract.Transact(opts, "addMinter", account)
 22702  }
 22703  
 22704  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 22705  //
 22706  // Solidity: function addMinter(address account) returns()
 22707  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) AddMinter(account common.Address) (*types.Transaction, error) {
 22708  	return _ERC721MetadataMintable.Contract.AddMinter(&_ERC721MetadataMintable.TransactOpts, account)
 22709  }
 22710  
 22711  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 22712  //
 22713  // Solidity: function addMinter(address account) returns()
 22714  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
 22715  	return _ERC721MetadataMintable.Contract.AddMinter(&_ERC721MetadataMintable.TransactOpts, account)
 22716  }
 22717  
 22718  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 22719  //
 22720  // Solidity: function approve(address to, uint256 tokenId) returns()
 22721  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 22722  	return _ERC721MetadataMintable.contract.Transact(opts, "approve", to, tokenId)
 22723  }
 22724  
 22725  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 22726  //
 22727  // Solidity: function approve(address to, uint256 tokenId) returns()
 22728  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 22729  	return _ERC721MetadataMintable.Contract.Approve(&_ERC721MetadataMintable.TransactOpts, to, tokenId)
 22730  }
 22731  
 22732  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 22733  //
 22734  // Solidity: function approve(address to, uint256 tokenId) returns()
 22735  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 22736  	return _ERC721MetadataMintable.Contract.Approve(&_ERC721MetadataMintable.TransactOpts, to, tokenId)
 22737  }
 22738  
 22739  // MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f.
 22740  //
 22741  // Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool)
 22742  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) MintWithTokenURI(opts *bind.TransactOpts, to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) {
 22743  	return _ERC721MetadataMintable.contract.Transact(opts, "mintWithTokenURI", to, tokenId, tokenURI)
 22744  }
 22745  
 22746  // MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f.
 22747  //
 22748  // Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool)
 22749  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) MintWithTokenURI(to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) {
 22750  	return _ERC721MetadataMintable.Contract.MintWithTokenURI(&_ERC721MetadataMintable.TransactOpts, to, tokenId, tokenURI)
 22751  }
 22752  
 22753  // MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f.
 22754  //
 22755  // Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool)
 22756  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) MintWithTokenURI(to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) {
 22757  	return _ERC721MetadataMintable.Contract.MintWithTokenURI(&_ERC721MetadataMintable.TransactOpts, to, tokenId, tokenURI)
 22758  }
 22759  
 22760  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 22761  //
 22762  // Solidity: function renounceMinter() returns()
 22763  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
 22764  	return _ERC721MetadataMintable.contract.Transact(opts, "renounceMinter")
 22765  }
 22766  
 22767  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 22768  //
 22769  // Solidity: function renounceMinter() returns()
 22770  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) RenounceMinter() (*types.Transaction, error) {
 22771  	return _ERC721MetadataMintable.Contract.RenounceMinter(&_ERC721MetadataMintable.TransactOpts)
 22772  }
 22773  
 22774  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 22775  //
 22776  // Solidity: function renounceMinter() returns()
 22777  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) RenounceMinter() (*types.Transaction, error) {
 22778  	return _ERC721MetadataMintable.Contract.RenounceMinter(&_ERC721MetadataMintable.TransactOpts)
 22779  }
 22780  
 22781  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 22782  //
 22783  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 22784  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 22785  	return _ERC721MetadataMintable.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
 22786  }
 22787  
 22788  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 22789  //
 22790  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 22791  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 22792  	return _ERC721MetadataMintable.Contract.SafeTransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId)
 22793  }
 22794  
 22795  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 22796  //
 22797  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 22798  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 22799  	return _ERC721MetadataMintable.Contract.SafeTransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId)
 22800  }
 22801  
 22802  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 22803  //
 22804  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 22805  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 22806  	return _ERC721MetadataMintable.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
 22807  }
 22808  
 22809  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 22810  //
 22811  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 22812  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 22813  	return _ERC721MetadataMintable.Contract.SafeTransferFrom0(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId, _data)
 22814  }
 22815  
 22816  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 22817  //
 22818  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 22819  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 22820  	return _ERC721MetadataMintable.Contract.SafeTransferFrom0(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId, _data)
 22821  }
 22822  
 22823  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 22824  //
 22825  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 22826  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
 22827  	return _ERC721MetadataMintable.contract.Transact(opts, "setApprovalForAll", to, approved)
 22828  }
 22829  
 22830  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 22831  //
 22832  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 22833  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
 22834  	return _ERC721MetadataMintable.Contract.SetApprovalForAll(&_ERC721MetadataMintable.TransactOpts, to, approved)
 22835  }
 22836  
 22837  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 22838  //
 22839  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 22840  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
 22841  	return _ERC721MetadataMintable.Contract.SetApprovalForAll(&_ERC721MetadataMintable.TransactOpts, to, approved)
 22842  }
 22843  
 22844  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 22845  //
 22846  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 22847  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 22848  	return _ERC721MetadataMintable.contract.Transact(opts, "transferFrom", from, to, tokenId)
 22849  }
 22850  
 22851  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 22852  //
 22853  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 22854  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 22855  	return _ERC721MetadataMintable.Contract.TransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId)
 22856  }
 22857  
 22858  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 22859  //
 22860  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 22861  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 22862  	return _ERC721MetadataMintable.Contract.TransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId)
 22863  }
 22864  
 22865  // ERC721MetadataMintableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721MetadataMintable contract.
 22866  type ERC721MetadataMintableApprovalIterator struct {
 22867  	Event *ERC721MetadataMintableApproval // Event containing the contract specifics and raw log
 22868  
 22869  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 22870  	event    string              // Event name to use for unpacking event data
 22871  
 22872  	logs chan types.Log      // Log channel receiving the found contract events
 22873  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 22874  	done bool                // Whether the subscription completed delivering logs
 22875  	fail error               // Occurred error to stop iteration
 22876  }
 22877  
 22878  // Next advances the iterator to the subsequent event, returning whether there
 22879  // are any more events found. In case of a retrieval or parsing error, false is
 22880  // returned and Error() can be queried for the exact failure.
 22881  func (it *ERC721MetadataMintableApprovalIterator) Next() bool {
 22882  	// If the iterator failed, stop iterating
 22883  	if it.fail != nil {
 22884  		return false
 22885  	}
 22886  	// If the iterator completed, deliver directly whatever's available
 22887  	if it.done {
 22888  		select {
 22889  		case log := <-it.logs:
 22890  			it.Event = new(ERC721MetadataMintableApproval)
 22891  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 22892  				it.fail = err
 22893  				return false
 22894  			}
 22895  			it.Event.Raw = log
 22896  			return true
 22897  
 22898  		default:
 22899  			return false
 22900  		}
 22901  	}
 22902  	// Iterator still in progress, wait for either a data or an error event
 22903  	select {
 22904  	case log := <-it.logs:
 22905  		it.Event = new(ERC721MetadataMintableApproval)
 22906  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 22907  			it.fail = err
 22908  			return false
 22909  		}
 22910  		it.Event.Raw = log
 22911  		return true
 22912  
 22913  	case err := <-it.sub.Err():
 22914  		it.done = true
 22915  		it.fail = err
 22916  		return it.Next()
 22917  	}
 22918  }
 22919  
 22920  // Error returns any retrieval or parsing error occurred during filtering.
 22921  func (it *ERC721MetadataMintableApprovalIterator) Error() error {
 22922  	return it.fail
 22923  }
 22924  
 22925  // Close terminates the iteration process, releasing any pending underlying
 22926  // resources.
 22927  func (it *ERC721MetadataMintableApprovalIterator) Close() error {
 22928  	it.sub.Unsubscribe()
 22929  	return nil
 22930  }
 22931  
 22932  // ERC721MetadataMintableApproval represents a Approval event raised by the ERC721MetadataMintable contract.
 22933  type ERC721MetadataMintableApproval struct {
 22934  	Owner    common.Address
 22935  	Approved common.Address
 22936  	TokenId  *big.Int
 22937  	Raw      types.Log // Blockchain specific contextual infos
 22938  }
 22939  
 22940  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 22941  //
 22942  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 22943  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721MetadataMintableApprovalIterator, error) {
 22944  
 22945  	var ownerRule []interface{}
 22946  	for _, ownerItem := range owner {
 22947  		ownerRule = append(ownerRule, ownerItem)
 22948  	}
 22949  	var approvedRule []interface{}
 22950  	for _, approvedItem := range approved {
 22951  		approvedRule = append(approvedRule, approvedItem)
 22952  	}
 22953  	var tokenIdRule []interface{}
 22954  	for _, tokenIdItem := range tokenId {
 22955  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 22956  	}
 22957  
 22958  	logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 22959  	if err != nil {
 22960  		return nil, err
 22961  	}
 22962  	return &ERC721MetadataMintableApprovalIterator{contract: _ERC721MetadataMintable.contract, event: "Approval", logs: logs, sub: sub}, nil
 22963  }
 22964  
 22965  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 22966  //
 22967  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 22968  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 22969  
 22970  	var ownerRule []interface{}
 22971  	for _, ownerItem := range owner {
 22972  		ownerRule = append(ownerRule, ownerItem)
 22973  	}
 22974  	var approvedRule []interface{}
 22975  	for _, approvedItem := range approved {
 22976  		approvedRule = append(approvedRule, approvedItem)
 22977  	}
 22978  	var tokenIdRule []interface{}
 22979  	for _, tokenIdItem := range tokenId {
 22980  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 22981  	}
 22982  
 22983  	logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 22984  	if err != nil {
 22985  		return nil, err
 22986  	}
 22987  	return event.NewSubscription(func(quit <-chan struct{}) error {
 22988  		defer sub.Unsubscribe()
 22989  		for {
 22990  			select {
 22991  			case log := <-logs:
 22992  				// New log arrived, parse the event and forward to the user
 22993  				event := new(ERC721MetadataMintableApproval)
 22994  				if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Approval", log); err != nil {
 22995  					return err
 22996  				}
 22997  				event.Raw = log
 22998  
 22999  				select {
 23000  				case sink <- event:
 23001  				case err := <-sub.Err():
 23002  					return err
 23003  				case <-quit:
 23004  					return nil
 23005  				}
 23006  			case err := <-sub.Err():
 23007  				return err
 23008  			case <-quit:
 23009  				return nil
 23010  			}
 23011  		}
 23012  	}), nil
 23013  }
 23014  
 23015  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 23016  //
 23017  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 23018  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseApproval(log types.Log) (*ERC721MetadataMintableApproval, error) {
 23019  	event := new(ERC721MetadataMintableApproval)
 23020  	if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Approval", log); err != nil {
 23021  		return nil, err
 23022  	}
 23023  	return event, nil
 23024  }
 23025  
 23026  // ERC721MetadataMintableApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721MetadataMintable contract.
 23027  type ERC721MetadataMintableApprovalForAllIterator struct {
 23028  	Event *ERC721MetadataMintableApprovalForAll // Event containing the contract specifics and raw log
 23029  
 23030  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 23031  	event    string              // Event name to use for unpacking event data
 23032  
 23033  	logs chan types.Log      // Log channel receiving the found contract events
 23034  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 23035  	done bool                // Whether the subscription completed delivering logs
 23036  	fail error               // Occurred error to stop iteration
 23037  }
 23038  
 23039  // Next advances the iterator to the subsequent event, returning whether there
 23040  // are any more events found. In case of a retrieval or parsing error, false is
 23041  // returned and Error() can be queried for the exact failure.
 23042  func (it *ERC721MetadataMintableApprovalForAllIterator) Next() bool {
 23043  	// If the iterator failed, stop iterating
 23044  	if it.fail != nil {
 23045  		return false
 23046  	}
 23047  	// If the iterator completed, deliver directly whatever's available
 23048  	if it.done {
 23049  		select {
 23050  		case log := <-it.logs:
 23051  			it.Event = new(ERC721MetadataMintableApprovalForAll)
 23052  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 23053  				it.fail = err
 23054  				return false
 23055  			}
 23056  			it.Event.Raw = log
 23057  			return true
 23058  
 23059  		default:
 23060  			return false
 23061  		}
 23062  	}
 23063  	// Iterator still in progress, wait for either a data or an error event
 23064  	select {
 23065  	case log := <-it.logs:
 23066  		it.Event = new(ERC721MetadataMintableApprovalForAll)
 23067  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 23068  			it.fail = err
 23069  			return false
 23070  		}
 23071  		it.Event.Raw = log
 23072  		return true
 23073  
 23074  	case err := <-it.sub.Err():
 23075  		it.done = true
 23076  		it.fail = err
 23077  		return it.Next()
 23078  	}
 23079  }
 23080  
 23081  // Error returns any retrieval or parsing error occurred during filtering.
 23082  func (it *ERC721MetadataMintableApprovalForAllIterator) Error() error {
 23083  	return it.fail
 23084  }
 23085  
 23086  // Close terminates the iteration process, releasing any pending underlying
 23087  // resources.
 23088  func (it *ERC721MetadataMintableApprovalForAllIterator) Close() error {
 23089  	it.sub.Unsubscribe()
 23090  	return nil
 23091  }
 23092  
 23093  // ERC721MetadataMintableApprovalForAll represents a ApprovalForAll event raised by the ERC721MetadataMintable contract.
 23094  type ERC721MetadataMintableApprovalForAll struct {
 23095  	Owner    common.Address
 23096  	Operator common.Address
 23097  	Approved bool
 23098  	Raw      types.Log // Blockchain specific contextual infos
 23099  }
 23100  
 23101  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 23102  //
 23103  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 23104  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721MetadataMintableApprovalForAllIterator, error) {
 23105  
 23106  	var ownerRule []interface{}
 23107  	for _, ownerItem := range owner {
 23108  		ownerRule = append(ownerRule, ownerItem)
 23109  	}
 23110  	var operatorRule []interface{}
 23111  	for _, operatorItem := range operator {
 23112  		operatorRule = append(operatorRule, operatorItem)
 23113  	}
 23114  
 23115  	logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 23116  	if err != nil {
 23117  		return nil, err
 23118  	}
 23119  	return &ERC721MetadataMintableApprovalForAllIterator{contract: _ERC721MetadataMintable.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
 23120  }
 23121  
 23122  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 23123  //
 23124  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 23125  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
 23126  
 23127  	var ownerRule []interface{}
 23128  	for _, ownerItem := range owner {
 23129  		ownerRule = append(ownerRule, ownerItem)
 23130  	}
 23131  	var operatorRule []interface{}
 23132  	for _, operatorItem := range operator {
 23133  		operatorRule = append(operatorRule, operatorItem)
 23134  	}
 23135  
 23136  	logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 23137  	if err != nil {
 23138  		return nil, err
 23139  	}
 23140  	return event.NewSubscription(func(quit <-chan struct{}) error {
 23141  		defer sub.Unsubscribe()
 23142  		for {
 23143  			select {
 23144  			case log := <-logs:
 23145  				// New log arrived, parse the event and forward to the user
 23146  				event := new(ERC721MetadataMintableApprovalForAll)
 23147  				if err := _ERC721MetadataMintable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 23148  					return err
 23149  				}
 23150  				event.Raw = log
 23151  
 23152  				select {
 23153  				case sink <- event:
 23154  				case err := <-sub.Err():
 23155  					return err
 23156  				case <-quit:
 23157  					return nil
 23158  				}
 23159  			case err := <-sub.Err():
 23160  				return err
 23161  			case <-quit:
 23162  				return nil
 23163  			}
 23164  		}
 23165  	}), nil
 23166  }
 23167  
 23168  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 23169  //
 23170  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 23171  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseApprovalForAll(log types.Log) (*ERC721MetadataMintableApprovalForAll, error) {
 23172  	event := new(ERC721MetadataMintableApprovalForAll)
 23173  	if err := _ERC721MetadataMintable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 23174  		return nil, err
 23175  	}
 23176  	return event, nil
 23177  }
 23178  
 23179  // ERC721MetadataMintableMinterAddedIterator is returned from FilterMinterAdded and is used to iterate over the raw logs and unpacked data for MinterAdded events raised by the ERC721MetadataMintable contract.
 23180  type ERC721MetadataMintableMinterAddedIterator struct {
 23181  	Event *ERC721MetadataMintableMinterAdded // Event containing the contract specifics and raw log
 23182  
 23183  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 23184  	event    string              // Event name to use for unpacking event data
 23185  
 23186  	logs chan types.Log      // Log channel receiving the found contract events
 23187  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 23188  	done bool                // Whether the subscription completed delivering logs
 23189  	fail error               // Occurred error to stop iteration
 23190  }
 23191  
 23192  // Next advances the iterator to the subsequent event, returning whether there
 23193  // are any more events found. In case of a retrieval or parsing error, false is
 23194  // returned and Error() can be queried for the exact failure.
 23195  func (it *ERC721MetadataMintableMinterAddedIterator) Next() bool {
 23196  	// If the iterator failed, stop iterating
 23197  	if it.fail != nil {
 23198  		return false
 23199  	}
 23200  	// If the iterator completed, deliver directly whatever's available
 23201  	if it.done {
 23202  		select {
 23203  		case log := <-it.logs:
 23204  			it.Event = new(ERC721MetadataMintableMinterAdded)
 23205  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 23206  				it.fail = err
 23207  				return false
 23208  			}
 23209  			it.Event.Raw = log
 23210  			return true
 23211  
 23212  		default:
 23213  			return false
 23214  		}
 23215  	}
 23216  	// Iterator still in progress, wait for either a data or an error event
 23217  	select {
 23218  	case log := <-it.logs:
 23219  		it.Event = new(ERC721MetadataMintableMinterAdded)
 23220  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 23221  			it.fail = err
 23222  			return false
 23223  		}
 23224  		it.Event.Raw = log
 23225  		return true
 23226  
 23227  	case err := <-it.sub.Err():
 23228  		it.done = true
 23229  		it.fail = err
 23230  		return it.Next()
 23231  	}
 23232  }
 23233  
 23234  // Error returns any retrieval or parsing error occurred during filtering.
 23235  func (it *ERC721MetadataMintableMinterAddedIterator) Error() error {
 23236  	return it.fail
 23237  }
 23238  
 23239  // Close terminates the iteration process, releasing any pending underlying
 23240  // resources.
 23241  func (it *ERC721MetadataMintableMinterAddedIterator) Close() error {
 23242  	it.sub.Unsubscribe()
 23243  	return nil
 23244  }
 23245  
 23246  // ERC721MetadataMintableMinterAdded represents a MinterAdded event raised by the ERC721MetadataMintable contract.
 23247  type ERC721MetadataMintableMinterAdded struct {
 23248  	Account common.Address
 23249  	Raw     types.Log // Blockchain specific contextual infos
 23250  }
 23251  
 23252  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 23253  //
 23254  // Solidity: event MinterAdded(address indexed account)
 23255  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ERC721MetadataMintableMinterAddedIterator, error) {
 23256  
 23257  	var accountRule []interface{}
 23258  	for _, accountItem := range account {
 23259  		accountRule = append(accountRule, accountItem)
 23260  	}
 23261  
 23262  	logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "MinterAdded", accountRule)
 23263  	if err != nil {
 23264  		return nil, err
 23265  	}
 23266  	return &ERC721MetadataMintableMinterAddedIterator{contract: _ERC721MetadataMintable.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
 23267  }
 23268  
 23269  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 23270  //
 23271  // Solidity: event MinterAdded(address indexed account)
 23272  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableMinterAdded, account []common.Address) (event.Subscription, error) {
 23273  
 23274  	var accountRule []interface{}
 23275  	for _, accountItem := range account {
 23276  		accountRule = append(accountRule, accountItem)
 23277  	}
 23278  
 23279  	logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "MinterAdded", accountRule)
 23280  	if err != nil {
 23281  		return nil, err
 23282  	}
 23283  	return event.NewSubscription(func(quit <-chan struct{}) error {
 23284  		defer sub.Unsubscribe()
 23285  		for {
 23286  			select {
 23287  			case log := <-logs:
 23288  				// New log arrived, parse the event and forward to the user
 23289  				event := new(ERC721MetadataMintableMinterAdded)
 23290  				if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 23291  					return err
 23292  				}
 23293  				event.Raw = log
 23294  
 23295  				select {
 23296  				case sink <- event:
 23297  				case err := <-sub.Err():
 23298  					return err
 23299  				case <-quit:
 23300  					return nil
 23301  				}
 23302  			case err := <-sub.Err():
 23303  				return err
 23304  			case <-quit:
 23305  				return nil
 23306  			}
 23307  		}
 23308  	}), nil
 23309  }
 23310  
 23311  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 23312  //
 23313  // Solidity: event MinterAdded(address indexed account)
 23314  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseMinterAdded(log types.Log) (*ERC721MetadataMintableMinterAdded, error) {
 23315  	event := new(ERC721MetadataMintableMinterAdded)
 23316  	if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 23317  		return nil, err
 23318  	}
 23319  	return event, nil
 23320  }
 23321  
 23322  // ERC721MetadataMintableMinterRemovedIterator is returned from FilterMinterRemoved and is used to iterate over the raw logs and unpacked data for MinterRemoved events raised by the ERC721MetadataMintable contract.
 23323  type ERC721MetadataMintableMinterRemovedIterator struct {
 23324  	Event *ERC721MetadataMintableMinterRemoved // Event containing the contract specifics and raw log
 23325  
 23326  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 23327  	event    string              // Event name to use for unpacking event data
 23328  
 23329  	logs chan types.Log      // Log channel receiving the found contract events
 23330  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 23331  	done bool                // Whether the subscription completed delivering logs
 23332  	fail error               // Occurred error to stop iteration
 23333  }
 23334  
 23335  // Next advances the iterator to the subsequent event, returning whether there
 23336  // are any more events found. In case of a retrieval or parsing error, false is
 23337  // returned and Error() can be queried for the exact failure.
 23338  func (it *ERC721MetadataMintableMinterRemovedIterator) Next() bool {
 23339  	// If the iterator failed, stop iterating
 23340  	if it.fail != nil {
 23341  		return false
 23342  	}
 23343  	// If the iterator completed, deliver directly whatever's available
 23344  	if it.done {
 23345  		select {
 23346  		case log := <-it.logs:
 23347  			it.Event = new(ERC721MetadataMintableMinterRemoved)
 23348  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 23349  				it.fail = err
 23350  				return false
 23351  			}
 23352  			it.Event.Raw = log
 23353  			return true
 23354  
 23355  		default:
 23356  			return false
 23357  		}
 23358  	}
 23359  	// Iterator still in progress, wait for either a data or an error event
 23360  	select {
 23361  	case log := <-it.logs:
 23362  		it.Event = new(ERC721MetadataMintableMinterRemoved)
 23363  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 23364  			it.fail = err
 23365  			return false
 23366  		}
 23367  		it.Event.Raw = log
 23368  		return true
 23369  
 23370  	case err := <-it.sub.Err():
 23371  		it.done = true
 23372  		it.fail = err
 23373  		return it.Next()
 23374  	}
 23375  }
 23376  
 23377  // Error returns any retrieval or parsing error occurred during filtering.
 23378  func (it *ERC721MetadataMintableMinterRemovedIterator) Error() error {
 23379  	return it.fail
 23380  }
 23381  
 23382  // Close terminates the iteration process, releasing any pending underlying
 23383  // resources.
 23384  func (it *ERC721MetadataMintableMinterRemovedIterator) Close() error {
 23385  	it.sub.Unsubscribe()
 23386  	return nil
 23387  }
 23388  
 23389  // ERC721MetadataMintableMinterRemoved represents a MinterRemoved event raised by the ERC721MetadataMintable contract.
 23390  type ERC721MetadataMintableMinterRemoved struct {
 23391  	Account common.Address
 23392  	Raw     types.Log // Blockchain specific contextual infos
 23393  }
 23394  
 23395  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 23396  //
 23397  // Solidity: event MinterRemoved(address indexed account)
 23398  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ERC721MetadataMintableMinterRemovedIterator, error) {
 23399  
 23400  	var accountRule []interface{}
 23401  	for _, accountItem := range account {
 23402  		accountRule = append(accountRule, accountItem)
 23403  	}
 23404  
 23405  	logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "MinterRemoved", accountRule)
 23406  	if err != nil {
 23407  		return nil, err
 23408  	}
 23409  	return &ERC721MetadataMintableMinterRemovedIterator{contract: _ERC721MetadataMintable.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
 23410  }
 23411  
 23412  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 23413  //
 23414  // Solidity: event MinterRemoved(address indexed account)
 23415  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableMinterRemoved, account []common.Address) (event.Subscription, error) {
 23416  
 23417  	var accountRule []interface{}
 23418  	for _, accountItem := range account {
 23419  		accountRule = append(accountRule, accountItem)
 23420  	}
 23421  
 23422  	logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "MinterRemoved", accountRule)
 23423  	if err != nil {
 23424  		return nil, err
 23425  	}
 23426  	return event.NewSubscription(func(quit <-chan struct{}) error {
 23427  		defer sub.Unsubscribe()
 23428  		for {
 23429  			select {
 23430  			case log := <-logs:
 23431  				// New log arrived, parse the event and forward to the user
 23432  				event := new(ERC721MetadataMintableMinterRemoved)
 23433  				if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 23434  					return err
 23435  				}
 23436  				event.Raw = log
 23437  
 23438  				select {
 23439  				case sink <- event:
 23440  				case err := <-sub.Err():
 23441  					return err
 23442  				case <-quit:
 23443  					return nil
 23444  				}
 23445  			case err := <-sub.Err():
 23446  				return err
 23447  			case <-quit:
 23448  				return nil
 23449  			}
 23450  		}
 23451  	}), nil
 23452  }
 23453  
 23454  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 23455  //
 23456  // Solidity: event MinterRemoved(address indexed account)
 23457  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseMinterRemoved(log types.Log) (*ERC721MetadataMintableMinterRemoved, error) {
 23458  	event := new(ERC721MetadataMintableMinterRemoved)
 23459  	if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 23460  		return nil, err
 23461  	}
 23462  	return event, nil
 23463  }
 23464  
 23465  // ERC721MetadataMintableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721MetadataMintable contract.
 23466  type ERC721MetadataMintableTransferIterator struct {
 23467  	Event *ERC721MetadataMintableTransfer // Event containing the contract specifics and raw log
 23468  
 23469  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 23470  	event    string              // Event name to use for unpacking event data
 23471  
 23472  	logs chan types.Log      // Log channel receiving the found contract events
 23473  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 23474  	done bool                // Whether the subscription completed delivering logs
 23475  	fail error               // Occurred error to stop iteration
 23476  }
 23477  
 23478  // Next advances the iterator to the subsequent event, returning whether there
 23479  // are any more events found. In case of a retrieval or parsing error, false is
 23480  // returned and Error() can be queried for the exact failure.
 23481  func (it *ERC721MetadataMintableTransferIterator) Next() bool {
 23482  	// If the iterator failed, stop iterating
 23483  	if it.fail != nil {
 23484  		return false
 23485  	}
 23486  	// If the iterator completed, deliver directly whatever's available
 23487  	if it.done {
 23488  		select {
 23489  		case log := <-it.logs:
 23490  			it.Event = new(ERC721MetadataMintableTransfer)
 23491  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 23492  				it.fail = err
 23493  				return false
 23494  			}
 23495  			it.Event.Raw = log
 23496  			return true
 23497  
 23498  		default:
 23499  			return false
 23500  		}
 23501  	}
 23502  	// Iterator still in progress, wait for either a data or an error event
 23503  	select {
 23504  	case log := <-it.logs:
 23505  		it.Event = new(ERC721MetadataMintableTransfer)
 23506  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 23507  			it.fail = err
 23508  			return false
 23509  		}
 23510  		it.Event.Raw = log
 23511  		return true
 23512  
 23513  	case err := <-it.sub.Err():
 23514  		it.done = true
 23515  		it.fail = err
 23516  		return it.Next()
 23517  	}
 23518  }
 23519  
 23520  // Error returns any retrieval or parsing error occurred during filtering.
 23521  func (it *ERC721MetadataMintableTransferIterator) Error() error {
 23522  	return it.fail
 23523  }
 23524  
 23525  // Close terminates the iteration process, releasing any pending underlying
 23526  // resources.
 23527  func (it *ERC721MetadataMintableTransferIterator) Close() error {
 23528  	it.sub.Unsubscribe()
 23529  	return nil
 23530  }
 23531  
 23532  // ERC721MetadataMintableTransfer represents a Transfer event raised by the ERC721MetadataMintable contract.
 23533  type ERC721MetadataMintableTransfer struct {
 23534  	From    common.Address
 23535  	To      common.Address
 23536  	TokenId *big.Int
 23537  	Raw     types.Log // Blockchain specific contextual infos
 23538  }
 23539  
 23540  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 23541  //
 23542  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 23543  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721MetadataMintableTransferIterator, error) {
 23544  
 23545  	var fromRule []interface{}
 23546  	for _, fromItem := range from {
 23547  		fromRule = append(fromRule, fromItem)
 23548  	}
 23549  	var toRule []interface{}
 23550  	for _, toItem := range to {
 23551  		toRule = append(toRule, toItem)
 23552  	}
 23553  	var tokenIdRule []interface{}
 23554  	for _, tokenIdItem := range tokenId {
 23555  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 23556  	}
 23557  
 23558  	logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 23559  	if err != nil {
 23560  		return nil, err
 23561  	}
 23562  	return &ERC721MetadataMintableTransferIterator{contract: _ERC721MetadataMintable.contract, event: "Transfer", logs: logs, sub: sub}, nil
 23563  }
 23564  
 23565  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 23566  //
 23567  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 23568  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 23569  
 23570  	var fromRule []interface{}
 23571  	for _, fromItem := range from {
 23572  		fromRule = append(fromRule, fromItem)
 23573  	}
 23574  	var toRule []interface{}
 23575  	for _, toItem := range to {
 23576  		toRule = append(toRule, toItem)
 23577  	}
 23578  	var tokenIdRule []interface{}
 23579  	for _, tokenIdItem := range tokenId {
 23580  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 23581  	}
 23582  
 23583  	logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 23584  	if err != nil {
 23585  		return nil, err
 23586  	}
 23587  	return event.NewSubscription(func(quit <-chan struct{}) error {
 23588  		defer sub.Unsubscribe()
 23589  		for {
 23590  			select {
 23591  			case log := <-logs:
 23592  				// New log arrived, parse the event and forward to the user
 23593  				event := new(ERC721MetadataMintableTransfer)
 23594  				if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Transfer", log); err != nil {
 23595  					return err
 23596  				}
 23597  				event.Raw = log
 23598  
 23599  				select {
 23600  				case sink <- event:
 23601  				case err := <-sub.Err():
 23602  					return err
 23603  				case <-quit:
 23604  					return nil
 23605  				}
 23606  			case err := <-sub.Err():
 23607  				return err
 23608  			case <-quit:
 23609  				return nil
 23610  			}
 23611  		}
 23612  	}), nil
 23613  }
 23614  
 23615  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 23616  //
 23617  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 23618  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseTransfer(log types.Log) (*ERC721MetadataMintableTransfer, error) {
 23619  	event := new(ERC721MetadataMintableTransfer)
 23620  	if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Transfer", log); err != nil {
 23621  		return nil, err
 23622  	}
 23623  	return event, nil
 23624  }
 23625  
 23626  // IERC165ABI is the input ABI used to generate the binding from.
 23627  const IERC165ABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
 23628  
 23629  // IERC165BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 23630  const IERC165BinRuntime = ``
 23631  
 23632  // IERC165FuncSigs maps the 4-byte function signature to its string representation.
 23633  var IERC165FuncSigs = map[string]string{
 23634  	"01ffc9a7": "supportsInterface(bytes4)",
 23635  }
 23636  
 23637  // IERC165 is an auto generated Go binding around a Klaytn contract.
 23638  type IERC165 struct {
 23639  	IERC165Caller     // Read-only binding to the contract
 23640  	IERC165Transactor // Write-only binding to the contract
 23641  	IERC165Filterer   // Log filterer for contract events
 23642  }
 23643  
 23644  // IERC165Caller is an auto generated read-only Go binding around a Klaytn contract.
 23645  type IERC165Caller struct {
 23646  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 23647  }
 23648  
 23649  // IERC165Transactor is an auto generated write-only Go binding around a Klaytn contract.
 23650  type IERC165Transactor struct {
 23651  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 23652  }
 23653  
 23654  // IERC165Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
 23655  type IERC165Filterer struct {
 23656  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 23657  }
 23658  
 23659  // IERC165Session is an auto generated Go binding around a Klaytn contract,
 23660  // with pre-set call and transact options.
 23661  type IERC165Session struct {
 23662  	Contract     *IERC165          // Generic contract binding to set the session for
 23663  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 23664  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 23665  }
 23666  
 23667  // IERC165CallerSession is an auto generated read-only Go binding around a Klaytn contract,
 23668  // with pre-set call options.
 23669  type IERC165CallerSession struct {
 23670  	Contract *IERC165Caller // Generic contract caller binding to set the session for
 23671  	CallOpts bind.CallOpts  // Call options to use throughout this session
 23672  }
 23673  
 23674  // IERC165TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 23675  // with pre-set transact options.
 23676  type IERC165TransactorSession struct {
 23677  	Contract     *IERC165Transactor // Generic contract transactor binding to set the session for
 23678  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
 23679  }
 23680  
 23681  // IERC165Raw is an auto generated low-level Go binding around a Klaytn contract.
 23682  type IERC165Raw struct {
 23683  	Contract *IERC165 // Generic contract binding to access the raw methods on
 23684  }
 23685  
 23686  // IERC165CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 23687  type IERC165CallerRaw struct {
 23688  	Contract *IERC165Caller // Generic read-only contract binding to access the raw methods on
 23689  }
 23690  
 23691  // IERC165TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 23692  type IERC165TransactorRaw struct {
 23693  	Contract *IERC165Transactor // Generic write-only contract binding to access the raw methods on
 23694  }
 23695  
 23696  // NewIERC165 creates a new instance of IERC165, bound to a specific deployed contract.
 23697  func NewIERC165(address common.Address, backend bind.ContractBackend) (*IERC165, error) {
 23698  	contract, err := bindIERC165(address, backend, backend, backend)
 23699  	if err != nil {
 23700  		return nil, err
 23701  	}
 23702  	return &IERC165{IERC165Caller: IERC165Caller{contract: contract}, IERC165Transactor: IERC165Transactor{contract: contract}, IERC165Filterer: IERC165Filterer{contract: contract}}, nil
 23703  }
 23704  
 23705  // NewIERC165Caller creates a new read-only instance of IERC165, bound to a specific deployed contract.
 23706  func NewIERC165Caller(address common.Address, caller bind.ContractCaller) (*IERC165Caller, error) {
 23707  	contract, err := bindIERC165(address, caller, nil, nil)
 23708  	if err != nil {
 23709  		return nil, err
 23710  	}
 23711  	return &IERC165Caller{contract: contract}, nil
 23712  }
 23713  
 23714  // NewIERC165Transactor creates a new write-only instance of IERC165, bound to a specific deployed contract.
 23715  func NewIERC165Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC165Transactor, error) {
 23716  	contract, err := bindIERC165(address, nil, transactor, nil)
 23717  	if err != nil {
 23718  		return nil, err
 23719  	}
 23720  	return &IERC165Transactor{contract: contract}, nil
 23721  }
 23722  
 23723  // NewIERC165Filterer creates a new log filterer instance of IERC165, bound to a specific deployed contract.
 23724  func NewIERC165Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC165Filterer, error) {
 23725  	contract, err := bindIERC165(address, nil, nil, filterer)
 23726  	if err != nil {
 23727  		return nil, err
 23728  	}
 23729  	return &IERC165Filterer{contract: contract}, nil
 23730  }
 23731  
 23732  // bindIERC165 binds a generic wrapper to an already deployed contract.
 23733  func bindIERC165(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 23734  	parsed, err := abi.JSON(strings.NewReader(IERC165ABI))
 23735  	if err != nil {
 23736  		return nil, err
 23737  	}
 23738  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 23739  }
 23740  
 23741  // Call invokes the (constant) contract method with params as input values and
 23742  // sets the output to result. The result type might be a single field for simple
 23743  // returns, a slice of interfaces for anonymous returns and a struct for named
 23744  // returns.
 23745  func (_IERC165 *IERC165Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 23746  	return _IERC165.Contract.IERC165Caller.contract.Call(opts, result, method, params...)
 23747  }
 23748  
 23749  // Transfer initiates a plain transaction to move funds to the contract, calling
 23750  // its default method if one is available.
 23751  func (_IERC165 *IERC165Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 23752  	return _IERC165.Contract.IERC165Transactor.contract.Transfer(opts)
 23753  }
 23754  
 23755  // Transact invokes the (paid) contract method with params as input values.
 23756  func (_IERC165 *IERC165Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 23757  	return _IERC165.Contract.IERC165Transactor.contract.Transact(opts, method, params...)
 23758  }
 23759  
 23760  // Call invokes the (constant) contract method with params as input values and
 23761  // sets the output to result. The result type might be a single field for simple
 23762  // returns, a slice of interfaces for anonymous returns and a struct for named
 23763  // returns.
 23764  func (_IERC165 *IERC165CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 23765  	return _IERC165.Contract.contract.Call(opts, result, method, params...)
 23766  }
 23767  
 23768  // Transfer initiates a plain transaction to move funds to the contract, calling
 23769  // its default method if one is available.
 23770  func (_IERC165 *IERC165TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 23771  	return _IERC165.Contract.contract.Transfer(opts)
 23772  }
 23773  
 23774  // Transact invokes the (paid) contract method with params as input values.
 23775  func (_IERC165 *IERC165TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 23776  	return _IERC165.Contract.contract.Transact(opts, method, params...)
 23777  }
 23778  
 23779  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 23780  //
 23781  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 23782  func (_IERC165 *IERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
 23783  	var (
 23784  		ret0 = new(bool)
 23785  	)
 23786  	out := ret0
 23787  	err := _IERC165.contract.Call(opts, out, "supportsInterface", interfaceId)
 23788  	return *ret0, err
 23789  }
 23790  
 23791  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 23792  //
 23793  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 23794  func (_IERC165 *IERC165Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
 23795  	return _IERC165.Contract.SupportsInterface(&_IERC165.CallOpts, interfaceId)
 23796  }
 23797  
 23798  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 23799  //
 23800  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 23801  func (_IERC165 *IERC165CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 23802  	return _IERC165.Contract.SupportsInterface(&_IERC165.CallOpts, interfaceId)
 23803  }
 23804  
 23805  // IERC20ABI is the input ABI used to generate the binding from.
 23806  const IERC20ABI = "[{\"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\"}]"
 23807  
 23808  // IERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 23809  const IERC20BinRuntime = ``
 23810  
 23811  // IERC20FuncSigs maps the 4-byte function signature to its string representation.
 23812  var IERC20FuncSigs = map[string]string{
 23813  	"dd62ed3e": "allowance(address,address)",
 23814  	"095ea7b3": "approve(address,uint256)",
 23815  	"70a08231": "balanceOf(address)",
 23816  	"18160ddd": "totalSupply()",
 23817  	"a9059cbb": "transfer(address,uint256)",
 23818  	"23b872dd": "transferFrom(address,address,uint256)",
 23819  }
 23820  
 23821  // IERC20 is an auto generated Go binding around a Klaytn contract.
 23822  type IERC20 struct {
 23823  	IERC20Caller     // Read-only binding to the contract
 23824  	IERC20Transactor // Write-only binding to the contract
 23825  	IERC20Filterer   // Log filterer for contract events
 23826  }
 23827  
 23828  // IERC20Caller is an auto generated read-only Go binding around a Klaytn contract.
 23829  type IERC20Caller struct {
 23830  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 23831  }
 23832  
 23833  // IERC20Transactor is an auto generated write-only Go binding around a Klaytn contract.
 23834  type IERC20Transactor struct {
 23835  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 23836  }
 23837  
 23838  // IERC20Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
 23839  type IERC20Filterer struct {
 23840  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 23841  }
 23842  
 23843  // IERC20Session is an auto generated Go binding around a Klaytn contract,
 23844  // with pre-set call and transact options.
 23845  type IERC20Session struct {
 23846  	Contract     *IERC20           // Generic contract binding to set the session for
 23847  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 23848  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 23849  }
 23850  
 23851  // IERC20CallerSession is an auto generated read-only Go binding around a Klaytn contract,
 23852  // with pre-set call options.
 23853  type IERC20CallerSession struct {
 23854  	Contract *IERC20Caller // Generic contract caller binding to set the session for
 23855  	CallOpts bind.CallOpts // Call options to use throughout this session
 23856  }
 23857  
 23858  // IERC20TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 23859  // with pre-set transact options.
 23860  type IERC20TransactorSession struct {
 23861  	Contract     *IERC20Transactor // Generic contract transactor binding to set the session for
 23862  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 23863  }
 23864  
 23865  // IERC20Raw is an auto generated low-level Go binding around a Klaytn contract.
 23866  type IERC20Raw struct {
 23867  	Contract *IERC20 // Generic contract binding to access the raw methods on
 23868  }
 23869  
 23870  // IERC20CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 23871  type IERC20CallerRaw struct {
 23872  	Contract *IERC20Caller // Generic read-only contract binding to access the raw methods on
 23873  }
 23874  
 23875  // IERC20TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 23876  type IERC20TransactorRaw struct {
 23877  	Contract *IERC20Transactor // Generic write-only contract binding to access the raw methods on
 23878  }
 23879  
 23880  // NewIERC20 creates a new instance of IERC20, bound to a specific deployed contract.
 23881  func NewIERC20(address common.Address, backend bind.ContractBackend) (*IERC20, error) {
 23882  	contract, err := bindIERC20(address, backend, backend, backend)
 23883  	if err != nil {
 23884  		return nil, err
 23885  	}
 23886  	return &IERC20{IERC20Caller: IERC20Caller{contract: contract}, IERC20Transactor: IERC20Transactor{contract: contract}, IERC20Filterer: IERC20Filterer{contract: contract}}, nil
 23887  }
 23888  
 23889  // NewIERC20Caller creates a new read-only instance of IERC20, bound to a specific deployed contract.
 23890  func NewIERC20Caller(address common.Address, caller bind.ContractCaller) (*IERC20Caller, error) {
 23891  	contract, err := bindIERC20(address, caller, nil, nil)
 23892  	if err != nil {
 23893  		return nil, err
 23894  	}
 23895  	return &IERC20Caller{contract: contract}, nil
 23896  }
 23897  
 23898  // NewIERC20Transactor creates a new write-only instance of IERC20, bound to a specific deployed contract.
 23899  func NewIERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC20Transactor, error) {
 23900  	contract, err := bindIERC20(address, nil, transactor, nil)
 23901  	if err != nil {
 23902  		return nil, err
 23903  	}
 23904  	return &IERC20Transactor{contract: contract}, nil
 23905  }
 23906  
 23907  // NewIERC20Filterer creates a new log filterer instance of IERC20, bound to a specific deployed contract.
 23908  func NewIERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC20Filterer, error) {
 23909  	contract, err := bindIERC20(address, nil, nil, filterer)
 23910  	if err != nil {
 23911  		return nil, err
 23912  	}
 23913  	return &IERC20Filterer{contract: contract}, nil
 23914  }
 23915  
 23916  // bindIERC20 binds a generic wrapper to an already deployed contract.
 23917  func bindIERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 23918  	parsed, err := abi.JSON(strings.NewReader(IERC20ABI))
 23919  	if err != nil {
 23920  		return nil, err
 23921  	}
 23922  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 23923  }
 23924  
 23925  // Call invokes the (constant) contract method with params as input values and
 23926  // sets the output to result. The result type might be a single field for simple
 23927  // returns, a slice of interfaces for anonymous returns and a struct for named
 23928  // returns.
 23929  func (_IERC20 *IERC20Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 23930  	return _IERC20.Contract.IERC20Caller.contract.Call(opts, result, method, params...)
 23931  }
 23932  
 23933  // Transfer initiates a plain transaction to move funds to the contract, calling
 23934  // its default method if one is available.
 23935  func (_IERC20 *IERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 23936  	return _IERC20.Contract.IERC20Transactor.contract.Transfer(opts)
 23937  }
 23938  
 23939  // Transact invokes the (paid) contract method with params as input values.
 23940  func (_IERC20 *IERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 23941  	return _IERC20.Contract.IERC20Transactor.contract.Transact(opts, method, params...)
 23942  }
 23943  
 23944  // Call invokes the (constant) contract method with params as input values and
 23945  // sets the output to result. The result type might be a single field for simple
 23946  // returns, a slice of interfaces for anonymous returns and a struct for named
 23947  // returns.
 23948  func (_IERC20 *IERC20CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 23949  	return _IERC20.Contract.contract.Call(opts, result, method, params...)
 23950  }
 23951  
 23952  // Transfer initiates a plain transaction to move funds to the contract, calling
 23953  // its default method if one is available.
 23954  func (_IERC20 *IERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 23955  	return _IERC20.Contract.contract.Transfer(opts)
 23956  }
 23957  
 23958  // Transact invokes the (paid) contract method with params as input values.
 23959  func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 23960  	return _IERC20.Contract.contract.Transact(opts, method, params...)
 23961  }
 23962  
 23963  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 23964  //
 23965  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 23966  func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
 23967  	var (
 23968  		ret0 = new(*big.Int)
 23969  	)
 23970  	out := ret0
 23971  	err := _IERC20.contract.Call(opts, out, "allowance", owner, spender)
 23972  	return *ret0, err
 23973  }
 23974  
 23975  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 23976  //
 23977  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 23978  func (_IERC20 *IERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
 23979  	return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender)
 23980  }
 23981  
 23982  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 23983  //
 23984  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 23985  func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
 23986  	return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender)
 23987  }
 23988  
 23989  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 23990  //
 23991  // Solidity: function balanceOf(address account) view returns(uint256)
 23992  func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
 23993  	var (
 23994  		ret0 = new(*big.Int)
 23995  	)
 23996  	out := ret0
 23997  	err := _IERC20.contract.Call(opts, out, "balanceOf", account)
 23998  	return *ret0, err
 23999  }
 24000  
 24001  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 24002  //
 24003  // Solidity: function balanceOf(address account) view returns(uint256)
 24004  func (_IERC20 *IERC20Session) BalanceOf(account common.Address) (*big.Int, error) {
 24005  	return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account)
 24006  }
 24007  
 24008  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 24009  //
 24010  // Solidity: function balanceOf(address account) view returns(uint256)
 24011  func (_IERC20 *IERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) {
 24012  	return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account)
 24013  }
 24014  
 24015  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 24016  //
 24017  // Solidity: function totalSupply() view returns(uint256)
 24018  func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
 24019  	var (
 24020  		ret0 = new(*big.Int)
 24021  	)
 24022  	out := ret0
 24023  	err := _IERC20.contract.Call(opts, out, "totalSupply")
 24024  	return *ret0, err
 24025  }
 24026  
 24027  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 24028  //
 24029  // Solidity: function totalSupply() view returns(uint256)
 24030  func (_IERC20 *IERC20Session) TotalSupply() (*big.Int, error) {
 24031  	return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts)
 24032  }
 24033  
 24034  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 24035  //
 24036  // Solidity: function totalSupply() view returns(uint256)
 24037  func (_IERC20 *IERC20CallerSession) TotalSupply() (*big.Int, error) {
 24038  	return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts)
 24039  }
 24040  
 24041  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 24042  //
 24043  // Solidity: function approve(address spender, uint256 amount) returns(bool)
 24044  func (_IERC20 *IERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
 24045  	return _IERC20.contract.Transact(opts, "approve", spender, amount)
 24046  }
 24047  
 24048  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 24049  //
 24050  // Solidity: function approve(address spender, uint256 amount) returns(bool)
 24051  func (_IERC20 *IERC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
 24052  	return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, amount)
 24053  }
 24054  
 24055  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 24056  //
 24057  // Solidity: function approve(address spender, uint256 amount) returns(bool)
 24058  func (_IERC20 *IERC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
 24059  	return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, amount)
 24060  }
 24061  
 24062  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 24063  //
 24064  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 24065  func (_IERC20 *IERC20Transactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 24066  	return _IERC20.contract.Transact(opts, "transfer", recipient, amount)
 24067  }
 24068  
 24069  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 24070  //
 24071  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 24072  func (_IERC20 *IERC20Session) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 24073  	return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, recipient, amount)
 24074  }
 24075  
 24076  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 24077  //
 24078  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 24079  func (_IERC20 *IERC20TransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 24080  	return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, recipient, amount)
 24081  }
 24082  
 24083  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 24084  //
 24085  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 24086  func (_IERC20 *IERC20Transactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 24087  	return _IERC20.contract.Transact(opts, "transferFrom", sender, recipient, amount)
 24088  }
 24089  
 24090  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 24091  //
 24092  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 24093  func (_IERC20 *IERC20Session) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 24094  	return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, sender, recipient, amount)
 24095  }
 24096  
 24097  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 24098  //
 24099  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 24100  func (_IERC20 *IERC20TransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 24101  	return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, sender, recipient, amount)
 24102  }
 24103  
 24104  // 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.
 24105  type IERC20ApprovalIterator struct {
 24106  	Event *IERC20Approval // Event containing the contract specifics and raw log
 24107  
 24108  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 24109  	event    string              // Event name to use for unpacking event data
 24110  
 24111  	logs chan types.Log      // Log channel receiving the found contract events
 24112  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 24113  	done bool                // Whether the subscription completed delivering logs
 24114  	fail error               // Occurred error to stop iteration
 24115  }
 24116  
 24117  // Next advances the iterator to the subsequent event, returning whether there
 24118  // are any more events found. In case of a retrieval or parsing error, false is
 24119  // returned and Error() can be queried for the exact failure.
 24120  func (it *IERC20ApprovalIterator) Next() bool {
 24121  	// If the iterator failed, stop iterating
 24122  	if it.fail != nil {
 24123  		return false
 24124  	}
 24125  	// If the iterator completed, deliver directly whatever's available
 24126  	if it.done {
 24127  		select {
 24128  		case log := <-it.logs:
 24129  			it.Event = new(IERC20Approval)
 24130  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 24131  				it.fail = err
 24132  				return false
 24133  			}
 24134  			it.Event.Raw = log
 24135  			return true
 24136  
 24137  		default:
 24138  			return false
 24139  		}
 24140  	}
 24141  	// Iterator still in progress, wait for either a data or an error event
 24142  	select {
 24143  	case log := <-it.logs:
 24144  		it.Event = new(IERC20Approval)
 24145  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 24146  			it.fail = err
 24147  			return false
 24148  		}
 24149  		it.Event.Raw = log
 24150  		return true
 24151  
 24152  	case err := <-it.sub.Err():
 24153  		it.done = true
 24154  		it.fail = err
 24155  		return it.Next()
 24156  	}
 24157  }
 24158  
 24159  // Error returns any retrieval or parsing error occurred during filtering.
 24160  func (it *IERC20ApprovalIterator) Error() error {
 24161  	return it.fail
 24162  }
 24163  
 24164  // Close terminates the iteration process, releasing any pending underlying
 24165  // resources.
 24166  func (it *IERC20ApprovalIterator) Close() error {
 24167  	it.sub.Unsubscribe()
 24168  	return nil
 24169  }
 24170  
 24171  // IERC20Approval represents a Approval event raised by the IERC20 contract.
 24172  type IERC20Approval struct {
 24173  	Owner   common.Address
 24174  	Spender common.Address
 24175  	Value   *big.Int
 24176  	Raw     types.Log // Blockchain specific contextual infos
 24177  }
 24178  
 24179  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 24180  //
 24181  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 24182  func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) {
 24183  
 24184  	var ownerRule []interface{}
 24185  	for _, ownerItem := range owner {
 24186  		ownerRule = append(ownerRule, ownerItem)
 24187  	}
 24188  	var spenderRule []interface{}
 24189  	for _, spenderItem := range spender {
 24190  		spenderRule = append(spenderRule, spenderItem)
 24191  	}
 24192  
 24193  	logs, sub, err := _IERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
 24194  	if err != nil {
 24195  		return nil, err
 24196  	}
 24197  	return &IERC20ApprovalIterator{contract: _IERC20.contract, event: "Approval", logs: logs, sub: sub}, nil
 24198  }
 24199  
 24200  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 24201  //
 24202  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 24203  func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
 24204  
 24205  	var ownerRule []interface{}
 24206  	for _, ownerItem := range owner {
 24207  		ownerRule = append(ownerRule, ownerItem)
 24208  	}
 24209  	var spenderRule []interface{}
 24210  	for _, spenderItem := range spender {
 24211  		spenderRule = append(spenderRule, spenderItem)
 24212  	}
 24213  
 24214  	logs, sub, err := _IERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
 24215  	if err != nil {
 24216  		return nil, err
 24217  	}
 24218  	return event.NewSubscription(func(quit <-chan struct{}) error {
 24219  		defer sub.Unsubscribe()
 24220  		for {
 24221  			select {
 24222  			case log := <-logs:
 24223  				// New log arrived, parse the event and forward to the user
 24224  				event := new(IERC20Approval)
 24225  				if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil {
 24226  					return err
 24227  				}
 24228  				event.Raw = log
 24229  
 24230  				select {
 24231  				case sink <- event:
 24232  				case err := <-sub.Err():
 24233  					return err
 24234  				case <-quit:
 24235  					return nil
 24236  				}
 24237  			case err := <-sub.Err():
 24238  				return err
 24239  			case <-quit:
 24240  				return nil
 24241  			}
 24242  		}
 24243  	}), nil
 24244  }
 24245  
 24246  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 24247  //
 24248  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 24249  func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, error) {
 24250  	event := new(IERC20Approval)
 24251  	if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil {
 24252  		return nil, err
 24253  	}
 24254  	return event, nil
 24255  }
 24256  
 24257  // 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.
 24258  type IERC20TransferIterator struct {
 24259  	Event *IERC20Transfer // Event containing the contract specifics and raw log
 24260  
 24261  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 24262  	event    string              // Event name to use for unpacking event data
 24263  
 24264  	logs chan types.Log      // Log channel receiving the found contract events
 24265  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 24266  	done bool                // Whether the subscription completed delivering logs
 24267  	fail error               // Occurred error to stop iteration
 24268  }
 24269  
 24270  // Next advances the iterator to the subsequent event, returning whether there
 24271  // are any more events found. In case of a retrieval or parsing error, false is
 24272  // returned and Error() can be queried for the exact failure.
 24273  func (it *IERC20TransferIterator) Next() bool {
 24274  	// If the iterator failed, stop iterating
 24275  	if it.fail != nil {
 24276  		return false
 24277  	}
 24278  	// If the iterator completed, deliver directly whatever's available
 24279  	if it.done {
 24280  		select {
 24281  		case log := <-it.logs:
 24282  			it.Event = new(IERC20Transfer)
 24283  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 24284  				it.fail = err
 24285  				return false
 24286  			}
 24287  			it.Event.Raw = log
 24288  			return true
 24289  
 24290  		default:
 24291  			return false
 24292  		}
 24293  	}
 24294  	// Iterator still in progress, wait for either a data or an error event
 24295  	select {
 24296  	case log := <-it.logs:
 24297  		it.Event = new(IERC20Transfer)
 24298  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 24299  			it.fail = err
 24300  			return false
 24301  		}
 24302  		it.Event.Raw = log
 24303  		return true
 24304  
 24305  	case err := <-it.sub.Err():
 24306  		it.done = true
 24307  		it.fail = err
 24308  		return it.Next()
 24309  	}
 24310  }
 24311  
 24312  // Error returns any retrieval or parsing error occurred during filtering.
 24313  func (it *IERC20TransferIterator) Error() error {
 24314  	return it.fail
 24315  }
 24316  
 24317  // Close terminates the iteration process, releasing any pending underlying
 24318  // resources.
 24319  func (it *IERC20TransferIterator) Close() error {
 24320  	it.sub.Unsubscribe()
 24321  	return nil
 24322  }
 24323  
 24324  // IERC20Transfer represents a Transfer event raised by the IERC20 contract.
 24325  type IERC20Transfer struct {
 24326  	From  common.Address
 24327  	To    common.Address
 24328  	Value *big.Int
 24329  	Raw   types.Log // Blockchain specific contextual infos
 24330  }
 24331  
 24332  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 24333  //
 24334  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 24335  func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) {
 24336  
 24337  	var fromRule []interface{}
 24338  	for _, fromItem := range from {
 24339  		fromRule = append(fromRule, fromItem)
 24340  	}
 24341  	var toRule []interface{}
 24342  	for _, toItem := range to {
 24343  		toRule = append(toRule, toItem)
 24344  	}
 24345  
 24346  	logs, sub, err := _IERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
 24347  	if err != nil {
 24348  		return nil, err
 24349  	}
 24350  	return &IERC20TransferIterator{contract: _IERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil
 24351  }
 24352  
 24353  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 24354  //
 24355  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 24356  func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) {
 24357  
 24358  	var fromRule []interface{}
 24359  	for _, fromItem := range from {
 24360  		fromRule = append(fromRule, fromItem)
 24361  	}
 24362  	var toRule []interface{}
 24363  	for _, toItem := range to {
 24364  		toRule = append(toRule, toItem)
 24365  	}
 24366  
 24367  	logs, sub, err := _IERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
 24368  	if err != nil {
 24369  		return nil, err
 24370  	}
 24371  	return event.NewSubscription(func(quit <-chan struct{}) error {
 24372  		defer sub.Unsubscribe()
 24373  		for {
 24374  			select {
 24375  			case log := <-logs:
 24376  				// New log arrived, parse the event and forward to the user
 24377  				event := new(IERC20Transfer)
 24378  				if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil {
 24379  					return err
 24380  				}
 24381  				event.Raw = log
 24382  
 24383  				select {
 24384  				case sink <- event:
 24385  				case err := <-sub.Err():
 24386  					return err
 24387  				case <-quit:
 24388  					return nil
 24389  				}
 24390  			case err := <-sub.Err():
 24391  				return err
 24392  			case <-quit:
 24393  				return nil
 24394  			}
 24395  		}
 24396  	}), nil
 24397  }
 24398  
 24399  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 24400  //
 24401  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 24402  func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, error) {
 24403  	event := new(IERC20Transfer)
 24404  	if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil {
 24405  		return nil, err
 24406  	}
 24407  	return event, nil
 24408  }
 24409  
 24410  // IERC20BridgeReceiverABI is the input ABI used to generate the binding from.
 24411  const IERC20BridgeReceiverABI = "[{\"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\"}]"
 24412  
 24413  // IERC20BridgeReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 24414  const IERC20BridgeReceiverBinRuntime = ``
 24415  
 24416  // IERC20BridgeReceiverFuncSigs maps the 4-byte function signature to its string representation.
 24417  var IERC20BridgeReceiverFuncSigs = map[string]string{
 24418  	"f1656e53": "onERC20Received(address,address,uint256,uint256,bytes)",
 24419  }
 24420  
 24421  // IERC20BridgeReceiver is an auto generated Go binding around a Klaytn contract.
 24422  type IERC20BridgeReceiver struct {
 24423  	IERC20BridgeReceiverCaller     // Read-only binding to the contract
 24424  	IERC20BridgeReceiverTransactor // Write-only binding to the contract
 24425  	IERC20BridgeReceiverFilterer   // Log filterer for contract events
 24426  }
 24427  
 24428  // IERC20BridgeReceiverCaller is an auto generated read-only Go binding around a Klaytn contract.
 24429  type IERC20BridgeReceiverCaller struct {
 24430  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 24431  }
 24432  
 24433  // IERC20BridgeReceiverTransactor is an auto generated write-only Go binding around a Klaytn contract.
 24434  type IERC20BridgeReceiverTransactor struct {
 24435  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 24436  }
 24437  
 24438  // IERC20BridgeReceiverFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 24439  type IERC20BridgeReceiverFilterer struct {
 24440  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 24441  }
 24442  
 24443  // IERC20BridgeReceiverSession is an auto generated Go binding around a Klaytn contract,
 24444  // with pre-set call and transact options.
 24445  type IERC20BridgeReceiverSession struct {
 24446  	Contract     *IERC20BridgeReceiver // Generic contract binding to set the session for
 24447  	CallOpts     bind.CallOpts         // Call options to use throughout this session
 24448  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
 24449  }
 24450  
 24451  // IERC20BridgeReceiverCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 24452  // with pre-set call options.
 24453  type IERC20BridgeReceiverCallerSession struct {
 24454  	Contract *IERC20BridgeReceiverCaller // Generic contract caller binding to set the session for
 24455  	CallOpts bind.CallOpts               // Call options to use throughout this session
 24456  }
 24457  
 24458  // IERC20BridgeReceiverTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 24459  // with pre-set transact options.
 24460  type IERC20BridgeReceiverTransactorSession struct {
 24461  	Contract     *IERC20BridgeReceiverTransactor // Generic contract transactor binding to set the session for
 24462  	TransactOpts bind.TransactOpts               // Transaction auth options to use throughout this session
 24463  }
 24464  
 24465  // IERC20BridgeReceiverRaw is an auto generated low-level Go binding around a Klaytn contract.
 24466  type IERC20BridgeReceiverRaw struct {
 24467  	Contract *IERC20BridgeReceiver // Generic contract binding to access the raw methods on
 24468  }
 24469  
 24470  // IERC20BridgeReceiverCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 24471  type IERC20BridgeReceiverCallerRaw struct {
 24472  	Contract *IERC20BridgeReceiverCaller // Generic read-only contract binding to access the raw methods on
 24473  }
 24474  
 24475  // IERC20BridgeReceiverTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 24476  type IERC20BridgeReceiverTransactorRaw struct {
 24477  	Contract *IERC20BridgeReceiverTransactor // Generic write-only contract binding to access the raw methods on
 24478  }
 24479  
 24480  // NewIERC20BridgeReceiver creates a new instance of IERC20BridgeReceiver, bound to a specific deployed contract.
 24481  func NewIERC20BridgeReceiver(address common.Address, backend bind.ContractBackend) (*IERC20BridgeReceiver, error) {
 24482  	contract, err := bindIERC20BridgeReceiver(address, backend, backend, backend)
 24483  	if err != nil {
 24484  		return nil, err
 24485  	}
 24486  	return &IERC20BridgeReceiver{IERC20BridgeReceiverCaller: IERC20BridgeReceiverCaller{contract: contract}, IERC20BridgeReceiverTransactor: IERC20BridgeReceiverTransactor{contract: contract}, IERC20BridgeReceiverFilterer: IERC20BridgeReceiverFilterer{contract: contract}}, nil
 24487  }
 24488  
 24489  // NewIERC20BridgeReceiverCaller creates a new read-only instance of IERC20BridgeReceiver, bound to a specific deployed contract.
 24490  func NewIERC20BridgeReceiverCaller(address common.Address, caller bind.ContractCaller) (*IERC20BridgeReceiverCaller, error) {
 24491  	contract, err := bindIERC20BridgeReceiver(address, caller, nil, nil)
 24492  	if err != nil {
 24493  		return nil, err
 24494  	}
 24495  	return &IERC20BridgeReceiverCaller{contract: contract}, nil
 24496  }
 24497  
 24498  // NewIERC20BridgeReceiverTransactor creates a new write-only instance of IERC20BridgeReceiver, bound to a specific deployed contract.
 24499  func NewIERC20BridgeReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20BridgeReceiverTransactor, error) {
 24500  	contract, err := bindIERC20BridgeReceiver(address, nil, transactor, nil)
 24501  	if err != nil {
 24502  		return nil, err
 24503  	}
 24504  	return &IERC20BridgeReceiverTransactor{contract: contract}, nil
 24505  }
 24506  
 24507  // NewIERC20BridgeReceiverFilterer creates a new log filterer instance of IERC20BridgeReceiver, bound to a specific deployed contract.
 24508  func NewIERC20BridgeReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20BridgeReceiverFilterer, error) {
 24509  	contract, err := bindIERC20BridgeReceiver(address, nil, nil, filterer)
 24510  	if err != nil {
 24511  		return nil, err
 24512  	}
 24513  	return &IERC20BridgeReceiverFilterer{contract: contract}, nil
 24514  }
 24515  
 24516  // bindIERC20BridgeReceiver binds a generic wrapper to an already deployed contract.
 24517  func bindIERC20BridgeReceiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 24518  	parsed, err := abi.JSON(strings.NewReader(IERC20BridgeReceiverABI))
 24519  	if err != nil {
 24520  		return nil, err
 24521  	}
 24522  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 24523  }
 24524  
 24525  // Call invokes the (constant) contract method with params as input values and
 24526  // sets the output to result. The result type might be a single field for simple
 24527  // returns, a slice of interfaces for anonymous returns and a struct for named
 24528  // returns.
 24529  func (_IERC20BridgeReceiver *IERC20BridgeReceiverRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 24530  	return _IERC20BridgeReceiver.Contract.IERC20BridgeReceiverCaller.contract.Call(opts, result, method, params...)
 24531  }
 24532  
 24533  // Transfer initiates a plain transaction to move funds to the contract, calling
 24534  // its default method if one is available.
 24535  func (_IERC20BridgeReceiver *IERC20BridgeReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 24536  	return _IERC20BridgeReceiver.Contract.IERC20BridgeReceiverTransactor.contract.Transfer(opts)
 24537  }
 24538  
 24539  // Transact invokes the (paid) contract method with params as input values.
 24540  func (_IERC20BridgeReceiver *IERC20BridgeReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 24541  	return _IERC20BridgeReceiver.Contract.IERC20BridgeReceiverTransactor.contract.Transact(opts, method, params...)
 24542  }
 24543  
 24544  // Call invokes the (constant) contract method with params as input values and
 24545  // sets the output to result. The result type might be a single field for simple
 24546  // returns, a slice of interfaces for anonymous returns and a struct for named
 24547  // returns.
 24548  func (_IERC20BridgeReceiver *IERC20BridgeReceiverCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 24549  	return _IERC20BridgeReceiver.Contract.contract.Call(opts, result, method, params...)
 24550  }
 24551  
 24552  // Transfer initiates a plain transaction to move funds to the contract, calling
 24553  // its default method if one is available.
 24554  func (_IERC20BridgeReceiver *IERC20BridgeReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 24555  	return _IERC20BridgeReceiver.Contract.contract.Transfer(opts)
 24556  }
 24557  
 24558  // Transact invokes the (paid) contract method with params as input values.
 24559  func (_IERC20BridgeReceiver *IERC20BridgeReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 24560  	return _IERC20BridgeReceiver.Contract.contract.Transact(opts, method, params...)
 24561  }
 24562  
 24563  // OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53.
 24564  //
 24565  // Solidity: function onERC20Received(address _from, address _to, uint256 _amount, uint256 _feeLimit, bytes _extraData) returns()
 24566  func (_IERC20BridgeReceiver *IERC20BridgeReceiverTransactor) OnERC20Received(opts *bind.TransactOpts, _from common.Address, _to common.Address, _amount *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
 24567  	return _IERC20BridgeReceiver.contract.Transact(opts, "onERC20Received", _from, _to, _amount, _feeLimit, _extraData)
 24568  }
 24569  
 24570  // OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53.
 24571  //
 24572  // Solidity: function onERC20Received(address _from, address _to, uint256 _amount, uint256 _feeLimit, bytes _extraData) returns()
 24573  func (_IERC20BridgeReceiver *IERC20BridgeReceiverSession) OnERC20Received(_from common.Address, _to common.Address, _amount *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
 24574  	return _IERC20BridgeReceiver.Contract.OnERC20Received(&_IERC20BridgeReceiver.TransactOpts, _from, _to, _amount, _feeLimit, _extraData)
 24575  }
 24576  
 24577  // OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53.
 24578  //
 24579  // Solidity: function onERC20Received(address _from, address _to, uint256 _amount, uint256 _feeLimit, bytes _extraData) returns()
 24580  func (_IERC20BridgeReceiver *IERC20BridgeReceiverTransactorSession) OnERC20Received(_from common.Address, _to common.Address, _amount *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
 24581  	return _IERC20BridgeReceiver.Contract.OnERC20Received(&_IERC20BridgeReceiver.TransactOpts, _from, _to, _amount, _feeLimit, _extraData)
 24582  }
 24583  
 24584  // IERC721ABI is the input ABI used to generate the binding from.
 24585  const IERC721ABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"operator\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"operator\",\"type\":\"address\"},{\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
 24586  
 24587  // IERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 24588  const IERC721BinRuntime = ``
 24589  
 24590  // IERC721FuncSigs maps the 4-byte function signature to its string representation.
 24591  var IERC721FuncSigs = map[string]string{
 24592  	"095ea7b3": "approve(address,uint256)",
 24593  	"70a08231": "balanceOf(address)",
 24594  	"081812fc": "getApproved(uint256)",
 24595  	"e985e9c5": "isApprovedForAll(address,address)",
 24596  	"6352211e": "ownerOf(uint256)",
 24597  	"42842e0e": "safeTransferFrom(address,address,uint256)",
 24598  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
 24599  	"a22cb465": "setApprovalForAll(address,bool)",
 24600  	"01ffc9a7": "supportsInterface(bytes4)",
 24601  	"23b872dd": "transferFrom(address,address,uint256)",
 24602  }
 24603  
 24604  // IERC721 is an auto generated Go binding around a Klaytn contract.
 24605  type IERC721 struct {
 24606  	IERC721Caller     // Read-only binding to the contract
 24607  	IERC721Transactor // Write-only binding to the contract
 24608  	IERC721Filterer   // Log filterer for contract events
 24609  }
 24610  
 24611  // IERC721Caller is an auto generated read-only Go binding around a Klaytn contract.
 24612  type IERC721Caller struct {
 24613  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 24614  }
 24615  
 24616  // IERC721Transactor is an auto generated write-only Go binding around a Klaytn contract.
 24617  type IERC721Transactor struct {
 24618  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 24619  }
 24620  
 24621  // IERC721Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
 24622  type IERC721Filterer struct {
 24623  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 24624  }
 24625  
 24626  // IERC721Session is an auto generated Go binding around a Klaytn contract,
 24627  // with pre-set call and transact options.
 24628  type IERC721Session struct {
 24629  	Contract     *IERC721          // Generic contract binding to set the session for
 24630  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 24631  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 24632  }
 24633  
 24634  // IERC721CallerSession is an auto generated read-only Go binding around a Klaytn contract,
 24635  // with pre-set call options.
 24636  type IERC721CallerSession struct {
 24637  	Contract *IERC721Caller // Generic contract caller binding to set the session for
 24638  	CallOpts bind.CallOpts  // Call options to use throughout this session
 24639  }
 24640  
 24641  // IERC721TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 24642  // with pre-set transact options.
 24643  type IERC721TransactorSession struct {
 24644  	Contract     *IERC721Transactor // Generic contract transactor binding to set the session for
 24645  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
 24646  }
 24647  
 24648  // IERC721Raw is an auto generated low-level Go binding around a Klaytn contract.
 24649  type IERC721Raw struct {
 24650  	Contract *IERC721 // Generic contract binding to access the raw methods on
 24651  }
 24652  
 24653  // IERC721CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 24654  type IERC721CallerRaw struct {
 24655  	Contract *IERC721Caller // Generic read-only contract binding to access the raw methods on
 24656  }
 24657  
 24658  // IERC721TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 24659  type IERC721TransactorRaw struct {
 24660  	Contract *IERC721Transactor // Generic write-only contract binding to access the raw methods on
 24661  }
 24662  
 24663  // NewIERC721 creates a new instance of IERC721, bound to a specific deployed contract.
 24664  func NewIERC721(address common.Address, backend bind.ContractBackend) (*IERC721, error) {
 24665  	contract, err := bindIERC721(address, backend, backend, backend)
 24666  	if err != nil {
 24667  		return nil, err
 24668  	}
 24669  	return &IERC721{IERC721Caller: IERC721Caller{contract: contract}, IERC721Transactor: IERC721Transactor{contract: contract}, IERC721Filterer: IERC721Filterer{contract: contract}}, nil
 24670  }
 24671  
 24672  // NewIERC721Caller creates a new read-only instance of IERC721, bound to a specific deployed contract.
 24673  func NewIERC721Caller(address common.Address, caller bind.ContractCaller) (*IERC721Caller, error) {
 24674  	contract, err := bindIERC721(address, caller, nil, nil)
 24675  	if err != nil {
 24676  		return nil, err
 24677  	}
 24678  	return &IERC721Caller{contract: contract}, nil
 24679  }
 24680  
 24681  // NewIERC721Transactor creates a new write-only instance of IERC721, bound to a specific deployed contract.
 24682  func NewIERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC721Transactor, error) {
 24683  	contract, err := bindIERC721(address, nil, transactor, nil)
 24684  	if err != nil {
 24685  		return nil, err
 24686  	}
 24687  	return &IERC721Transactor{contract: contract}, nil
 24688  }
 24689  
 24690  // NewIERC721Filterer creates a new log filterer instance of IERC721, bound to a specific deployed contract.
 24691  func NewIERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC721Filterer, error) {
 24692  	contract, err := bindIERC721(address, nil, nil, filterer)
 24693  	if err != nil {
 24694  		return nil, err
 24695  	}
 24696  	return &IERC721Filterer{contract: contract}, nil
 24697  }
 24698  
 24699  // bindIERC721 binds a generic wrapper to an already deployed contract.
 24700  func bindIERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 24701  	parsed, err := abi.JSON(strings.NewReader(IERC721ABI))
 24702  	if err != nil {
 24703  		return nil, err
 24704  	}
 24705  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 24706  }
 24707  
 24708  // Call invokes the (constant) contract method with params as input values and
 24709  // sets the output to result. The result type might be a single field for simple
 24710  // returns, a slice of interfaces for anonymous returns and a struct for named
 24711  // returns.
 24712  func (_IERC721 *IERC721Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 24713  	return _IERC721.Contract.IERC721Caller.contract.Call(opts, result, method, params...)
 24714  }
 24715  
 24716  // Transfer initiates a plain transaction to move funds to the contract, calling
 24717  // its default method if one is available.
 24718  func (_IERC721 *IERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 24719  	return _IERC721.Contract.IERC721Transactor.contract.Transfer(opts)
 24720  }
 24721  
 24722  // Transact invokes the (paid) contract method with params as input values.
 24723  func (_IERC721 *IERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 24724  	return _IERC721.Contract.IERC721Transactor.contract.Transact(opts, method, params...)
 24725  }
 24726  
 24727  // Call invokes the (constant) contract method with params as input values and
 24728  // sets the output to result. The result type might be a single field for simple
 24729  // returns, a slice of interfaces for anonymous returns and a struct for named
 24730  // returns.
 24731  func (_IERC721 *IERC721CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 24732  	return _IERC721.Contract.contract.Call(opts, result, method, params...)
 24733  }
 24734  
 24735  // Transfer initiates a plain transaction to move funds to the contract, calling
 24736  // its default method if one is available.
 24737  func (_IERC721 *IERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 24738  	return _IERC721.Contract.contract.Transfer(opts)
 24739  }
 24740  
 24741  // Transact invokes the (paid) contract method with params as input values.
 24742  func (_IERC721 *IERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 24743  	return _IERC721.Contract.contract.Transact(opts, method, params...)
 24744  }
 24745  
 24746  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 24747  //
 24748  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
 24749  func (_IERC721 *IERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
 24750  	var (
 24751  		ret0 = new(*big.Int)
 24752  	)
 24753  	out := ret0
 24754  	err := _IERC721.contract.Call(opts, out, "balanceOf", owner)
 24755  	return *ret0, err
 24756  }
 24757  
 24758  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 24759  //
 24760  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
 24761  func (_IERC721 *IERC721Session) BalanceOf(owner common.Address) (*big.Int, error) {
 24762  	return _IERC721.Contract.BalanceOf(&_IERC721.CallOpts, owner)
 24763  }
 24764  
 24765  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 24766  //
 24767  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
 24768  func (_IERC721 *IERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
 24769  	return _IERC721.Contract.BalanceOf(&_IERC721.CallOpts, owner)
 24770  }
 24771  
 24772  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 24773  //
 24774  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
 24775  func (_IERC721 *IERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 24776  	var (
 24777  		ret0 = new(common.Address)
 24778  	)
 24779  	out := ret0
 24780  	err := _IERC721.contract.Call(opts, out, "getApproved", tokenId)
 24781  	return *ret0, err
 24782  }
 24783  
 24784  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 24785  //
 24786  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
 24787  func (_IERC721 *IERC721Session) GetApproved(tokenId *big.Int) (common.Address, error) {
 24788  	return _IERC721.Contract.GetApproved(&_IERC721.CallOpts, tokenId)
 24789  }
 24790  
 24791  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 24792  //
 24793  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
 24794  func (_IERC721 *IERC721CallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 24795  	return _IERC721.Contract.GetApproved(&_IERC721.CallOpts, tokenId)
 24796  }
 24797  
 24798  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 24799  //
 24800  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 24801  func (_IERC721 *IERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
 24802  	var (
 24803  		ret0 = new(bool)
 24804  	)
 24805  	out := ret0
 24806  	err := _IERC721.contract.Call(opts, out, "isApprovedForAll", owner, operator)
 24807  	return *ret0, err
 24808  }
 24809  
 24810  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 24811  //
 24812  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 24813  func (_IERC721 *IERC721Session) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 24814  	return _IERC721.Contract.IsApprovedForAll(&_IERC721.CallOpts, owner, operator)
 24815  }
 24816  
 24817  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 24818  //
 24819  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 24820  func (_IERC721 *IERC721CallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 24821  	return _IERC721.Contract.IsApprovedForAll(&_IERC721.CallOpts, owner, operator)
 24822  }
 24823  
 24824  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 24825  //
 24826  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
 24827  func (_IERC721 *IERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 24828  	var (
 24829  		ret0 = new(common.Address)
 24830  	)
 24831  	out := ret0
 24832  	err := _IERC721.contract.Call(opts, out, "ownerOf", tokenId)
 24833  	return *ret0, err
 24834  }
 24835  
 24836  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 24837  //
 24838  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
 24839  func (_IERC721 *IERC721Session) OwnerOf(tokenId *big.Int) (common.Address, error) {
 24840  	return _IERC721.Contract.OwnerOf(&_IERC721.CallOpts, tokenId)
 24841  }
 24842  
 24843  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 24844  //
 24845  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
 24846  func (_IERC721 *IERC721CallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 24847  	return _IERC721.Contract.OwnerOf(&_IERC721.CallOpts, tokenId)
 24848  }
 24849  
 24850  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 24851  //
 24852  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 24853  func (_IERC721 *IERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
 24854  	var (
 24855  		ret0 = new(bool)
 24856  	)
 24857  	out := ret0
 24858  	err := _IERC721.contract.Call(opts, out, "supportsInterface", interfaceId)
 24859  	return *ret0, err
 24860  }
 24861  
 24862  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 24863  //
 24864  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 24865  func (_IERC721 *IERC721Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
 24866  	return _IERC721.Contract.SupportsInterface(&_IERC721.CallOpts, interfaceId)
 24867  }
 24868  
 24869  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 24870  //
 24871  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 24872  func (_IERC721 *IERC721CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 24873  	return _IERC721.Contract.SupportsInterface(&_IERC721.CallOpts, interfaceId)
 24874  }
 24875  
 24876  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 24877  //
 24878  // Solidity: function approve(address to, uint256 tokenId) returns()
 24879  func (_IERC721 *IERC721Transactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 24880  	return _IERC721.contract.Transact(opts, "approve", to, tokenId)
 24881  }
 24882  
 24883  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 24884  //
 24885  // Solidity: function approve(address to, uint256 tokenId) returns()
 24886  func (_IERC721 *IERC721Session) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 24887  	return _IERC721.Contract.Approve(&_IERC721.TransactOpts, to, tokenId)
 24888  }
 24889  
 24890  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 24891  //
 24892  // Solidity: function approve(address to, uint256 tokenId) returns()
 24893  func (_IERC721 *IERC721TransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 24894  	return _IERC721.Contract.Approve(&_IERC721.TransactOpts, to, tokenId)
 24895  }
 24896  
 24897  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 24898  //
 24899  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 24900  func (_IERC721 *IERC721Transactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 24901  	return _IERC721.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
 24902  }
 24903  
 24904  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 24905  //
 24906  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 24907  func (_IERC721 *IERC721Session) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 24908  	return _IERC721.Contract.SafeTransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
 24909  }
 24910  
 24911  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 24912  //
 24913  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 24914  func (_IERC721 *IERC721TransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 24915  	return _IERC721.Contract.SafeTransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
 24916  }
 24917  
 24918  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 24919  //
 24920  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
 24921  func (_IERC721 *IERC721Transactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 24922  	return _IERC721.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, data)
 24923  }
 24924  
 24925  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 24926  //
 24927  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
 24928  func (_IERC721 *IERC721Session) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 24929  	return _IERC721.Contract.SafeTransferFrom0(&_IERC721.TransactOpts, from, to, tokenId, data)
 24930  }
 24931  
 24932  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 24933  //
 24934  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
 24935  func (_IERC721 *IERC721TransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 24936  	return _IERC721.Contract.SafeTransferFrom0(&_IERC721.TransactOpts, from, to, tokenId, data)
 24937  }
 24938  
 24939  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 24940  //
 24941  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
 24942  func (_IERC721 *IERC721Transactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, _approved bool) (*types.Transaction, error) {
 24943  	return _IERC721.contract.Transact(opts, "setApprovalForAll", operator, _approved)
 24944  }
 24945  
 24946  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 24947  //
 24948  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
 24949  func (_IERC721 *IERC721Session) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
 24950  	return _IERC721.Contract.SetApprovalForAll(&_IERC721.TransactOpts, operator, _approved)
 24951  }
 24952  
 24953  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 24954  //
 24955  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
 24956  func (_IERC721 *IERC721TransactorSession) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
 24957  	return _IERC721.Contract.SetApprovalForAll(&_IERC721.TransactOpts, operator, _approved)
 24958  }
 24959  
 24960  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 24961  //
 24962  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 24963  func (_IERC721 *IERC721Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 24964  	return _IERC721.contract.Transact(opts, "transferFrom", from, to, tokenId)
 24965  }
 24966  
 24967  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 24968  //
 24969  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 24970  func (_IERC721 *IERC721Session) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 24971  	return _IERC721.Contract.TransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
 24972  }
 24973  
 24974  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 24975  //
 24976  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 24977  func (_IERC721 *IERC721TransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 24978  	return _IERC721.Contract.TransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
 24979  }
 24980  
 24981  // IERC721ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC721 contract.
 24982  type IERC721ApprovalIterator struct {
 24983  	Event *IERC721Approval // Event containing the contract specifics and raw log
 24984  
 24985  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 24986  	event    string              // Event name to use for unpacking event data
 24987  
 24988  	logs chan types.Log      // Log channel receiving the found contract events
 24989  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 24990  	done bool                // Whether the subscription completed delivering logs
 24991  	fail error               // Occurred error to stop iteration
 24992  }
 24993  
 24994  // Next advances the iterator to the subsequent event, returning whether there
 24995  // are any more events found. In case of a retrieval or parsing error, false is
 24996  // returned and Error() can be queried for the exact failure.
 24997  func (it *IERC721ApprovalIterator) Next() bool {
 24998  	// If the iterator failed, stop iterating
 24999  	if it.fail != nil {
 25000  		return false
 25001  	}
 25002  	// If the iterator completed, deliver directly whatever's available
 25003  	if it.done {
 25004  		select {
 25005  		case log := <-it.logs:
 25006  			it.Event = new(IERC721Approval)
 25007  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 25008  				it.fail = err
 25009  				return false
 25010  			}
 25011  			it.Event.Raw = log
 25012  			return true
 25013  
 25014  		default:
 25015  			return false
 25016  		}
 25017  	}
 25018  	// Iterator still in progress, wait for either a data or an error event
 25019  	select {
 25020  	case log := <-it.logs:
 25021  		it.Event = new(IERC721Approval)
 25022  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 25023  			it.fail = err
 25024  			return false
 25025  		}
 25026  		it.Event.Raw = log
 25027  		return true
 25028  
 25029  	case err := <-it.sub.Err():
 25030  		it.done = true
 25031  		it.fail = err
 25032  		return it.Next()
 25033  	}
 25034  }
 25035  
 25036  // Error returns any retrieval or parsing error occurred during filtering.
 25037  func (it *IERC721ApprovalIterator) Error() error {
 25038  	return it.fail
 25039  }
 25040  
 25041  // Close terminates the iteration process, releasing any pending underlying
 25042  // resources.
 25043  func (it *IERC721ApprovalIterator) Close() error {
 25044  	it.sub.Unsubscribe()
 25045  	return nil
 25046  }
 25047  
 25048  // IERC721Approval represents a Approval event raised by the IERC721 contract.
 25049  type IERC721Approval struct {
 25050  	Owner    common.Address
 25051  	Approved common.Address
 25052  	TokenId  *big.Int
 25053  	Raw      types.Log // Blockchain specific contextual infos
 25054  }
 25055  
 25056  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 25057  //
 25058  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 25059  func (_IERC721 *IERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*IERC721ApprovalIterator, error) {
 25060  
 25061  	var ownerRule []interface{}
 25062  	for _, ownerItem := range owner {
 25063  		ownerRule = append(ownerRule, ownerItem)
 25064  	}
 25065  	var approvedRule []interface{}
 25066  	for _, approvedItem := range approved {
 25067  		approvedRule = append(approvedRule, approvedItem)
 25068  	}
 25069  	var tokenIdRule []interface{}
 25070  	for _, tokenIdItem := range tokenId {
 25071  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 25072  	}
 25073  
 25074  	logs, sub, err := _IERC721.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 25075  	if err != nil {
 25076  		return nil, err
 25077  	}
 25078  	return &IERC721ApprovalIterator{contract: _IERC721.contract, event: "Approval", logs: logs, sub: sub}, nil
 25079  }
 25080  
 25081  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 25082  //
 25083  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 25084  func (_IERC721 *IERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 25085  
 25086  	var ownerRule []interface{}
 25087  	for _, ownerItem := range owner {
 25088  		ownerRule = append(ownerRule, ownerItem)
 25089  	}
 25090  	var approvedRule []interface{}
 25091  	for _, approvedItem := range approved {
 25092  		approvedRule = append(approvedRule, approvedItem)
 25093  	}
 25094  	var tokenIdRule []interface{}
 25095  	for _, tokenIdItem := range tokenId {
 25096  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 25097  	}
 25098  
 25099  	logs, sub, err := _IERC721.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 25100  	if err != nil {
 25101  		return nil, err
 25102  	}
 25103  	return event.NewSubscription(func(quit <-chan struct{}) error {
 25104  		defer sub.Unsubscribe()
 25105  		for {
 25106  			select {
 25107  			case log := <-logs:
 25108  				// New log arrived, parse the event and forward to the user
 25109  				event := new(IERC721Approval)
 25110  				if err := _IERC721.contract.UnpackLog(event, "Approval", log); err != nil {
 25111  					return err
 25112  				}
 25113  				event.Raw = log
 25114  
 25115  				select {
 25116  				case sink <- event:
 25117  				case err := <-sub.Err():
 25118  					return err
 25119  				case <-quit:
 25120  					return nil
 25121  				}
 25122  			case err := <-sub.Err():
 25123  				return err
 25124  			case <-quit:
 25125  				return nil
 25126  			}
 25127  		}
 25128  	}), nil
 25129  }
 25130  
 25131  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 25132  //
 25133  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 25134  func (_IERC721 *IERC721Filterer) ParseApproval(log types.Log) (*IERC721Approval, error) {
 25135  	event := new(IERC721Approval)
 25136  	if err := _IERC721.contract.UnpackLog(event, "Approval", log); err != nil {
 25137  		return nil, err
 25138  	}
 25139  	return event, nil
 25140  }
 25141  
 25142  // IERC721ApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the IERC721 contract.
 25143  type IERC721ApprovalForAllIterator struct {
 25144  	Event *IERC721ApprovalForAll // Event containing the contract specifics and raw log
 25145  
 25146  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 25147  	event    string              // Event name to use for unpacking event data
 25148  
 25149  	logs chan types.Log      // Log channel receiving the found contract events
 25150  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 25151  	done bool                // Whether the subscription completed delivering logs
 25152  	fail error               // Occurred error to stop iteration
 25153  }
 25154  
 25155  // Next advances the iterator to the subsequent event, returning whether there
 25156  // are any more events found. In case of a retrieval or parsing error, false is
 25157  // returned and Error() can be queried for the exact failure.
 25158  func (it *IERC721ApprovalForAllIterator) Next() bool {
 25159  	// If the iterator failed, stop iterating
 25160  	if it.fail != nil {
 25161  		return false
 25162  	}
 25163  	// If the iterator completed, deliver directly whatever's available
 25164  	if it.done {
 25165  		select {
 25166  		case log := <-it.logs:
 25167  			it.Event = new(IERC721ApprovalForAll)
 25168  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 25169  				it.fail = err
 25170  				return false
 25171  			}
 25172  			it.Event.Raw = log
 25173  			return true
 25174  
 25175  		default:
 25176  			return false
 25177  		}
 25178  	}
 25179  	// Iterator still in progress, wait for either a data or an error event
 25180  	select {
 25181  	case log := <-it.logs:
 25182  		it.Event = new(IERC721ApprovalForAll)
 25183  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 25184  			it.fail = err
 25185  			return false
 25186  		}
 25187  		it.Event.Raw = log
 25188  		return true
 25189  
 25190  	case err := <-it.sub.Err():
 25191  		it.done = true
 25192  		it.fail = err
 25193  		return it.Next()
 25194  	}
 25195  }
 25196  
 25197  // Error returns any retrieval or parsing error occurred during filtering.
 25198  func (it *IERC721ApprovalForAllIterator) Error() error {
 25199  	return it.fail
 25200  }
 25201  
 25202  // Close terminates the iteration process, releasing any pending underlying
 25203  // resources.
 25204  func (it *IERC721ApprovalForAllIterator) Close() error {
 25205  	it.sub.Unsubscribe()
 25206  	return nil
 25207  }
 25208  
 25209  // IERC721ApprovalForAll represents a ApprovalForAll event raised by the IERC721 contract.
 25210  type IERC721ApprovalForAll struct {
 25211  	Owner    common.Address
 25212  	Operator common.Address
 25213  	Approved bool
 25214  	Raw      types.Log // Blockchain specific contextual infos
 25215  }
 25216  
 25217  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 25218  //
 25219  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 25220  func (_IERC721 *IERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*IERC721ApprovalForAllIterator, error) {
 25221  
 25222  	var ownerRule []interface{}
 25223  	for _, ownerItem := range owner {
 25224  		ownerRule = append(ownerRule, ownerItem)
 25225  	}
 25226  	var operatorRule []interface{}
 25227  	for _, operatorItem := range operator {
 25228  		operatorRule = append(operatorRule, operatorItem)
 25229  	}
 25230  
 25231  	logs, sub, err := _IERC721.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 25232  	if err != nil {
 25233  		return nil, err
 25234  	}
 25235  	return &IERC721ApprovalForAllIterator{contract: _IERC721.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
 25236  }
 25237  
 25238  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 25239  //
 25240  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 25241  func (_IERC721 *IERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
 25242  
 25243  	var ownerRule []interface{}
 25244  	for _, ownerItem := range owner {
 25245  		ownerRule = append(ownerRule, ownerItem)
 25246  	}
 25247  	var operatorRule []interface{}
 25248  	for _, operatorItem := range operator {
 25249  		operatorRule = append(operatorRule, operatorItem)
 25250  	}
 25251  
 25252  	logs, sub, err := _IERC721.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 25253  	if err != nil {
 25254  		return nil, err
 25255  	}
 25256  	return event.NewSubscription(func(quit <-chan struct{}) error {
 25257  		defer sub.Unsubscribe()
 25258  		for {
 25259  			select {
 25260  			case log := <-logs:
 25261  				// New log arrived, parse the event and forward to the user
 25262  				event := new(IERC721ApprovalForAll)
 25263  				if err := _IERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 25264  					return err
 25265  				}
 25266  				event.Raw = log
 25267  
 25268  				select {
 25269  				case sink <- event:
 25270  				case err := <-sub.Err():
 25271  					return err
 25272  				case <-quit:
 25273  					return nil
 25274  				}
 25275  			case err := <-sub.Err():
 25276  				return err
 25277  			case <-quit:
 25278  				return nil
 25279  			}
 25280  		}
 25281  	}), nil
 25282  }
 25283  
 25284  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 25285  //
 25286  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 25287  func (_IERC721 *IERC721Filterer) ParseApprovalForAll(log types.Log) (*IERC721ApprovalForAll, error) {
 25288  	event := new(IERC721ApprovalForAll)
 25289  	if err := _IERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 25290  		return nil, err
 25291  	}
 25292  	return event, nil
 25293  }
 25294  
 25295  // IERC721TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC721 contract.
 25296  type IERC721TransferIterator struct {
 25297  	Event *IERC721Transfer // Event containing the contract specifics and raw log
 25298  
 25299  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 25300  	event    string              // Event name to use for unpacking event data
 25301  
 25302  	logs chan types.Log      // Log channel receiving the found contract events
 25303  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 25304  	done bool                // Whether the subscription completed delivering logs
 25305  	fail error               // Occurred error to stop iteration
 25306  }
 25307  
 25308  // Next advances the iterator to the subsequent event, returning whether there
 25309  // are any more events found. In case of a retrieval or parsing error, false is
 25310  // returned and Error() can be queried for the exact failure.
 25311  func (it *IERC721TransferIterator) Next() bool {
 25312  	// If the iterator failed, stop iterating
 25313  	if it.fail != nil {
 25314  		return false
 25315  	}
 25316  	// If the iterator completed, deliver directly whatever's available
 25317  	if it.done {
 25318  		select {
 25319  		case log := <-it.logs:
 25320  			it.Event = new(IERC721Transfer)
 25321  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 25322  				it.fail = err
 25323  				return false
 25324  			}
 25325  			it.Event.Raw = log
 25326  			return true
 25327  
 25328  		default:
 25329  			return false
 25330  		}
 25331  	}
 25332  	// Iterator still in progress, wait for either a data or an error event
 25333  	select {
 25334  	case log := <-it.logs:
 25335  		it.Event = new(IERC721Transfer)
 25336  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 25337  			it.fail = err
 25338  			return false
 25339  		}
 25340  		it.Event.Raw = log
 25341  		return true
 25342  
 25343  	case err := <-it.sub.Err():
 25344  		it.done = true
 25345  		it.fail = err
 25346  		return it.Next()
 25347  	}
 25348  }
 25349  
 25350  // Error returns any retrieval or parsing error occurred during filtering.
 25351  func (it *IERC721TransferIterator) Error() error {
 25352  	return it.fail
 25353  }
 25354  
 25355  // Close terminates the iteration process, releasing any pending underlying
 25356  // resources.
 25357  func (it *IERC721TransferIterator) Close() error {
 25358  	it.sub.Unsubscribe()
 25359  	return nil
 25360  }
 25361  
 25362  // IERC721Transfer represents a Transfer event raised by the IERC721 contract.
 25363  type IERC721Transfer struct {
 25364  	From    common.Address
 25365  	To      common.Address
 25366  	TokenId *big.Int
 25367  	Raw     types.Log // Blockchain specific contextual infos
 25368  }
 25369  
 25370  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 25371  //
 25372  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 25373  func (_IERC721 *IERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*IERC721TransferIterator, error) {
 25374  
 25375  	var fromRule []interface{}
 25376  	for _, fromItem := range from {
 25377  		fromRule = append(fromRule, fromItem)
 25378  	}
 25379  	var toRule []interface{}
 25380  	for _, toItem := range to {
 25381  		toRule = append(toRule, toItem)
 25382  	}
 25383  	var tokenIdRule []interface{}
 25384  	for _, tokenIdItem := range tokenId {
 25385  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 25386  	}
 25387  
 25388  	logs, sub, err := _IERC721.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 25389  	if err != nil {
 25390  		return nil, err
 25391  	}
 25392  	return &IERC721TransferIterator{contract: _IERC721.contract, event: "Transfer", logs: logs, sub: sub}, nil
 25393  }
 25394  
 25395  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 25396  //
 25397  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 25398  func (_IERC721 *IERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 25399  
 25400  	var fromRule []interface{}
 25401  	for _, fromItem := range from {
 25402  		fromRule = append(fromRule, fromItem)
 25403  	}
 25404  	var toRule []interface{}
 25405  	for _, toItem := range to {
 25406  		toRule = append(toRule, toItem)
 25407  	}
 25408  	var tokenIdRule []interface{}
 25409  	for _, tokenIdItem := range tokenId {
 25410  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 25411  	}
 25412  
 25413  	logs, sub, err := _IERC721.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 25414  	if err != nil {
 25415  		return nil, err
 25416  	}
 25417  	return event.NewSubscription(func(quit <-chan struct{}) error {
 25418  		defer sub.Unsubscribe()
 25419  		for {
 25420  			select {
 25421  			case log := <-logs:
 25422  				// New log arrived, parse the event and forward to the user
 25423  				event := new(IERC721Transfer)
 25424  				if err := _IERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
 25425  					return err
 25426  				}
 25427  				event.Raw = log
 25428  
 25429  				select {
 25430  				case sink <- event:
 25431  				case err := <-sub.Err():
 25432  					return err
 25433  				case <-quit:
 25434  					return nil
 25435  				}
 25436  			case err := <-sub.Err():
 25437  				return err
 25438  			case <-quit:
 25439  				return nil
 25440  			}
 25441  		}
 25442  	}), nil
 25443  }
 25444  
 25445  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 25446  //
 25447  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 25448  func (_IERC721 *IERC721Filterer) ParseTransfer(log types.Log) (*IERC721Transfer, error) {
 25449  	event := new(IERC721Transfer)
 25450  	if err := _IERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
 25451  		return nil, err
 25452  	}
 25453  	return event, nil
 25454  }
 25455  
 25456  // IERC721BridgeReceiverABI is the input ABI used to generate the binding from.
 25457  const IERC721BridgeReceiverABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
 25458  
 25459  // IERC721BridgeReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 25460  const IERC721BridgeReceiverBinRuntime = ``
 25461  
 25462  // IERC721BridgeReceiverFuncSigs maps the 4-byte function signature to its string representation.
 25463  var IERC721BridgeReceiverFuncSigs = map[string]string{
 25464  	"cf0da290": "onERC721Received(address,uint256,address,bytes)",
 25465  }
 25466  
 25467  // IERC721BridgeReceiver is an auto generated Go binding around a Klaytn contract.
 25468  type IERC721BridgeReceiver struct {
 25469  	IERC721BridgeReceiverCaller     // Read-only binding to the contract
 25470  	IERC721BridgeReceiverTransactor // Write-only binding to the contract
 25471  	IERC721BridgeReceiverFilterer   // Log filterer for contract events
 25472  }
 25473  
 25474  // IERC721BridgeReceiverCaller is an auto generated read-only Go binding around a Klaytn contract.
 25475  type IERC721BridgeReceiverCaller struct {
 25476  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 25477  }
 25478  
 25479  // IERC721BridgeReceiverTransactor is an auto generated write-only Go binding around a Klaytn contract.
 25480  type IERC721BridgeReceiverTransactor struct {
 25481  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 25482  }
 25483  
 25484  // IERC721BridgeReceiverFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 25485  type IERC721BridgeReceiverFilterer struct {
 25486  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 25487  }
 25488  
 25489  // IERC721BridgeReceiverSession is an auto generated Go binding around a Klaytn contract,
 25490  // with pre-set call and transact options.
 25491  type IERC721BridgeReceiverSession struct {
 25492  	Contract     *IERC721BridgeReceiver // Generic contract binding to set the session for
 25493  	CallOpts     bind.CallOpts          // Call options to use throughout this session
 25494  	TransactOpts bind.TransactOpts      // Transaction auth options to use throughout this session
 25495  }
 25496  
 25497  // IERC721BridgeReceiverCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 25498  // with pre-set call options.
 25499  type IERC721BridgeReceiverCallerSession struct {
 25500  	Contract *IERC721BridgeReceiverCaller // Generic contract caller binding to set the session for
 25501  	CallOpts bind.CallOpts                // Call options to use throughout this session
 25502  }
 25503  
 25504  // IERC721BridgeReceiverTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 25505  // with pre-set transact options.
 25506  type IERC721BridgeReceiverTransactorSession struct {
 25507  	Contract     *IERC721BridgeReceiverTransactor // Generic contract transactor binding to set the session for
 25508  	TransactOpts bind.TransactOpts                // Transaction auth options to use throughout this session
 25509  }
 25510  
 25511  // IERC721BridgeReceiverRaw is an auto generated low-level Go binding around a Klaytn contract.
 25512  type IERC721BridgeReceiverRaw struct {
 25513  	Contract *IERC721BridgeReceiver // Generic contract binding to access the raw methods on
 25514  }
 25515  
 25516  // IERC721BridgeReceiverCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 25517  type IERC721BridgeReceiverCallerRaw struct {
 25518  	Contract *IERC721BridgeReceiverCaller // Generic read-only contract binding to access the raw methods on
 25519  }
 25520  
 25521  // IERC721BridgeReceiverTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 25522  type IERC721BridgeReceiverTransactorRaw struct {
 25523  	Contract *IERC721BridgeReceiverTransactor // Generic write-only contract binding to access the raw methods on
 25524  }
 25525  
 25526  // NewIERC721BridgeReceiver creates a new instance of IERC721BridgeReceiver, bound to a specific deployed contract.
 25527  func NewIERC721BridgeReceiver(address common.Address, backend bind.ContractBackend) (*IERC721BridgeReceiver, error) {
 25528  	contract, err := bindIERC721BridgeReceiver(address, backend, backend, backend)
 25529  	if err != nil {
 25530  		return nil, err
 25531  	}
 25532  	return &IERC721BridgeReceiver{IERC721BridgeReceiverCaller: IERC721BridgeReceiverCaller{contract: contract}, IERC721BridgeReceiverTransactor: IERC721BridgeReceiverTransactor{contract: contract}, IERC721BridgeReceiverFilterer: IERC721BridgeReceiverFilterer{contract: contract}}, nil
 25533  }
 25534  
 25535  // NewIERC721BridgeReceiverCaller creates a new read-only instance of IERC721BridgeReceiver, bound to a specific deployed contract.
 25536  func NewIERC721BridgeReceiverCaller(address common.Address, caller bind.ContractCaller) (*IERC721BridgeReceiverCaller, error) {
 25537  	contract, err := bindIERC721BridgeReceiver(address, caller, nil, nil)
 25538  	if err != nil {
 25539  		return nil, err
 25540  	}
 25541  	return &IERC721BridgeReceiverCaller{contract: contract}, nil
 25542  }
 25543  
 25544  // NewIERC721BridgeReceiverTransactor creates a new write-only instance of IERC721BridgeReceiver, bound to a specific deployed contract.
 25545  func NewIERC721BridgeReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721BridgeReceiverTransactor, error) {
 25546  	contract, err := bindIERC721BridgeReceiver(address, nil, transactor, nil)
 25547  	if err != nil {
 25548  		return nil, err
 25549  	}
 25550  	return &IERC721BridgeReceiverTransactor{contract: contract}, nil
 25551  }
 25552  
 25553  // NewIERC721BridgeReceiverFilterer creates a new log filterer instance of IERC721BridgeReceiver, bound to a specific deployed contract.
 25554  func NewIERC721BridgeReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721BridgeReceiverFilterer, error) {
 25555  	contract, err := bindIERC721BridgeReceiver(address, nil, nil, filterer)
 25556  	if err != nil {
 25557  		return nil, err
 25558  	}
 25559  	return &IERC721BridgeReceiverFilterer{contract: contract}, nil
 25560  }
 25561  
 25562  // bindIERC721BridgeReceiver binds a generic wrapper to an already deployed contract.
 25563  func bindIERC721BridgeReceiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 25564  	parsed, err := abi.JSON(strings.NewReader(IERC721BridgeReceiverABI))
 25565  	if err != nil {
 25566  		return nil, err
 25567  	}
 25568  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 25569  }
 25570  
 25571  // Call invokes the (constant) contract method with params as input values and
 25572  // sets the output to result. The result type might be a single field for simple
 25573  // returns, a slice of interfaces for anonymous returns and a struct for named
 25574  // returns.
 25575  func (_IERC721BridgeReceiver *IERC721BridgeReceiverRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 25576  	return _IERC721BridgeReceiver.Contract.IERC721BridgeReceiverCaller.contract.Call(opts, result, method, params...)
 25577  }
 25578  
 25579  // Transfer initiates a plain transaction to move funds to the contract, calling
 25580  // its default method if one is available.
 25581  func (_IERC721BridgeReceiver *IERC721BridgeReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 25582  	return _IERC721BridgeReceiver.Contract.IERC721BridgeReceiverTransactor.contract.Transfer(opts)
 25583  }
 25584  
 25585  // Transact invokes the (paid) contract method with params as input values.
 25586  func (_IERC721BridgeReceiver *IERC721BridgeReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 25587  	return _IERC721BridgeReceiver.Contract.IERC721BridgeReceiverTransactor.contract.Transact(opts, method, params...)
 25588  }
 25589  
 25590  // Call invokes the (constant) contract method with params as input values and
 25591  // sets the output to result. The result type might be a single field for simple
 25592  // returns, a slice of interfaces for anonymous returns and a struct for named
 25593  // returns.
 25594  func (_IERC721BridgeReceiver *IERC721BridgeReceiverCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 25595  	return _IERC721BridgeReceiver.Contract.contract.Call(opts, result, method, params...)
 25596  }
 25597  
 25598  // Transfer initiates a plain transaction to move funds to the contract, calling
 25599  // its default method if one is available.
 25600  func (_IERC721BridgeReceiver *IERC721BridgeReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 25601  	return _IERC721BridgeReceiver.Contract.contract.Transfer(opts)
 25602  }
 25603  
 25604  // Transact invokes the (paid) contract method with params as input values.
 25605  func (_IERC721BridgeReceiver *IERC721BridgeReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 25606  	return _IERC721BridgeReceiver.Contract.contract.Transact(opts, method, params...)
 25607  }
 25608  
 25609  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
 25610  //
 25611  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
 25612  func (_IERC721BridgeReceiver *IERC721BridgeReceiverTransactor) OnERC721Received(opts *bind.TransactOpts, _from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
 25613  	return _IERC721BridgeReceiver.contract.Transact(opts, "onERC721Received", _from, _tokenId, _to, _extraData)
 25614  }
 25615  
 25616  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
 25617  //
 25618  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
 25619  func (_IERC721BridgeReceiver *IERC721BridgeReceiverSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
 25620  	return _IERC721BridgeReceiver.Contract.OnERC721Received(&_IERC721BridgeReceiver.TransactOpts, _from, _tokenId, _to, _extraData)
 25621  }
 25622  
 25623  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
 25624  //
 25625  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
 25626  func (_IERC721BridgeReceiver *IERC721BridgeReceiverTransactorSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
 25627  	return _IERC721BridgeReceiver.Contract.OnERC721Received(&_IERC721BridgeReceiver.TransactOpts, _from, _tokenId, _to, _extraData)
 25628  }
 25629  
 25630  // IERC721MetadataABI is the input ABI used to generate the binding from.
 25631  const IERC721MetadataABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"operator\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"operator\",\"type\":\"address\"},{\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
 25632  
 25633  // IERC721MetadataBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 25634  const IERC721MetadataBinRuntime = ``
 25635  
 25636  // IERC721MetadataFuncSigs maps the 4-byte function signature to its string representation.
 25637  var IERC721MetadataFuncSigs = map[string]string{
 25638  	"095ea7b3": "approve(address,uint256)",
 25639  	"70a08231": "balanceOf(address)",
 25640  	"081812fc": "getApproved(uint256)",
 25641  	"e985e9c5": "isApprovedForAll(address,address)",
 25642  	"06fdde03": "name()",
 25643  	"6352211e": "ownerOf(uint256)",
 25644  	"42842e0e": "safeTransferFrom(address,address,uint256)",
 25645  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
 25646  	"a22cb465": "setApprovalForAll(address,bool)",
 25647  	"01ffc9a7": "supportsInterface(bytes4)",
 25648  	"95d89b41": "symbol()",
 25649  	"c87b56dd": "tokenURI(uint256)",
 25650  	"23b872dd": "transferFrom(address,address,uint256)",
 25651  }
 25652  
 25653  // IERC721Metadata is an auto generated Go binding around a Klaytn contract.
 25654  type IERC721Metadata struct {
 25655  	IERC721MetadataCaller     // Read-only binding to the contract
 25656  	IERC721MetadataTransactor // Write-only binding to the contract
 25657  	IERC721MetadataFilterer   // Log filterer for contract events
 25658  }
 25659  
 25660  // IERC721MetadataCaller is an auto generated read-only Go binding around a Klaytn contract.
 25661  type IERC721MetadataCaller struct {
 25662  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 25663  }
 25664  
 25665  // IERC721MetadataTransactor is an auto generated write-only Go binding around a Klaytn contract.
 25666  type IERC721MetadataTransactor struct {
 25667  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 25668  }
 25669  
 25670  // IERC721MetadataFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 25671  type IERC721MetadataFilterer struct {
 25672  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 25673  }
 25674  
 25675  // IERC721MetadataSession is an auto generated Go binding around a Klaytn contract,
 25676  // with pre-set call and transact options.
 25677  type IERC721MetadataSession struct {
 25678  	Contract     *IERC721Metadata  // Generic contract binding to set the session for
 25679  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 25680  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 25681  }
 25682  
 25683  // IERC721MetadataCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 25684  // with pre-set call options.
 25685  type IERC721MetadataCallerSession struct {
 25686  	Contract *IERC721MetadataCaller // Generic contract caller binding to set the session for
 25687  	CallOpts bind.CallOpts          // Call options to use throughout this session
 25688  }
 25689  
 25690  // IERC721MetadataTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 25691  // with pre-set transact options.
 25692  type IERC721MetadataTransactorSession struct {
 25693  	Contract     *IERC721MetadataTransactor // Generic contract transactor binding to set the session for
 25694  	TransactOpts bind.TransactOpts          // Transaction auth options to use throughout this session
 25695  }
 25696  
 25697  // IERC721MetadataRaw is an auto generated low-level Go binding around a Klaytn contract.
 25698  type IERC721MetadataRaw struct {
 25699  	Contract *IERC721Metadata // Generic contract binding to access the raw methods on
 25700  }
 25701  
 25702  // IERC721MetadataCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 25703  type IERC721MetadataCallerRaw struct {
 25704  	Contract *IERC721MetadataCaller // Generic read-only contract binding to access the raw methods on
 25705  }
 25706  
 25707  // IERC721MetadataTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 25708  type IERC721MetadataTransactorRaw struct {
 25709  	Contract *IERC721MetadataTransactor // Generic write-only contract binding to access the raw methods on
 25710  }
 25711  
 25712  // NewIERC721Metadata creates a new instance of IERC721Metadata, bound to a specific deployed contract.
 25713  func NewIERC721Metadata(address common.Address, backend bind.ContractBackend) (*IERC721Metadata, error) {
 25714  	contract, err := bindIERC721Metadata(address, backend, backend, backend)
 25715  	if err != nil {
 25716  		return nil, err
 25717  	}
 25718  	return &IERC721Metadata{IERC721MetadataCaller: IERC721MetadataCaller{contract: contract}, IERC721MetadataTransactor: IERC721MetadataTransactor{contract: contract}, IERC721MetadataFilterer: IERC721MetadataFilterer{contract: contract}}, nil
 25719  }
 25720  
 25721  // NewIERC721MetadataCaller creates a new read-only instance of IERC721Metadata, bound to a specific deployed contract.
 25722  func NewIERC721MetadataCaller(address common.Address, caller bind.ContractCaller) (*IERC721MetadataCaller, error) {
 25723  	contract, err := bindIERC721Metadata(address, caller, nil, nil)
 25724  	if err != nil {
 25725  		return nil, err
 25726  	}
 25727  	return &IERC721MetadataCaller{contract: contract}, nil
 25728  }
 25729  
 25730  // NewIERC721MetadataTransactor creates a new write-only instance of IERC721Metadata, bound to a specific deployed contract.
 25731  func NewIERC721MetadataTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721MetadataTransactor, error) {
 25732  	contract, err := bindIERC721Metadata(address, nil, transactor, nil)
 25733  	if err != nil {
 25734  		return nil, err
 25735  	}
 25736  	return &IERC721MetadataTransactor{contract: contract}, nil
 25737  }
 25738  
 25739  // NewIERC721MetadataFilterer creates a new log filterer instance of IERC721Metadata, bound to a specific deployed contract.
 25740  func NewIERC721MetadataFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721MetadataFilterer, error) {
 25741  	contract, err := bindIERC721Metadata(address, nil, nil, filterer)
 25742  	if err != nil {
 25743  		return nil, err
 25744  	}
 25745  	return &IERC721MetadataFilterer{contract: contract}, nil
 25746  }
 25747  
 25748  // bindIERC721Metadata binds a generic wrapper to an already deployed contract.
 25749  func bindIERC721Metadata(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 25750  	parsed, err := abi.JSON(strings.NewReader(IERC721MetadataABI))
 25751  	if err != nil {
 25752  		return nil, err
 25753  	}
 25754  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 25755  }
 25756  
 25757  // Call invokes the (constant) contract method with params as input values and
 25758  // sets the output to result. The result type might be a single field for simple
 25759  // returns, a slice of interfaces for anonymous returns and a struct for named
 25760  // returns.
 25761  func (_IERC721Metadata *IERC721MetadataRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 25762  	return _IERC721Metadata.Contract.IERC721MetadataCaller.contract.Call(opts, result, method, params...)
 25763  }
 25764  
 25765  // Transfer initiates a plain transaction to move funds to the contract, calling
 25766  // its default method if one is available.
 25767  func (_IERC721Metadata *IERC721MetadataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 25768  	return _IERC721Metadata.Contract.IERC721MetadataTransactor.contract.Transfer(opts)
 25769  }
 25770  
 25771  // Transact invokes the (paid) contract method with params as input values.
 25772  func (_IERC721Metadata *IERC721MetadataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 25773  	return _IERC721Metadata.Contract.IERC721MetadataTransactor.contract.Transact(opts, method, params...)
 25774  }
 25775  
 25776  // Call invokes the (constant) contract method with params as input values and
 25777  // sets the output to result. The result type might be a single field for simple
 25778  // returns, a slice of interfaces for anonymous returns and a struct for named
 25779  // returns.
 25780  func (_IERC721Metadata *IERC721MetadataCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 25781  	return _IERC721Metadata.Contract.contract.Call(opts, result, method, params...)
 25782  }
 25783  
 25784  // Transfer initiates a plain transaction to move funds to the contract, calling
 25785  // its default method if one is available.
 25786  func (_IERC721Metadata *IERC721MetadataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 25787  	return _IERC721Metadata.Contract.contract.Transfer(opts)
 25788  }
 25789  
 25790  // Transact invokes the (paid) contract method with params as input values.
 25791  func (_IERC721Metadata *IERC721MetadataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 25792  	return _IERC721Metadata.Contract.contract.Transact(opts, method, params...)
 25793  }
 25794  
 25795  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 25796  //
 25797  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
 25798  func (_IERC721Metadata *IERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
 25799  	var (
 25800  		ret0 = new(*big.Int)
 25801  	)
 25802  	out := ret0
 25803  	err := _IERC721Metadata.contract.Call(opts, out, "balanceOf", owner)
 25804  	return *ret0, err
 25805  }
 25806  
 25807  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 25808  //
 25809  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
 25810  func (_IERC721Metadata *IERC721MetadataSession) BalanceOf(owner common.Address) (*big.Int, error) {
 25811  	return _IERC721Metadata.Contract.BalanceOf(&_IERC721Metadata.CallOpts, owner)
 25812  }
 25813  
 25814  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 25815  //
 25816  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
 25817  func (_IERC721Metadata *IERC721MetadataCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
 25818  	return _IERC721Metadata.Contract.BalanceOf(&_IERC721Metadata.CallOpts, owner)
 25819  }
 25820  
 25821  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 25822  //
 25823  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
 25824  func (_IERC721Metadata *IERC721MetadataCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 25825  	var (
 25826  		ret0 = new(common.Address)
 25827  	)
 25828  	out := ret0
 25829  	err := _IERC721Metadata.contract.Call(opts, out, "getApproved", tokenId)
 25830  	return *ret0, err
 25831  }
 25832  
 25833  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 25834  //
 25835  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
 25836  func (_IERC721Metadata *IERC721MetadataSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 25837  	return _IERC721Metadata.Contract.GetApproved(&_IERC721Metadata.CallOpts, tokenId)
 25838  }
 25839  
 25840  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 25841  //
 25842  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
 25843  func (_IERC721Metadata *IERC721MetadataCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 25844  	return _IERC721Metadata.Contract.GetApproved(&_IERC721Metadata.CallOpts, tokenId)
 25845  }
 25846  
 25847  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 25848  //
 25849  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 25850  func (_IERC721Metadata *IERC721MetadataCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
 25851  	var (
 25852  		ret0 = new(bool)
 25853  	)
 25854  	out := ret0
 25855  	err := _IERC721Metadata.contract.Call(opts, out, "isApprovedForAll", owner, operator)
 25856  	return *ret0, err
 25857  }
 25858  
 25859  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 25860  //
 25861  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 25862  func (_IERC721Metadata *IERC721MetadataSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 25863  	return _IERC721Metadata.Contract.IsApprovedForAll(&_IERC721Metadata.CallOpts, owner, operator)
 25864  }
 25865  
 25866  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 25867  //
 25868  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 25869  func (_IERC721Metadata *IERC721MetadataCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 25870  	return _IERC721Metadata.Contract.IsApprovedForAll(&_IERC721Metadata.CallOpts, owner, operator)
 25871  }
 25872  
 25873  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 25874  //
 25875  // Solidity: function name() view returns(string)
 25876  func (_IERC721Metadata *IERC721MetadataCaller) Name(opts *bind.CallOpts) (string, error) {
 25877  	var (
 25878  		ret0 = new(string)
 25879  	)
 25880  	out := ret0
 25881  	err := _IERC721Metadata.contract.Call(opts, out, "name")
 25882  	return *ret0, err
 25883  }
 25884  
 25885  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 25886  //
 25887  // Solidity: function name() view returns(string)
 25888  func (_IERC721Metadata *IERC721MetadataSession) Name() (string, error) {
 25889  	return _IERC721Metadata.Contract.Name(&_IERC721Metadata.CallOpts)
 25890  }
 25891  
 25892  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 25893  //
 25894  // Solidity: function name() view returns(string)
 25895  func (_IERC721Metadata *IERC721MetadataCallerSession) Name() (string, error) {
 25896  	return _IERC721Metadata.Contract.Name(&_IERC721Metadata.CallOpts)
 25897  }
 25898  
 25899  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 25900  //
 25901  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
 25902  func (_IERC721Metadata *IERC721MetadataCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 25903  	var (
 25904  		ret0 = new(common.Address)
 25905  	)
 25906  	out := ret0
 25907  	err := _IERC721Metadata.contract.Call(opts, out, "ownerOf", tokenId)
 25908  	return *ret0, err
 25909  }
 25910  
 25911  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 25912  //
 25913  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
 25914  func (_IERC721Metadata *IERC721MetadataSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 25915  	return _IERC721Metadata.Contract.OwnerOf(&_IERC721Metadata.CallOpts, tokenId)
 25916  }
 25917  
 25918  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 25919  //
 25920  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
 25921  func (_IERC721Metadata *IERC721MetadataCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 25922  	return _IERC721Metadata.Contract.OwnerOf(&_IERC721Metadata.CallOpts, tokenId)
 25923  }
 25924  
 25925  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 25926  //
 25927  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 25928  func (_IERC721Metadata *IERC721MetadataCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
 25929  	var (
 25930  		ret0 = new(bool)
 25931  	)
 25932  	out := ret0
 25933  	err := _IERC721Metadata.contract.Call(opts, out, "supportsInterface", interfaceId)
 25934  	return *ret0, err
 25935  }
 25936  
 25937  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 25938  //
 25939  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 25940  func (_IERC721Metadata *IERC721MetadataSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 25941  	return _IERC721Metadata.Contract.SupportsInterface(&_IERC721Metadata.CallOpts, interfaceId)
 25942  }
 25943  
 25944  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 25945  //
 25946  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 25947  func (_IERC721Metadata *IERC721MetadataCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 25948  	return _IERC721Metadata.Contract.SupportsInterface(&_IERC721Metadata.CallOpts, interfaceId)
 25949  }
 25950  
 25951  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 25952  //
 25953  // Solidity: function symbol() view returns(string)
 25954  func (_IERC721Metadata *IERC721MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) {
 25955  	var (
 25956  		ret0 = new(string)
 25957  	)
 25958  	out := ret0
 25959  	err := _IERC721Metadata.contract.Call(opts, out, "symbol")
 25960  	return *ret0, err
 25961  }
 25962  
 25963  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 25964  //
 25965  // Solidity: function symbol() view returns(string)
 25966  func (_IERC721Metadata *IERC721MetadataSession) Symbol() (string, error) {
 25967  	return _IERC721Metadata.Contract.Symbol(&_IERC721Metadata.CallOpts)
 25968  }
 25969  
 25970  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 25971  //
 25972  // Solidity: function symbol() view returns(string)
 25973  func (_IERC721Metadata *IERC721MetadataCallerSession) Symbol() (string, error) {
 25974  	return _IERC721Metadata.Contract.Symbol(&_IERC721Metadata.CallOpts)
 25975  }
 25976  
 25977  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 25978  //
 25979  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 25980  func (_IERC721Metadata *IERC721MetadataCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) {
 25981  	var (
 25982  		ret0 = new(string)
 25983  	)
 25984  	out := ret0
 25985  	err := _IERC721Metadata.contract.Call(opts, out, "tokenURI", tokenId)
 25986  	return *ret0, err
 25987  }
 25988  
 25989  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 25990  //
 25991  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 25992  func (_IERC721Metadata *IERC721MetadataSession) TokenURI(tokenId *big.Int) (string, error) {
 25993  	return _IERC721Metadata.Contract.TokenURI(&_IERC721Metadata.CallOpts, tokenId)
 25994  }
 25995  
 25996  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 25997  //
 25998  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 25999  func (_IERC721Metadata *IERC721MetadataCallerSession) TokenURI(tokenId *big.Int) (string, error) {
 26000  	return _IERC721Metadata.Contract.TokenURI(&_IERC721Metadata.CallOpts, tokenId)
 26001  }
 26002  
 26003  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 26004  //
 26005  // Solidity: function approve(address to, uint256 tokenId) returns()
 26006  func (_IERC721Metadata *IERC721MetadataTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 26007  	return _IERC721Metadata.contract.Transact(opts, "approve", to, tokenId)
 26008  }
 26009  
 26010  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 26011  //
 26012  // Solidity: function approve(address to, uint256 tokenId) returns()
 26013  func (_IERC721Metadata *IERC721MetadataSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 26014  	return _IERC721Metadata.Contract.Approve(&_IERC721Metadata.TransactOpts, to, tokenId)
 26015  }
 26016  
 26017  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 26018  //
 26019  // Solidity: function approve(address to, uint256 tokenId) returns()
 26020  func (_IERC721Metadata *IERC721MetadataTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 26021  	return _IERC721Metadata.Contract.Approve(&_IERC721Metadata.TransactOpts, to, tokenId)
 26022  }
 26023  
 26024  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 26025  //
 26026  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 26027  func (_IERC721Metadata *IERC721MetadataTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 26028  	return _IERC721Metadata.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
 26029  }
 26030  
 26031  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 26032  //
 26033  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 26034  func (_IERC721Metadata *IERC721MetadataSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 26035  	return _IERC721Metadata.Contract.SafeTransferFrom(&_IERC721Metadata.TransactOpts, from, to, tokenId)
 26036  }
 26037  
 26038  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 26039  //
 26040  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 26041  func (_IERC721Metadata *IERC721MetadataTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 26042  	return _IERC721Metadata.Contract.SafeTransferFrom(&_IERC721Metadata.TransactOpts, from, to, tokenId)
 26043  }
 26044  
 26045  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 26046  //
 26047  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
 26048  func (_IERC721Metadata *IERC721MetadataTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 26049  	return _IERC721Metadata.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, data)
 26050  }
 26051  
 26052  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 26053  //
 26054  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
 26055  func (_IERC721Metadata *IERC721MetadataSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 26056  	return _IERC721Metadata.Contract.SafeTransferFrom0(&_IERC721Metadata.TransactOpts, from, to, tokenId, data)
 26057  }
 26058  
 26059  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 26060  //
 26061  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
 26062  func (_IERC721Metadata *IERC721MetadataTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 26063  	return _IERC721Metadata.Contract.SafeTransferFrom0(&_IERC721Metadata.TransactOpts, from, to, tokenId, data)
 26064  }
 26065  
 26066  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 26067  //
 26068  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
 26069  func (_IERC721Metadata *IERC721MetadataTransactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, _approved bool) (*types.Transaction, error) {
 26070  	return _IERC721Metadata.contract.Transact(opts, "setApprovalForAll", operator, _approved)
 26071  }
 26072  
 26073  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 26074  //
 26075  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
 26076  func (_IERC721Metadata *IERC721MetadataSession) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
 26077  	return _IERC721Metadata.Contract.SetApprovalForAll(&_IERC721Metadata.TransactOpts, operator, _approved)
 26078  }
 26079  
 26080  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 26081  //
 26082  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
 26083  func (_IERC721Metadata *IERC721MetadataTransactorSession) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
 26084  	return _IERC721Metadata.Contract.SetApprovalForAll(&_IERC721Metadata.TransactOpts, operator, _approved)
 26085  }
 26086  
 26087  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 26088  //
 26089  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 26090  func (_IERC721Metadata *IERC721MetadataTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 26091  	return _IERC721Metadata.contract.Transact(opts, "transferFrom", from, to, tokenId)
 26092  }
 26093  
 26094  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 26095  //
 26096  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 26097  func (_IERC721Metadata *IERC721MetadataSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 26098  	return _IERC721Metadata.Contract.TransferFrom(&_IERC721Metadata.TransactOpts, from, to, tokenId)
 26099  }
 26100  
 26101  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 26102  //
 26103  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 26104  func (_IERC721Metadata *IERC721MetadataTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 26105  	return _IERC721Metadata.Contract.TransferFrom(&_IERC721Metadata.TransactOpts, from, to, tokenId)
 26106  }
 26107  
 26108  // IERC721MetadataApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC721Metadata contract.
 26109  type IERC721MetadataApprovalIterator struct {
 26110  	Event *IERC721MetadataApproval // Event containing the contract specifics and raw log
 26111  
 26112  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 26113  	event    string              // Event name to use for unpacking event data
 26114  
 26115  	logs chan types.Log      // Log channel receiving the found contract events
 26116  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 26117  	done bool                // Whether the subscription completed delivering logs
 26118  	fail error               // Occurred error to stop iteration
 26119  }
 26120  
 26121  // Next advances the iterator to the subsequent event, returning whether there
 26122  // are any more events found. In case of a retrieval or parsing error, false is
 26123  // returned and Error() can be queried for the exact failure.
 26124  func (it *IERC721MetadataApprovalIterator) Next() bool {
 26125  	// If the iterator failed, stop iterating
 26126  	if it.fail != nil {
 26127  		return false
 26128  	}
 26129  	// If the iterator completed, deliver directly whatever's available
 26130  	if it.done {
 26131  		select {
 26132  		case log := <-it.logs:
 26133  			it.Event = new(IERC721MetadataApproval)
 26134  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 26135  				it.fail = err
 26136  				return false
 26137  			}
 26138  			it.Event.Raw = log
 26139  			return true
 26140  
 26141  		default:
 26142  			return false
 26143  		}
 26144  	}
 26145  	// Iterator still in progress, wait for either a data or an error event
 26146  	select {
 26147  	case log := <-it.logs:
 26148  		it.Event = new(IERC721MetadataApproval)
 26149  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 26150  			it.fail = err
 26151  			return false
 26152  		}
 26153  		it.Event.Raw = log
 26154  		return true
 26155  
 26156  	case err := <-it.sub.Err():
 26157  		it.done = true
 26158  		it.fail = err
 26159  		return it.Next()
 26160  	}
 26161  }
 26162  
 26163  // Error returns any retrieval or parsing error occurred during filtering.
 26164  func (it *IERC721MetadataApprovalIterator) Error() error {
 26165  	return it.fail
 26166  }
 26167  
 26168  // Close terminates the iteration process, releasing any pending underlying
 26169  // resources.
 26170  func (it *IERC721MetadataApprovalIterator) Close() error {
 26171  	it.sub.Unsubscribe()
 26172  	return nil
 26173  }
 26174  
 26175  // IERC721MetadataApproval represents a Approval event raised by the IERC721Metadata contract.
 26176  type IERC721MetadataApproval struct {
 26177  	Owner    common.Address
 26178  	Approved common.Address
 26179  	TokenId  *big.Int
 26180  	Raw      types.Log // Blockchain specific contextual infos
 26181  }
 26182  
 26183  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 26184  //
 26185  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 26186  func (_IERC721Metadata *IERC721MetadataFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*IERC721MetadataApprovalIterator, error) {
 26187  
 26188  	var ownerRule []interface{}
 26189  	for _, ownerItem := range owner {
 26190  		ownerRule = append(ownerRule, ownerItem)
 26191  	}
 26192  	var approvedRule []interface{}
 26193  	for _, approvedItem := range approved {
 26194  		approvedRule = append(approvedRule, approvedItem)
 26195  	}
 26196  	var tokenIdRule []interface{}
 26197  	for _, tokenIdItem := range tokenId {
 26198  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 26199  	}
 26200  
 26201  	logs, sub, err := _IERC721Metadata.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 26202  	if err != nil {
 26203  		return nil, err
 26204  	}
 26205  	return &IERC721MetadataApprovalIterator{contract: _IERC721Metadata.contract, event: "Approval", logs: logs, sub: sub}, nil
 26206  }
 26207  
 26208  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 26209  //
 26210  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 26211  func (_IERC721Metadata *IERC721MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721MetadataApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 26212  
 26213  	var ownerRule []interface{}
 26214  	for _, ownerItem := range owner {
 26215  		ownerRule = append(ownerRule, ownerItem)
 26216  	}
 26217  	var approvedRule []interface{}
 26218  	for _, approvedItem := range approved {
 26219  		approvedRule = append(approvedRule, approvedItem)
 26220  	}
 26221  	var tokenIdRule []interface{}
 26222  	for _, tokenIdItem := range tokenId {
 26223  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 26224  	}
 26225  
 26226  	logs, sub, err := _IERC721Metadata.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 26227  	if err != nil {
 26228  		return nil, err
 26229  	}
 26230  	return event.NewSubscription(func(quit <-chan struct{}) error {
 26231  		defer sub.Unsubscribe()
 26232  		for {
 26233  			select {
 26234  			case log := <-logs:
 26235  				// New log arrived, parse the event and forward to the user
 26236  				event := new(IERC721MetadataApproval)
 26237  				if err := _IERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil {
 26238  					return err
 26239  				}
 26240  				event.Raw = log
 26241  
 26242  				select {
 26243  				case sink <- event:
 26244  				case err := <-sub.Err():
 26245  					return err
 26246  				case <-quit:
 26247  					return nil
 26248  				}
 26249  			case err := <-sub.Err():
 26250  				return err
 26251  			case <-quit:
 26252  				return nil
 26253  			}
 26254  		}
 26255  	}), nil
 26256  }
 26257  
 26258  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 26259  //
 26260  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 26261  func (_IERC721Metadata *IERC721MetadataFilterer) ParseApproval(log types.Log) (*IERC721MetadataApproval, error) {
 26262  	event := new(IERC721MetadataApproval)
 26263  	if err := _IERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil {
 26264  		return nil, err
 26265  	}
 26266  	return event, nil
 26267  }
 26268  
 26269  // IERC721MetadataApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the IERC721Metadata contract.
 26270  type IERC721MetadataApprovalForAllIterator struct {
 26271  	Event *IERC721MetadataApprovalForAll // Event containing the contract specifics and raw log
 26272  
 26273  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 26274  	event    string              // Event name to use for unpacking event data
 26275  
 26276  	logs chan types.Log      // Log channel receiving the found contract events
 26277  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 26278  	done bool                // Whether the subscription completed delivering logs
 26279  	fail error               // Occurred error to stop iteration
 26280  }
 26281  
 26282  // Next advances the iterator to the subsequent event, returning whether there
 26283  // are any more events found. In case of a retrieval or parsing error, false is
 26284  // returned and Error() can be queried for the exact failure.
 26285  func (it *IERC721MetadataApprovalForAllIterator) Next() bool {
 26286  	// If the iterator failed, stop iterating
 26287  	if it.fail != nil {
 26288  		return false
 26289  	}
 26290  	// If the iterator completed, deliver directly whatever's available
 26291  	if it.done {
 26292  		select {
 26293  		case log := <-it.logs:
 26294  			it.Event = new(IERC721MetadataApprovalForAll)
 26295  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 26296  				it.fail = err
 26297  				return false
 26298  			}
 26299  			it.Event.Raw = log
 26300  			return true
 26301  
 26302  		default:
 26303  			return false
 26304  		}
 26305  	}
 26306  	// Iterator still in progress, wait for either a data or an error event
 26307  	select {
 26308  	case log := <-it.logs:
 26309  		it.Event = new(IERC721MetadataApprovalForAll)
 26310  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 26311  			it.fail = err
 26312  			return false
 26313  		}
 26314  		it.Event.Raw = log
 26315  		return true
 26316  
 26317  	case err := <-it.sub.Err():
 26318  		it.done = true
 26319  		it.fail = err
 26320  		return it.Next()
 26321  	}
 26322  }
 26323  
 26324  // Error returns any retrieval or parsing error occurred during filtering.
 26325  func (it *IERC721MetadataApprovalForAllIterator) Error() error {
 26326  	return it.fail
 26327  }
 26328  
 26329  // Close terminates the iteration process, releasing any pending underlying
 26330  // resources.
 26331  func (it *IERC721MetadataApprovalForAllIterator) Close() error {
 26332  	it.sub.Unsubscribe()
 26333  	return nil
 26334  }
 26335  
 26336  // IERC721MetadataApprovalForAll represents a ApprovalForAll event raised by the IERC721Metadata contract.
 26337  type IERC721MetadataApprovalForAll struct {
 26338  	Owner    common.Address
 26339  	Operator common.Address
 26340  	Approved bool
 26341  	Raw      types.Log // Blockchain specific contextual infos
 26342  }
 26343  
 26344  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 26345  //
 26346  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 26347  func (_IERC721Metadata *IERC721MetadataFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*IERC721MetadataApprovalForAllIterator, error) {
 26348  
 26349  	var ownerRule []interface{}
 26350  	for _, ownerItem := range owner {
 26351  		ownerRule = append(ownerRule, ownerItem)
 26352  	}
 26353  	var operatorRule []interface{}
 26354  	for _, operatorItem := range operator {
 26355  		operatorRule = append(operatorRule, operatorItem)
 26356  	}
 26357  
 26358  	logs, sub, err := _IERC721Metadata.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 26359  	if err != nil {
 26360  		return nil, err
 26361  	}
 26362  	return &IERC721MetadataApprovalForAllIterator{contract: _IERC721Metadata.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
 26363  }
 26364  
 26365  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 26366  //
 26367  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 26368  func (_IERC721Metadata *IERC721MetadataFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721MetadataApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
 26369  
 26370  	var ownerRule []interface{}
 26371  	for _, ownerItem := range owner {
 26372  		ownerRule = append(ownerRule, ownerItem)
 26373  	}
 26374  	var operatorRule []interface{}
 26375  	for _, operatorItem := range operator {
 26376  		operatorRule = append(operatorRule, operatorItem)
 26377  	}
 26378  
 26379  	logs, sub, err := _IERC721Metadata.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 26380  	if err != nil {
 26381  		return nil, err
 26382  	}
 26383  	return event.NewSubscription(func(quit <-chan struct{}) error {
 26384  		defer sub.Unsubscribe()
 26385  		for {
 26386  			select {
 26387  			case log := <-logs:
 26388  				// New log arrived, parse the event and forward to the user
 26389  				event := new(IERC721MetadataApprovalForAll)
 26390  				if err := _IERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 26391  					return err
 26392  				}
 26393  				event.Raw = log
 26394  
 26395  				select {
 26396  				case sink <- event:
 26397  				case err := <-sub.Err():
 26398  					return err
 26399  				case <-quit:
 26400  					return nil
 26401  				}
 26402  			case err := <-sub.Err():
 26403  				return err
 26404  			case <-quit:
 26405  				return nil
 26406  			}
 26407  		}
 26408  	}), nil
 26409  }
 26410  
 26411  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 26412  //
 26413  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 26414  func (_IERC721Metadata *IERC721MetadataFilterer) ParseApprovalForAll(log types.Log) (*IERC721MetadataApprovalForAll, error) {
 26415  	event := new(IERC721MetadataApprovalForAll)
 26416  	if err := _IERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 26417  		return nil, err
 26418  	}
 26419  	return event, nil
 26420  }
 26421  
 26422  // IERC721MetadataTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC721Metadata contract.
 26423  type IERC721MetadataTransferIterator struct {
 26424  	Event *IERC721MetadataTransfer // Event containing the contract specifics and raw log
 26425  
 26426  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 26427  	event    string              // Event name to use for unpacking event data
 26428  
 26429  	logs chan types.Log      // Log channel receiving the found contract events
 26430  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 26431  	done bool                // Whether the subscription completed delivering logs
 26432  	fail error               // Occurred error to stop iteration
 26433  }
 26434  
 26435  // Next advances the iterator to the subsequent event, returning whether there
 26436  // are any more events found. In case of a retrieval or parsing error, false is
 26437  // returned and Error() can be queried for the exact failure.
 26438  func (it *IERC721MetadataTransferIterator) Next() bool {
 26439  	// If the iterator failed, stop iterating
 26440  	if it.fail != nil {
 26441  		return false
 26442  	}
 26443  	// If the iterator completed, deliver directly whatever's available
 26444  	if it.done {
 26445  		select {
 26446  		case log := <-it.logs:
 26447  			it.Event = new(IERC721MetadataTransfer)
 26448  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 26449  				it.fail = err
 26450  				return false
 26451  			}
 26452  			it.Event.Raw = log
 26453  			return true
 26454  
 26455  		default:
 26456  			return false
 26457  		}
 26458  	}
 26459  	// Iterator still in progress, wait for either a data or an error event
 26460  	select {
 26461  	case log := <-it.logs:
 26462  		it.Event = new(IERC721MetadataTransfer)
 26463  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 26464  			it.fail = err
 26465  			return false
 26466  		}
 26467  		it.Event.Raw = log
 26468  		return true
 26469  
 26470  	case err := <-it.sub.Err():
 26471  		it.done = true
 26472  		it.fail = err
 26473  		return it.Next()
 26474  	}
 26475  }
 26476  
 26477  // Error returns any retrieval or parsing error occurred during filtering.
 26478  func (it *IERC721MetadataTransferIterator) Error() error {
 26479  	return it.fail
 26480  }
 26481  
 26482  // Close terminates the iteration process, releasing any pending underlying
 26483  // resources.
 26484  func (it *IERC721MetadataTransferIterator) Close() error {
 26485  	it.sub.Unsubscribe()
 26486  	return nil
 26487  }
 26488  
 26489  // IERC721MetadataTransfer represents a Transfer event raised by the IERC721Metadata contract.
 26490  type IERC721MetadataTransfer struct {
 26491  	From    common.Address
 26492  	To      common.Address
 26493  	TokenId *big.Int
 26494  	Raw     types.Log // Blockchain specific contextual infos
 26495  }
 26496  
 26497  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 26498  //
 26499  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 26500  func (_IERC721Metadata *IERC721MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*IERC721MetadataTransferIterator, error) {
 26501  
 26502  	var fromRule []interface{}
 26503  	for _, fromItem := range from {
 26504  		fromRule = append(fromRule, fromItem)
 26505  	}
 26506  	var toRule []interface{}
 26507  	for _, toItem := range to {
 26508  		toRule = append(toRule, toItem)
 26509  	}
 26510  	var tokenIdRule []interface{}
 26511  	for _, tokenIdItem := range tokenId {
 26512  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 26513  	}
 26514  
 26515  	logs, sub, err := _IERC721Metadata.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 26516  	if err != nil {
 26517  		return nil, err
 26518  	}
 26519  	return &IERC721MetadataTransferIterator{contract: _IERC721Metadata.contract, event: "Transfer", logs: logs, sub: sub}, nil
 26520  }
 26521  
 26522  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 26523  //
 26524  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 26525  func (_IERC721Metadata *IERC721MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721MetadataTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 26526  
 26527  	var fromRule []interface{}
 26528  	for _, fromItem := range from {
 26529  		fromRule = append(fromRule, fromItem)
 26530  	}
 26531  	var toRule []interface{}
 26532  	for _, toItem := range to {
 26533  		toRule = append(toRule, toItem)
 26534  	}
 26535  	var tokenIdRule []interface{}
 26536  	for _, tokenIdItem := range tokenId {
 26537  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 26538  	}
 26539  
 26540  	logs, sub, err := _IERC721Metadata.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 26541  	if err != nil {
 26542  		return nil, err
 26543  	}
 26544  	return event.NewSubscription(func(quit <-chan struct{}) error {
 26545  		defer sub.Unsubscribe()
 26546  		for {
 26547  			select {
 26548  			case log := <-logs:
 26549  				// New log arrived, parse the event and forward to the user
 26550  				event := new(IERC721MetadataTransfer)
 26551  				if err := _IERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil {
 26552  					return err
 26553  				}
 26554  				event.Raw = log
 26555  
 26556  				select {
 26557  				case sink <- event:
 26558  				case err := <-sub.Err():
 26559  					return err
 26560  				case <-quit:
 26561  					return nil
 26562  				}
 26563  			case err := <-sub.Err():
 26564  				return err
 26565  			case <-quit:
 26566  				return nil
 26567  			}
 26568  		}
 26569  	}), nil
 26570  }
 26571  
 26572  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 26573  //
 26574  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 26575  func (_IERC721Metadata *IERC721MetadataFilterer) ParseTransfer(log types.Log) (*IERC721MetadataTransfer, error) {
 26576  	event := new(IERC721MetadataTransfer)
 26577  	if err := _IERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil {
 26578  		return nil, err
 26579  	}
 26580  	return event, nil
 26581  }
 26582  
 26583  // IERC721ReceiverABI is the input ABI used to generate the binding from.
 26584  const IERC721ReceiverABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"operator\",\"type\":\"address\"},{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
 26585  
 26586  // IERC721ReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 26587  const IERC721ReceiverBinRuntime = ``
 26588  
 26589  // IERC721ReceiverFuncSigs maps the 4-byte function signature to its string representation.
 26590  var IERC721ReceiverFuncSigs = map[string]string{
 26591  	"150b7a02": "onERC721Received(address,address,uint256,bytes)",
 26592  }
 26593  
 26594  // IERC721Receiver is an auto generated Go binding around a Klaytn contract.
 26595  type IERC721Receiver struct {
 26596  	IERC721ReceiverCaller     // Read-only binding to the contract
 26597  	IERC721ReceiverTransactor // Write-only binding to the contract
 26598  	IERC721ReceiverFilterer   // Log filterer for contract events
 26599  }
 26600  
 26601  // IERC721ReceiverCaller is an auto generated read-only Go binding around a Klaytn contract.
 26602  type IERC721ReceiverCaller struct {
 26603  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 26604  }
 26605  
 26606  // IERC721ReceiverTransactor is an auto generated write-only Go binding around a Klaytn contract.
 26607  type IERC721ReceiverTransactor struct {
 26608  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 26609  }
 26610  
 26611  // IERC721ReceiverFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 26612  type IERC721ReceiverFilterer struct {
 26613  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 26614  }
 26615  
 26616  // IERC721ReceiverSession is an auto generated Go binding around a Klaytn contract,
 26617  // with pre-set call and transact options.
 26618  type IERC721ReceiverSession struct {
 26619  	Contract     *IERC721Receiver  // Generic contract binding to set the session for
 26620  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 26621  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 26622  }
 26623  
 26624  // IERC721ReceiverCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 26625  // with pre-set call options.
 26626  type IERC721ReceiverCallerSession struct {
 26627  	Contract *IERC721ReceiverCaller // Generic contract caller binding to set the session for
 26628  	CallOpts bind.CallOpts          // Call options to use throughout this session
 26629  }
 26630  
 26631  // IERC721ReceiverTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 26632  // with pre-set transact options.
 26633  type IERC721ReceiverTransactorSession struct {
 26634  	Contract     *IERC721ReceiverTransactor // Generic contract transactor binding to set the session for
 26635  	TransactOpts bind.TransactOpts          // Transaction auth options to use throughout this session
 26636  }
 26637  
 26638  // IERC721ReceiverRaw is an auto generated low-level Go binding around a Klaytn contract.
 26639  type IERC721ReceiverRaw struct {
 26640  	Contract *IERC721Receiver // Generic contract binding to access the raw methods on
 26641  }
 26642  
 26643  // IERC721ReceiverCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 26644  type IERC721ReceiverCallerRaw struct {
 26645  	Contract *IERC721ReceiverCaller // Generic read-only contract binding to access the raw methods on
 26646  }
 26647  
 26648  // IERC721ReceiverTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 26649  type IERC721ReceiverTransactorRaw struct {
 26650  	Contract *IERC721ReceiverTransactor // Generic write-only contract binding to access the raw methods on
 26651  }
 26652  
 26653  // NewIERC721Receiver creates a new instance of IERC721Receiver, bound to a specific deployed contract.
 26654  func NewIERC721Receiver(address common.Address, backend bind.ContractBackend) (*IERC721Receiver, error) {
 26655  	contract, err := bindIERC721Receiver(address, backend, backend, backend)
 26656  	if err != nil {
 26657  		return nil, err
 26658  	}
 26659  	return &IERC721Receiver{IERC721ReceiverCaller: IERC721ReceiverCaller{contract: contract}, IERC721ReceiverTransactor: IERC721ReceiverTransactor{contract: contract}, IERC721ReceiverFilterer: IERC721ReceiverFilterer{contract: contract}}, nil
 26660  }
 26661  
 26662  // NewIERC721ReceiverCaller creates a new read-only instance of IERC721Receiver, bound to a specific deployed contract.
 26663  func NewIERC721ReceiverCaller(address common.Address, caller bind.ContractCaller) (*IERC721ReceiverCaller, error) {
 26664  	contract, err := bindIERC721Receiver(address, caller, nil, nil)
 26665  	if err != nil {
 26666  		return nil, err
 26667  	}
 26668  	return &IERC721ReceiverCaller{contract: contract}, nil
 26669  }
 26670  
 26671  // NewIERC721ReceiverTransactor creates a new write-only instance of IERC721Receiver, bound to a specific deployed contract.
 26672  func NewIERC721ReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721ReceiverTransactor, error) {
 26673  	contract, err := bindIERC721Receiver(address, nil, transactor, nil)
 26674  	if err != nil {
 26675  		return nil, err
 26676  	}
 26677  	return &IERC721ReceiverTransactor{contract: contract}, nil
 26678  }
 26679  
 26680  // NewIERC721ReceiverFilterer creates a new log filterer instance of IERC721Receiver, bound to a specific deployed contract.
 26681  func NewIERC721ReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721ReceiverFilterer, error) {
 26682  	contract, err := bindIERC721Receiver(address, nil, nil, filterer)
 26683  	if err != nil {
 26684  		return nil, err
 26685  	}
 26686  	return &IERC721ReceiverFilterer{contract: contract}, nil
 26687  }
 26688  
 26689  // bindIERC721Receiver binds a generic wrapper to an already deployed contract.
 26690  func bindIERC721Receiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 26691  	parsed, err := abi.JSON(strings.NewReader(IERC721ReceiverABI))
 26692  	if err != nil {
 26693  		return nil, err
 26694  	}
 26695  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 26696  }
 26697  
 26698  // Call invokes the (constant) contract method with params as input values and
 26699  // sets the output to result. The result type might be a single field for simple
 26700  // returns, a slice of interfaces for anonymous returns and a struct for named
 26701  // returns.
 26702  func (_IERC721Receiver *IERC721ReceiverRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 26703  	return _IERC721Receiver.Contract.IERC721ReceiverCaller.contract.Call(opts, result, method, params...)
 26704  }
 26705  
 26706  // Transfer initiates a plain transaction to move funds to the contract, calling
 26707  // its default method if one is available.
 26708  func (_IERC721Receiver *IERC721ReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 26709  	return _IERC721Receiver.Contract.IERC721ReceiverTransactor.contract.Transfer(opts)
 26710  }
 26711  
 26712  // Transact invokes the (paid) contract method with params as input values.
 26713  func (_IERC721Receiver *IERC721ReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 26714  	return _IERC721Receiver.Contract.IERC721ReceiverTransactor.contract.Transact(opts, method, params...)
 26715  }
 26716  
 26717  // Call invokes the (constant) contract method with params as input values and
 26718  // sets the output to result. The result type might be a single field for simple
 26719  // returns, a slice of interfaces for anonymous returns and a struct for named
 26720  // returns.
 26721  func (_IERC721Receiver *IERC721ReceiverCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 26722  	return _IERC721Receiver.Contract.contract.Call(opts, result, method, params...)
 26723  }
 26724  
 26725  // Transfer initiates a plain transaction to move funds to the contract, calling
 26726  // its default method if one is available.
 26727  func (_IERC721Receiver *IERC721ReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 26728  	return _IERC721Receiver.Contract.contract.Transfer(opts)
 26729  }
 26730  
 26731  // Transact invokes the (paid) contract method with params as input values.
 26732  func (_IERC721Receiver *IERC721ReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 26733  	return _IERC721Receiver.Contract.contract.Transact(opts, method, params...)
 26734  }
 26735  
 26736  // OnERC721Received is a paid mutator transaction binding the contract method 0x150b7a02.
 26737  //
 26738  // Solidity: function onERC721Received(address operator, address from, uint256 tokenId, bytes data) returns(bytes4)
 26739  func (_IERC721Receiver *IERC721ReceiverTransactor) OnERC721Received(opts *bind.TransactOpts, operator common.Address, from common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 26740  	return _IERC721Receiver.contract.Transact(opts, "onERC721Received", operator, from, tokenId, data)
 26741  }
 26742  
 26743  // OnERC721Received is a paid mutator transaction binding the contract method 0x150b7a02.
 26744  //
 26745  // Solidity: function onERC721Received(address operator, address from, uint256 tokenId, bytes data) returns(bytes4)
 26746  func (_IERC721Receiver *IERC721ReceiverSession) OnERC721Received(operator common.Address, from common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 26747  	return _IERC721Receiver.Contract.OnERC721Received(&_IERC721Receiver.TransactOpts, operator, from, tokenId, data)
 26748  }
 26749  
 26750  // OnERC721Received is a paid mutator transaction binding the contract method 0x150b7a02.
 26751  //
 26752  // Solidity: function onERC721Received(address operator, address from, uint256 tokenId, bytes data) returns(bytes4)
 26753  func (_IERC721Receiver *IERC721ReceiverTransactorSession) OnERC721Received(operator common.Address, from common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 26754  	return _IERC721Receiver.Contract.OnERC721Received(&_IERC721Receiver.TransactOpts, operator, from, tokenId, data)
 26755  }
 26756  
 26757  // MinterRoleABI is the input ABI used to generate the binding from.
 26758  const MinterRoleABI = "[{\"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\"}]"
 26759  
 26760  // MinterRoleBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 26761  const MinterRoleBinRuntime = ``
 26762  
 26763  // MinterRoleFuncSigs maps the 4-byte function signature to its string representation.
 26764  var MinterRoleFuncSigs = map[string]string{
 26765  	"983b2d56": "addMinter(address)",
 26766  	"aa271e1a": "isMinter(address)",
 26767  	"98650275": "renounceMinter()",
 26768  }
 26769  
 26770  // MinterRole is an auto generated Go binding around a Klaytn contract.
 26771  type MinterRole struct {
 26772  	MinterRoleCaller     // Read-only binding to the contract
 26773  	MinterRoleTransactor // Write-only binding to the contract
 26774  	MinterRoleFilterer   // Log filterer for contract events
 26775  }
 26776  
 26777  // MinterRoleCaller is an auto generated read-only Go binding around a Klaytn contract.
 26778  type MinterRoleCaller struct {
 26779  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 26780  }
 26781  
 26782  // MinterRoleTransactor is an auto generated write-only Go binding around a Klaytn contract.
 26783  type MinterRoleTransactor struct {
 26784  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 26785  }
 26786  
 26787  // MinterRoleFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 26788  type MinterRoleFilterer struct {
 26789  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 26790  }
 26791  
 26792  // MinterRoleSession is an auto generated Go binding around a Klaytn contract,
 26793  // with pre-set call and transact options.
 26794  type MinterRoleSession struct {
 26795  	Contract     *MinterRole       // Generic contract binding to set the session for
 26796  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 26797  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 26798  }
 26799  
 26800  // MinterRoleCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 26801  // with pre-set call options.
 26802  type MinterRoleCallerSession struct {
 26803  	Contract *MinterRoleCaller // Generic contract caller binding to set the session for
 26804  	CallOpts bind.CallOpts     // Call options to use throughout this session
 26805  }
 26806  
 26807  // MinterRoleTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 26808  // with pre-set transact options.
 26809  type MinterRoleTransactorSession struct {
 26810  	Contract     *MinterRoleTransactor // Generic contract transactor binding to set the session for
 26811  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
 26812  }
 26813  
 26814  // MinterRoleRaw is an auto generated low-level Go binding around a Klaytn contract.
 26815  type MinterRoleRaw struct {
 26816  	Contract *MinterRole // Generic contract binding to access the raw methods on
 26817  }
 26818  
 26819  // MinterRoleCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 26820  type MinterRoleCallerRaw struct {
 26821  	Contract *MinterRoleCaller // Generic read-only contract binding to access the raw methods on
 26822  }
 26823  
 26824  // MinterRoleTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 26825  type MinterRoleTransactorRaw struct {
 26826  	Contract *MinterRoleTransactor // Generic write-only contract binding to access the raw methods on
 26827  }
 26828  
 26829  // NewMinterRole creates a new instance of MinterRole, bound to a specific deployed contract.
 26830  func NewMinterRole(address common.Address, backend bind.ContractBackend) (*MinterRole, error) {
 26831  	contract, err := bindMinterRole(address, backend, backend, backend)
 26832  	if err != nil {
 26833  		return nil, err
 26834  	}
 26835  	return &MinterRole{MinterRoleCaller: MinterRoleCaller{contract: contract}, MinterRoleTransactor: MinterRoleTransactor{contract: contract}, MinterRoleFilterer: MinterRoleFilterer{contract: contract}}, nil
 26836  }
 26837  
 26838  // NewMinterRoleCaller creates a new read-only instance of MinterRole, bound to a specific deployed contract.
 26839  func NewMinterRoleCaller(address common.Address, caller bind.ContractCaller) (*MinterRoleCaller, error) {
 26840  	contract, err := bindMinterRole(address, caller, nil, nil)
 26841  	if err != nil {
 26842  		return nil, err
 26843  	}
 26844  	return &MinterRoleCaller{contract: contract}, nil
 26845  }
 26846  
 26847  // NewMinterRoleTransactor creates a new write-only instance of MinterRole, bound to a specific deployed contract.
 26848  func NewMinterRoleTransactor(address common.Address, transactor bind.ContractTransactor) (*MinterRoleTransactor, error) {
 26849  	contract, err := bindMinterRole(address, nil, transactor, nil)
 26850  	if err != nil {
 26851  		return nil, err
 26852  	}
 26853  	return &MinterRoleTransactor{contract: contract}, nil
 26854  }
 26855  
 26856  // NewMinterRoleFilterer creates a new log filterer instance of MinterRole, bound to a specific deployed contract.
 26857  func NewMinterRoleFilterer(address common.Address, filterer bind.ContractFilterer) (*MinterRoleFilterer, error) {
 26858  	contract, err := bindMinterRole(address, nil, nil, filterer)
 26859  	if err != nil {
 26860  		return nil, err
 26861  	}
 26862  	return &MinterRoleFilterer{contract: contract}, nil
 26863  }
 26864  
 26865  // bindMinterRole binds a generic wrapper to an already deployed contract.
 26866  func bindMinterRole(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 26867  	parsed, err := abi.JSON(strings.NewReader(MinterRoleABI))
 26868  	if err != nil {
 26869  		return nil, err
 26870  	}
 26871  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 26872  }
 26873  
 26874  // Call invokes the (constant) contract method with params as input values and
 26875  // sets the output to result. The result type might be a single field for simple
 26876  // returns, a slice of interfaces for anonymous returns and a struct for named
 26877  // returns.
 26878  func (_MinterRole *MinterRoleRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 26879  	return _MinterRole.Contract.MinterRoleCaller.contract.Call(opts, result, method, params...)
 26880  }
 26881  
 26882  // Transfer initiates a plain transaction to move funds to the contract, calling
 26883  // its default method if one is available.
 26884  func (_MinterRole *MinterRoleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 26885  	return _MinterRole.Contract.MinterRoleTransactor.contract.Transfer(opts)
 26886  }
 26887  
 26888  // Transact invokes the (paid) contract method with params as input values.
 26889  func (_MinterRole *MinterRoleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 26890  	return _MinterRole.Contract.MinterRoleTransactor.contract.Transact(opts, method, params...)
 26891  }
 26892  
 26893  // Call invokes the (constant) contract method with params as input values and
 26894  // sets the output to result. The result type might be a single field for simple
 26895  // returns, a slice of interfaces for anonymous returns and a struct for named
 26896  // returns.
 26897  func (_MinterRole *MinterRoleCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 26898  	return _MinterRole.Contract.contract.Call(opts, result, method, params...)
 26899  }
 26900  
 26901  // Transfer initiates a plain transaction to move funds to the contract, calling
 26902  // its default method if one is available.
 26903  func (_MinterRole *MinterRoleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 26904  	return _MinterRole.Contract.contract.Transfer(opts)
 26905  }
 26906  
 26907  // Transact invokes the (paid) contract method with params as input values.
 26908  func (_MinterRole *MinterRoleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 26909  	return _MinterRole.Contract.contract.Transact(opts, method, params...)
 26910  }
 26911  
 26912  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 26913  //
 26914  // Solidity: function isMinter(address account) view returns(bool)
 26915  func (_MinterRole *MinterRoleCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
 26916  	var (
 26917  		ret0 = new(bool)
 26918  	)
 26919  	out := ret0
 26920  	err := _MinterRole.contract.Call(opts, out, "isMinter", account)
 26921  	return *ret0, err
 26922  }
 26923  
 26924  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 26925  //
 26926  // Solidity: function isMinter(address account) view returns(bool)
 26927  func (_MinterRole *MinterRoleSession) IsMinter(account common.Address) (bool, error) {
 26928  	return _MinterRole.Contract.IsMinter(&_MinterRole.CallOpts, account)
 26929  }
 26930  
 26931  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 26932  //
 26933  // Solidity: function isMinter(address account) view returns(bool)
 26934  func (_MinterRole *MinterRoleCallerSession) IsMinter(account common.Address) (bool, error) {
 26935  	return _MinterRole.Contract.IsMinter(&_MinterRole.CallOpts, account)
 26936  }
 26937  
 26938  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 26939  //
 26940  // Solidity: function addMinter(address account) returns()
 26941  func (_MinterRole *MinterRoleTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
 26942  	return _MinterRole.contract.Transact(opts, "addMinter", account)
 26943  }
 26944  
 26945  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 26946  //
 26947  // Solidity: function addMinter(address account) returns()
 26948  func (_MinterRole *MinterRoleSession) AddMinter(account common.Address) (*types.Transaction, error) {
 26949  	return _MinterRole.Contract.AddMinter(&_MinterRole.TransactOpts, account)
 26950  }
 26951  
 26952  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 26953  //
 26954  // Solidity: function addMinter(address account) returns()
 26955  func (_MinterRole *MinterRoleTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
 26956  	return _MinterRole.Contract.AddMinter(&_MinterRole.TransactOpts, account)
 26957  }
 26958  
 26959  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 26960  //
 26961  // Solidity: function renounceMinter() returns()
 26962  func (_MinterRole *MinterRoleTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
 26963  	return _MinterRole.contract.Transact(opts, "renounceMinter")
 26964  }
 26965  
 26966  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 26967  //
 26968  // Solidity: function renounceMinter() returns()
 26969  func (_MinterRole *MinterRoleSession) RenounceMinter() (*types.Transaction, error) {
 26970  	return _MinterRole.Contract.RenounceMinter(&_MinterRole.TransactOpts)
 26971  }
 26972  
 26973  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 26974  //
 26975  // Solidity: function renounceMinter() returns()
 26976  func (_MinterRole *MinterRoleTransactorSession) RenounceMinter() (*types.Transaction, error) {
 26977  	return _MinterRole.Contract.RenounceMinter(&_MinterRole.TransactOpts)
 26978  }
 26979  
 26980  // 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.
 26981  type MinterRoleMinterAddedIterator struct {
 26982  	Event *MinterRoleMinterAdded // Event containing the contract specifics and raw log
 26983  
 26984  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 26985  	event    string              // Event name to use for unpacking event data
 26986  
 26987  	logs chan types.Log      // Log channel receiving the found contract events
 26988  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 26989  	done bool                // Whether the subscription completed delivering logs
 26990  	fail error               // Occurred error to stop iteration
 26991  }
 26992  
 26993  // Next advances the iterator to the subsequent event, returning whether there
 26994  // are any more events found. In case of a retrieval or parsing error, false is
 26995  // returned and Error() can be queried for the exact failure.
 26996  func (it *MinterRoleMinterAddedIterator) Next() bool {
 26997  	// If the iterator failed, stop iterating
 26998  	if it.fail != nil {
 26999  		return false
 27000  	}
 27001  	// If the iterator completed, deliver directly whatever's available
 27002  	if it.done {
 27003  		select {
 27004  		case log := <-it.logs:
 27005  			it.Event = new(MinterRoleMinterAdded)
 27006  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 27007  				it.fail = err
 27008  				return false
 27009  			}
 27010  			it.Event.Raw = log
 27011  			return true
 27012  
 27013  		default:
 27014  			return false
 27015  		}
 27016  	}
 27017  	// Iterator still in progress, wait for either a data or an error event
 27018  	select {
 27019  	case log := <-it.logs:
 27020  		it.Event = new(MinterRoleMinterAdded)
 27021  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 27022  			it.fail = err
 27023  			return false
 27024  		}
 27025  		it.Event.Raw = log
 27026  		return true
 27027  
 27028  	case err := <-it.sub.Err():
 27029  		it.done = true
 27030  		it.fail = err
 27031  		return it.Next()
 27032  	}
 27033  }
 27034  
 27035  // Error returns any retrieval or parsing error occurred during filtering.
 27036  func (it *MinterRoleMinterAddedIterator) Error() error {
 27037  	return it.fail
 27038  }
 27039  
 27040  // Close terminates the iteration process, releasing any pending underlying
 27041  // resources.
 27042  func (it *MinterRoleMinterAddedIterator) Close() error {
 27043  	it.sub.Unsubscribe()
 27044  	return nil
 27045  }
 27046  
 27047  // MinterRoleMinterAdded represents a MinterAdded event raised by the MinterRole contract.
 27048  type MinterRoleMinterAdded struct {
 27049  	Account common.Address
 27050  	Raw     types.Log // Blockchain specific contextual infos
 27051  }
 27052  
 27053  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 27054  //
 27055  // Solidity: event MinterAdded(address indexed account)
 27056  func (_MinterRole *MinterRoleFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterAddedIterator, error) {
 27057  
 27058  	var accountRule []interface{}
 27059  	for _, accountItem := range account {
 27060  		accountRule = append(accountRule, accountItem)
 27061  	}
 27062  
 27063  	logs, sub, err := _MinterRole.contract.FilterLogs(opts, "MinterAdded", accountRule)
 27064  	if err != nil {
 27065  		return nil, err
 27066  	}
 27067  	return &MinterRoleMinterAddedIterator{contract: _MinterRole.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
 27068  }
 27069  
 27070  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 27071  //
 27072  // Solidity: event MinterAdded(address indexed account)
 27073  func (_MinterRole *MinterRoleFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterAdded, account []common.Address) (event.Subscription, error) {
 27074  
 27075  	var accountRule []interface{}
 27076  	for _, accountItem := range account {
 27077  		accountRule = append(accountRule, accountItem)
 27078  	}
 27079  
 27080  	logs, sub, err := _MinterRole.contract.WatchLogs(opts, "MinterAdded", accountRule)
 27081  	if err != nil {
 27082  		return nil, err
 27083  	}
 27084  	return event.NewSubscription(func(quit <-chan struct{}) error {
 27085  		defer sub.Unsubscribe()
 27086  		for {
 27087  			select {
 27088  			case log := <-logs:
 27089  				// New log arrived, parse the event and forward to the user
 27090  				event := new(MinterRoleMinterAdded)
 27091  				if err := _MinterRole.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 27092  					return err
 27093  				}
 27094  				event.Raw = log
 27095  
 27096  				select {
 27097  				case sink <- event:
 27098  				case err := <-sub.Err():
 27099  					return err
 27100  				case <-quit:
 27101  					return nil
 27102  				}
 27103  			case err := <-sub.Err():
 27104  				return err
 27105  			case <-quit:
 27106  				return nil
 27107  			}
 27108  		}
 27109  	}), nil
 27110  }
 27111  
 27112  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 27113  //
 27114  // Solidity: event MinterAdded(address indexed account)
 27115  func (_MinterRole *MinterRoleFilterer) ParseMinterAdded(log types.Log) (*MinterRoleMinterAdded, error) {
 27116  	event := new(MinterRoleMinterAdded)
 27117  	if err := _MinterRole.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 27118  		return nil, err
 27119  	}
 27120  	return event, nil
 27121  }
 27122  
 27123  // 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.
 27124  type MinterRoleMinterRemovedIterator struct {
 27125  	Event *MinterRoleMinterRemoved // Event containing the contract specifics and raw log
 27126  
 27127  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 27128  	event    string              // Event name to use for unpacking event data
 27129  
 27130  	logs chan types.Log      // Log channel receiving the found contract events
 27131  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 27132  	done bool                // Whether the subscription completed delivering logs
 27133  	fail error               // Occurred error to stop iteration
 27134  }
 27135  
 27136  // Next advances the iterator to the subsequent event, returning whether there
 27137  // are any more events found. In case of a retrieval or parsing error, false is
 27138  // returned and Error() can be queried for the exact failure.
 27139  func (it *MinterRoleMinterRemovedIterator) Next() bool {
 27140  	// If the iterator failed, stop iterating
 27141  	if it.fail != nil {
 27142  		return false
 27143  	}
 27144  	// If the iterator completed, deliver directly whatever's available
 27145  	if it.done {
 27146  		select {
 27147  		case log := <-it.logs:
 27148  			it.Event = new(MinterRoleMinterRemoved)
 27149  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 27150  				it.fail = err
 27151  				return false
 27152  			}
 27153  			it.Event.Raw = log
 27154  			return true
 27155  
 27156  		default:
 27157  			return false
 27158  		}
 27159  	}
 27160  	// Iterator still in progress, wait for either a data or an error event
 27161  	select {
 27162  	case log := <-it.logs:
 27163  		it.Event = new(MinterRoleMinterRemoved)
 27164  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 27165  			it.fail = err
 27166  			return false
 27167  		}
 27168  		it.Event.Raw = log
 27169  		return true
 27170  
 27171  	case err := <-it.sub.Err():
 27172  		it.done = true
 27173  		it.fail = err
 27174  		return it.Next()
 27175  	}
 27176  }
 27177  
 27178  // Error returns any retrieval or parsing error occurred during filtering.
 27179  func (it *MinterRoleMinterRemovedIterator) Error() error {
 27180  	return it.fail
 27181  }
 27182  
 27183  // Close terminates the iteration process, releasing any pending underlying
 27184  // resources.
 27185  func (it *MinterRoleMinterRemovedIterator) Close() error {
 27186  	it.sub.Unsubscribe()
 27187  	return nil
 27188  }
 27189  
 27190  // MinterRoleMinterRemoved represents a MinterRemoved event raised by the MinterRole contract.
 27191  type MinterRoleMinterRemoved struct {
 27192  	Account common.Address
 27193  	Raw     types.Log // Blockchain specific contextual infos
 27194  }
 27195  
 27196  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 27197  //
 27198  // Solidity: event MinterRemoved(address indexed account)
 27199  func (_MinterRole *MinterRoleFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterRemovedIterator, error) {
 27200  
 27201  	var accountRule []interface{}
 27202  	for _, accountItem := range account {
 27203  		accountRule = append(accountRule, accountItem)
 27204  	}
 27205  
 27206  	logs, sub, err := _MinterRole.contract.FilterLogs(opts, "MinterRemoved", accountRule)
 27207  	if err != nil {
 27208  		return nil, err
 27209  	}
 27210  	return &MinterRoleMinterRemovedIterator{contract: _MinterRole.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
 27211  }
 27212  
 27213  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 27214  //
 27215  // Solidity: event MinterRemoved(address indexed account)
 27216  func (_MinterRole *MinterRoleFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterRemoved, account []common.Address) (event.Subscription, error) {
 27217  
 27218  	var accountRule []interface{}
 27219  	for _, accountItem := range account {
 27220  		accountRule = append(accountRule, accountItem)
 27221  	}
 27222  
 27223  	logs, sub, err := _MinterRole.contract.WatchLogs(opts, "MinterRemoved", accountRule)
 27224  	if err != nil {
 27225  		return nil, err
 27226  	}
 27227  	return event.NewSubscription(func(quit <-chan struct{}) error {
 27228  		defer sub.Unsubscribe()
 27229  		for {
 27230  			select {
 27231  			case log := <-logs:
 27232  				// New log arrived, parse the event and forward to the user
 27233  				event := new(MinterRoleMinterRemoved)
 27234  				if err := _MinterRole.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 27235  					return err
 27236  				}
 27237  				event.Raw = log
 27238  
 27239  				select {
 27240  				case sink <- event:
 27241  				case err := <-sub.Err():
 27242  					return err
 27243  				case <-quit:
 27244  					return nil
 27245  				}
 27246  			case err := <-sub.Err():
 27247  				return err
 27248  			case <-quit:
 27249  				return nil
 27250  			}
 27251  		}
 27252  	}), nil
 27253  }
 27254  
 27255  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 27256  //
 27257  // Solidity: event MinterRemoved(address indexed account)
 27258  func (_MinterRole *MinterRoleFilterer) ParseMinterRemoved(log types.Log) (*MinterRoleMinterRemoved, error) {
 27259  	event := new(MinterRoleMinterRemoved)
 27260  	if err := _MinterRole.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 27261  		return nil, err
 27262  	}
 27263  	return event, nil
 27264  }
 27265  
 27266  // OwnableABI is the input ABI used to generate the binding from.
 27267  const OwnableABI = "[{\"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\"}]"
 27268  
 27269  // OwnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 27270  const OwnableBinRuntime = ``
 27271  
 27272  // OwnableFuncSigs maps the 4-byte function signature to its string representation.
 27273  var OwnableFuncSigs = map[string]string{
 27274  	"8f32d59b": "isOwner()",
 27275  	"8da5cb5b": "owner()",
 27276  	"715018a6": "renounceOwnership()",
 27277  	"f2fde38b": "transferOwnership(address)",
 27278  }
 27279  
 27280  // Ownable is an auto generated Go binding around a Klaytn contract.
 27281  type Ownable struct {
 27282  	OwnableCaller     // Read-only binding to the contract
 27283  	OwnableTransactor // Write-only binding to the contract
 27284  	OwnableFilterer   // Log filterer for contract events
 27285  }
 27286  
 27287  // OwnableCaller is an auto generated read-only Go binding around a Klaytn contract.
 27288  type OwnableCaller struct {
 27289  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 27290  }
 27291  
 27292  // OwnableTransactor is an auto generated write-only Go binding around a Klaytn contract.
 27293  type OwnableTransactor struct {
 27294  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 27295  }
 27296  
 27297  // OwnableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 27298  type OwnableFilterer struct {
 27299  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 27300  }
 27301  
 27302  // OwnableSession is an auto generated Go binding around a Klaytn contract,
 27303  // with pre-set call and transact options.
 27304  type OwnableSession struct {
 27305  	Contract     *Ownable          // Generic contract binding to set the session for
 27306  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 27307  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 27308  }
 27309  
 27310  // OwnableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 27311  // with pre-set call options.
 27312  type OwnableCallerSession struct {
 27313  	Contract *OwnableCaller // Generic contract caller binding to set the session for
 27314  	CallOpts bind.CallOpts  // Call options to use throughout this session
 27315  }
 27316  
 27317  // OwnableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 27318  // with pre-set transact options.
 27319  type OwnableTransactorSession struct {
 27320  	Contract     *OwnableTransactor // Generic contract transactor binding to set the session for
 27321  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
 27322  }
 27323  
 27324  // OwnableRaw is an auto generated low-level Go binding around a Klaytn contract.
 27325  type OwnableRaw struct {
 27326  	Contract *Ownable // Generic contract binding to access the raw methods on
 27327  }
 27328  
 27329  // OwnableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 27330  type OwnableCallerRaw struct {
 27331  	Contract *OwnableCaller // Generic read-only contract binding to access the raw methods on
 27332  }
 27333  
 27334  // OwnableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 27335  type OwnableTransactorRaw struct {
 27336  	Contract *OwnableTransactor // Generic write-only contract binding to access the raw methods on
 27337  }
 27338  
 27339  // NewOwnable creates a new instance of Ownable, bound to a specific deployed contract.
 27340  func NewOwnable(address common.Address, backend bind.ContractBackend) (*Ownable, error) {
 27341  	contract, err := bindOwnable(address, backend, backend, backend)
 27342  	if err != nil {
 27343  		return nil, err
 27344  	}
 27345  	return &Ownable{OwnableCaller: OwnableCaller{contract: contract}, OwnableTransactor: OwnableTransactor{contract: contract}, OwnableFilterer: OwnableFilterer{contract: contract}}, nil
 27346  }
 27347  
 27348  // NewOwnableCaller creates a new read-only instance of Ownable, bound to a specific deployed contract.
 27349  func NewOwnableCaller(address common.Address, caller bind.ContractCaller) (*OwnableCaller, error) {
 27350  	contract, err := bindOwnable(address, caller, nil, nil)
 27351  	if err != nil {
 27352  		return nil, err
 27353  	}
 27354  	return &OwnableCaller{contract: contract}, nil
 27355  }
 27356  
 27357  // NewOwnableTransactor creates a new write-only instance of Ownable, bound to a specific deployed contract.
 27358  func NewOwnableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableTransactor, error) {
 27359  	contract, err := bindOwnable(address, nil, transactor, nil)
 27360  	if err != nil {
 27361  		return nil, err
 27362  	}
 27363  	return &OwnableTransactor{contract: contract}, nil
 27364  }
 27365  
 27366  // NewOwnableFilterer creates a new log filterer instance of Ownable, bound to a specific deployed contract.
 27367  func NewOwnableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableFilterer, error) {
 27368  	contract, err := bindOwnable(address, nil, nil, filterer)
 27369  	if err != nil {
 27370  		return nil, err
 27371  	}
 27372  	return &OwnableFilterer{contract: contract}, nil
 27373  }
 27374  
 27375  // bindOwnable binds a generic wrapper to an already deployed contract.
 27376  func bindOwnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 27377  	parsed, err := abi.JSON(strings.NewReader(OwnableABI))
 27378  	if err != nil {
 27379  		return nil, err
 27380  	}
 27381  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 27382  }
 27383  
 27384  // Call invokes the (constant) contract method with params as input values and
 27385  // sets the output to result. The result type might be a single field for simple
 27386  // returns, a slice of interfaces for anonymous returns and a struct for named
 27387  // returns.
 27388  func (_Ownable *OwnableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 27389  	return _Ownable.Contract.OwnableCaller.contract.Call(opts, result, method, params...)
 27390  }
 27391  
 27392  // Transfer initiates a plain transaction to move funds to the contract, calling
 27393  // its default method if one is available.
 27394  func (_Ownable *OwnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 27395  	return _Ownable.Contract.OwnableTransactor.contract.Transfer(opts)
 27396  }
 27397  
 27398  // Transact invokes the (paid) contract method with params as input values.
 27399  func (_Ownable *OwnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 27400  	return _Ownable.Contract.OwnableTransactor.contract.Transact(opts, method, params...)
 27401  }
 27402  
 27403  // Call invokes the (constant) contract method with params as input values and
 27404  // sets the output to result. The result type might be a single field for simple
 27405  // returns, a slice of interfaces for anonymous returns and a struct for named
 27406  // returns.
 27407  func (_Ownable *OwnableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 27408  	return _Ownable.Contract.contract.Call(opts, result, method, params...)
 27409  }
 27410  
 27411  // Transfer initiates a plain transaction to move funds to the contract, calling
 27412  // its default method if one is available.
 27413  func (_Ownable *OwnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 27414  	return _Ownable.Contract.contract.Transfer(opts)
 27415  }
 27416  
 27417  // Transact invokes the (paid) contract method with params as input values.
 27418  func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 27419  	return _Ownable.Contract.contract.Transact(opts, method, params...)
 27420  }
 27421  
 27422  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 27423  //
 27424  // Solidity: function isOwner() view returns(bool)
 27425  func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
 27426  	var (
 27427  		ret0 = new(bool)
 27428  	)
 27429  	out := ret0
 27430  	err := _Ownable.contract.Call(opts, out, "isOwner")
 27431  	return *ret0, err
 27432  }
 27433  
 27434  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 27435  //
 27436  // Solidity: function isOwner() view returns(bool)
 27437  func (_Ownable *OwnableSession) IsOwner() (bool, error) {
 27438  	return _Ownable.Contract.IsOwner(&_Ownable.CallOpts)
 27439  }
 27440  
 27441  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 27442  //
 27443  // Solidity: function isOwner() view returns(bool)
 27444  func (_Ownable *OwnableCallerSession) IsOwner() (bool, error) {
 27445  	return _Ownable.Contract.IsOwner(&_Ownable.CallOpts)
 27446  }
 27447  
 27448  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 27449  //
 27450  // Solidity: function owner() view returns(address)
 27451  func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
 27452  	var (
 27453  		ret0 = new(common.Address)
 27454  	)
 27455  	out := ret0
 27456  	err := _Ownable.contract.Call(opts, out, "owner")
 27457  	return *ret0, err
 27458  }
 27459  
 27460  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 27461  //
 27462  // Solidity: function owner() view returns(address)
 27463  func (_Ownable *OwnableSession) Owner() (common.Address, error) {
 27464  	return _Ownable.Contract.Owner(&_Ownable.CallOpts)
 27465  }
 27466  
 27467  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 27468  //
 27469  // Solidity: function owner() view returns(address)
 27470  func (_Ownable *OwnableCallerSession) Owner() (common.Address, error) {
 27471  	return _Ownable.Contract.Owner(&_Ownable.CallOpts)
 27472  }
 27473  
 27474  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 27475  //
 27476  // Solidity: function renounceOwnership() returns()
 27477  func (_Ownable *OwnableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
 27478  	return _Ownable.contract.Transact(opts, "renounceOwnership")
 27479  }
 27480  
 27481  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 27482  //
 27483  // Solidity: function renounceOwnership() returns()
 27484  func (_Ownable *OwnableSession) RenounceOwnership() (*types.Transaction, error) {
 27485  	return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts)
 27486  }
 27487  
 27488  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 27489  //
 27490  // Solidity: function renounceOwnership() returns()
 27491  func (_Ownable *OwnableTransactorSession) RenounceOwnership() (*types.Transaction, error) {
 27492  	return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts)
 27493  }
 27494  
 27495  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 27496  //
 27497  // Solidity: function transferOwnership(address newOwner) returns()
 27498  func (_Ownable *OwnableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
 27499  	return _Ownable.contract.Transact(opts, "transferOwnership", newOwner)
 27500  }
 27501  
 27502  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 27503  //
 27504  // Solidity: function transferOwnership(address newOwner) returns()
 27505  func (_Ownable *OwnableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
 27506  	return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner)
 27507  }
 27508  
 27509  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 27510  //
 27511  // Solidity: function transferOwnership(address newOwner) returns()
 27512  func (_Ownable *OwnableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
 27513  	return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner)
 27514  }
 27515  
 27516  // 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.
 27517  type OwnableOwnershipTransferredIterator struct {
 27518  	Event *OwnableOwnershipTransferred // Event containing the contract specifics and raw log
 27519  
 27520  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 27521  	event    string              // Event name to use for unpacking event data
 27522  
 27523  	logs chan types.Log      // Log channel receiving the found contract events
 27524  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 27525  	done bool                // Whether the subscription completed delivering logs
 27526  	fail error               // Occurred error to stop iteration
 27527  }
 27528  
 27529  // Next advances the iterator to the subsequent event, returning whether there
 27530  // are any more events found. In case of a retrieval or parsing error, false is
 27531  // returned and Error() can be queried for the exact failure.
 27532  func (it *OwnableOwnershipTransferredIterator) Next() bool {
 27533  	// If the iterator failed, stop iterating
 27534  	if it.fail != nil {
 27535  		return false
 27536  	}
 27537  	// If the iterator completed, deliver directly whatever's available
 27538  	if it.done {
 27539  		select {
 27540  		case log := <-it.logs:
 27541  			it.Event = new(OwnableOwnershipTransferred)
 27542  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 27543  				it.fail = err
 27544  				return false
 27545  			}
 27546  			it.Event.Raw = log
 27547  			return true
 27548  
 27549  		default:
 27550  			return false
 27551  		}
 27552  	}
 27553  	// Iterator still in progress, wait for either a data or an error event
 27554  	select {
 27555  	case log := <-it.logs:
 27556  		it.Event = new(OwnableOwnershipTransferred)
 27557  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 27558  			it.fail = err
 27559  			return false
 27560  		}
 27561  		it.Event.Raw = log
 27562  		return true
 27563  
 27564  	case err := <-it.sub.Err():
 27565  		it.done = true
 27566  		it.fail = err
 27567  		return it.Next()
 27568  	}
 27569  }
 27570  
 27571  // Error returns any retrieval or parsing error occurred during filtering.
 27572  func (it *OwnableOwnershipTransferredIterator) Error() error {
 27573  	return it.fail
 27574  }
 27575  
 27576  // Close terminates the iteration process, releasing any pending underlying
 27577  // resources.
 27578  func (it *OwnableOwnershipTransferredIterator) Close() error {
 27579  	it.sub.Unsubscribe()
 27580  	return nil
 27581  }
 27582  
 27583  // OwnableOwnershipTransferred represents a OwnershipTransferred event raised by the Ownable contract.
 27584  type OwnableOwnershipTransferred struct {
 27585  	PreviousOwner common.Address
 27586  	NewOwner      common.Address
 27587  	Raw           types.Log // Blockchain specific contextual infos
 27588  }
 27589  
 27590  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 27591  //
 27592  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 27593  func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) {
 27594  
 27595  	var previousOwnerRule []interface{}
 27596  	for _, previousOwnerItem := range previousOwner {
 27597  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 27598  	}
 27599  	var newOwnerRule []interface{}
 27600  	for _, newOwnerItem := range newOwner {
 27601  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 27602  	}
 27603  
 27604  	logs, sub, err := _Ownable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 27605  	if err != nil {
 27606  		return nil, err
 27607  	}
 27608  	return &OwnableOwnershipTransferredIterator{contract: _Ownable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
 27609  }
 27610  
 27611  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 27612  //
 27613  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 27614  func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
 27615  
 27616  	var previousOwnerRule []interface{}
 27617  	for _, previousOwnerItem := range previousOwner {
 27618  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 27619  	}
 27620  	var newOwnerRule []interface{}
 27621  	for _, newOwnerItem := range newOwner {
 27622  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 27623  	}
 27624  
 27625  	logs, sub, err := _Ownable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 27626  	if err != nil {
 27627  		return nil, err
 27628  	}
 27629  	return event.NewSubscription(func(quit <-chan struct{}) error {
 27630  		defer sub.Unsubscribe()
 27631  		for {
 27632  			select {
 27633  			case log := <-logs:
 27634  				// New log arrived, parse the event and forward to the user
 27635  				event := new(OwnableOwnershipTransferred)
 27636  				if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 27637  					return err
 27638  				}
 27639  				event.Raw = log
 27640  
 27641  				select {
 27642  				case sink <- event:
 27643  				case err := <-sub.Err():
 27644  					return err
 27645  				case <-quit:
 27646  					return nil
 27647  				}
 27648  			case err := <-sub.Err():
 27649  				return err
 27650  			case <-quit:
 27651  				return nil
 27652  			}
 27653  		}
 27654  	}), nil
 27655  }
 27656  
 27657  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 27658  //
 27659  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 27660  func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableOwnershipTransferred, error) {
 27661  	event := new(OwnableOwnershipTransferred)
 27662  	if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 27663  		return nil, err
 27664  	}
 27665  	return event, nil
 27666  }
 27667  
 27668  // RolesABI is the input ABI used to generate the binding from.
 27669  const RolesABI = "[]"
 27670  
 27671  // RolesBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 27672  const RolesBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582026429ed555f83236ac076363d644804ff5b0baa4e098f1d4ef783a49049f7df70029`
 27673  
 27674  // RolesBin is the compiled bytecode used for deploying new contracts.
 27675  var RolesBin = "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582026429ed555f83236ac076363d644804ff5b0baa4e098f1d4ef783a49049f7df70029"
 27676  
 27677  // DeployRoles deploys a new Klaytn contract, binding an instance of Roles to it.
 27678  func DeployRoles(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Roles, error) {
 27679  	parsed, err := abi.JSON(strings.NewReader(RolesABI))
 27680  	if err != nil {
 27681  		return common.Address{}, nil, nil, err
 27682  	}
 27683  
 27684  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(RolesBin), backend)
 27685  	if err != nil {
 27686  		return common.Address{}, nil, nil, err
 27687  	}
 27688  	return address, tx, &Roles{RolesCaller: RolesCaller{contract: contract}, RolesTransactor: RolesTransactor{contract: contract}, RolesFilterer: RolesFilterer{contract: contract}}, nil
 27689  }
 27690  
 27691  // Roles is an auto generated Go binding around a Klaytn contract.
 27692  type Roles struct {
 27693  	RolesCaller     // Read-only binding to the contract
 27694  	RolesTransactor // Write-only binding to the contract
 27695  	RolesFilterer   // Log filterer for contract events
 27696  }
 27697  
 27698  // RolesCaller is an auto generated read-only Go binding around a Klaytn contract.
 27699  type RolesCaller struct {
 27700  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 27701  }
 27702  
 27703  // RolesTransactor is an auto generated write-only Go binding around a Klaytn contract.
 27704  type RolesTransactor struct {
 27705  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 27706  }
 27707  
 27708  // RolesFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 27709  type RolesFilterer struct {
 27710  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 27711  }
 27712  
 27713  // RolesSession is an auto generated Go binding around a Klaytn contract,
 27714  // with pre-set call and transact options.
 27715  type RolesSession struct {
 27716  	Contract     *Roles            // Generic contract binding to set the session for
 27717  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 27718  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 27719  }
 27720  
 27721  // RolesCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 27722  // with pre-set call options.
 27723  type RolesCallerSession struct {
 27724  	Contract *RolesCaller  // Generic contract caller binding to set the session for
 27725  	CallOpts bind.CallOpts // Call options to use throughout this session
 27726  }
 27727  
 27728  // RolesTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 27729  // with pre-set transact options.
 27730  type RolesTransactorSession struct {
 27731  	Contract     *RolesTransactor  // Generic contract transactor binding to set the session for
 27732  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 27733  }
 27734  
 27735  // RolesRaw is an auto generated low-level Go binding around a Klaytn contract.
 27736  type RolesRaw struct {
 27737  	Contract *Roles // Generic contract binding to access the raw methods on
 27738  }
 27739  
 27740  // RolesCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 27741  type RolesCallerRaw struct {
 27742  	Contract *RolesCaller // Generic read-only contract binding to access the raw methods on
 27743  }
 27744  
 27745  // RolesTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 27746  type RolesTransactorRaw struct {
 27747  	Contract *RolesTransactor // Generic write-only contract binding to access the raw methods on
 27748  }
 27749  
 27750  // NewRoles creates a new instance of Roles, bound to a specific deployed contract.
 27751  func NewRoles(address common.Address, backend bind.ContractBackend) (*Roles, error) {
 27752  	contract, err := bindRoles(address, backend, backend, backend)
 27753  	if err != nil {
 27754  		return nil, err
 27755  	}
 27756  	return &Roles{RolesCaller: RolesCaller{contract: contract}, RolesTransactor: RolesTransactor{contract: contract}, RolesFilterer: RolesFilterer{contract: contract}}, nil
 27757  }
 27758  
 27759  // NewRolesCaller creates a new read-only instance of Roles, bound to a specific deployed contract.
 27760  func NewRolesCaller(address common.Address, caller bind.ContractCaller) (*RolesCaller, error) {
 27761  	contract, err := bindRoles(address, caller, nil, nil)
 27762  	if err != nil {
 27763  		return nil, err
 27764  	}
 27765  	return &RolesCaller{contract: contract}, nil
 27766  }
 27767  
 27768  // NewRolesTransactor creates a new write-only instance of Roles, bound to a specific deployed contract.
 27769  func NewRolesTransactor(address common.Address, transactor bind.ContractTransactor) (*RolesTransactor, error) {
 27770  	contract, err := bindRoles(address, nil, transactor, nil)
 27771  	if err != nil {
 27772  		return nil, err
 27773  	}
 27774  	return &RolesTransactor{contract: contract}, nil
 27775  }
 27776  
 27777  // NewRolesFilterer creates a new log filterer instance of Roles, bound to a specific deployed contract.
 27778  func NewRolesFilterer(address common.Address, filterer bind.ContractFilterer) (*RolesFilterer, error) {
 27779  	contract, err := bindRoles(address, nil, nil, filterer)
 27780  	if err != nil {
 27781  		return nil, err
 27782  	}
 27783  	return &RolesFilterer{contract: contract}, nil
 27784  }
 27785  
 27786  // bindRoles binds a generic wrapper to an already deployed contract.
 27787  func bindRoles(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 27788  	parsed, err := abi.JSON(strings.NewReader(RolesABI))
 27789  	if err != nil {
 27790  		return nil, err
 27791  	}
 27792  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 27793  }
 27794  
 27795  // Call invokes the (constant) contract method with params as input values and
 27796  // sets the output to result. The result type might be a single field for simple
 27797  // returns, a slice of interfaces for anonymous returns and a struct for named
 27798  // returns.
 27799  func (_Roles *RolesRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 27800  	return _Roles.Contract.RolesCaller.contract.Call(opts, result, method, params...)
 27801  }
 27802  
 27803  // Transfer initiates a plain transaction to move funds to the contract, calling
 27804  // its default method if one is available.
 27805  func (_Roles *RolesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 27806  	return _Roles.Contract.RolesTransactor.contract.Transfer(opts)
 27807  }
 27808  
 27809  // Transact invokes the (paid) contract method with params as input values.
 27810  func (_Roles *RolesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 27811  	return _Roles.Contract.RolesTransactor.contract.Transact(opts, method, params...)
 27812  }
 27813  
 27814  // Call invokes the (constant) contract method with params as input values and
 27815  // sets the output to result. The result type might be a single field for simple
 27816  // returns, a slice of interfaces for anonymous returns and a struct for named
 27817  // returns.
 27818  func (_Roles *RolesCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 27819  	return _Roles.Contract.contract.Call(opts, result, method, params...)
 27820  }
 27821  
 27822  // Transfer initiates a plain transaction to move funds to the contract, calling
 27823  // its default method if one is available.
 27824  func (_Roles *RolesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 27825  	return _Roles.Contract.contract.Transfer(opts)
 27826  }
 27827  
 27828  // Transact invokes the (paid) contract method with params as input values.
 27829  func (_Roles *RolesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 27830  	return _Roles.Contract.contract.Transact(opts, method, params...)
 27831  }
 27832  
 27833  // SafeMathABI is the input ABI used to generate the binding from.
 27834  const SafeMathABI = "[]"
 27835  
 27836  // SafeMathBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 27837  const SafeMathBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058201aa360e6241ae1bc829140fb38ae5ca1672181b2a5c529c4ca3a045ed2896feb0029`
 27838  
 27839  // SafeMathBin is the compiled bytecode used for deploying new contracts.
 27840  var SafeMathBin = "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058201aa360e6241ae1bc829140fb38ae5ca1672181b2a5c529c4ca3a045ed2896feb0029"
 27841  
 27842  // DeploySafeMath deploys a new Klaytn contract, binding an instance of SafeMath to it.
 27843  func DeploySafeMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeMath, error) {
 27844  	parsed, err := abi.JSON(strings.NewReader(SafeMathABI))
 27845  	if err != nil {
 27846  		return common.Address{}, nil, nil, err
 27847  	}
 27848  
 27849  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(SafeMathBin), backend)
 27850  	if err != nil {
 27851  		return common.Address{}, nil, nil, err
 27852  	}
 27853  	return address, tx, &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
 27854  }
 27855  
 27856  // SafeMath is an auto generated Go binding around a Klaytn contract.
 27857  type SafeMath struct {
 27858  	SafeMathCaller     // Read-only binding to the contract
 27859  	SafeMathTransactor // Write-only binding to the contract
 27860  	SafeMathFilterer   // Log filterer for contract events
 27861  }
 27862  
 27863  // SafeMathCaller is an auto generated read-only Go binding around a Klaytn contract.
 27864  type SafeMathCaller struct {
 27865  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 27866  }
 27867  
 27868  // SafeMathTransactor is an auto generated write-only Go binding around a Klaytn contract.
 27869  type SafeMathTransactor struct {
 27870  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 27871  }
 27872  
 27873  // SafeMathFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 27874  type SafeMathFilterer struct {
 27875  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 27876  }
 27877  
 27878  // SafeMathSession is an auto generated Go binding around a Klaytn contract,
 27879  // with pre-set call and transact options.
 27880  type SafeMathSession struct {
 27881  	Contract     *SafeMath         // Generic contract binding to set the session for
 27882  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 27883  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 27884  }
 27885  
 27886  // SafeMathCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 27887  // with pre-set call options.
 27888  type SafeMathCallerSession struct {
 27889  	Contract *SafeMathCaller // Generic contract caller binding to set the session for
 27890  	CallOpts bind.CallOpts   // Call options to use throughout this session
 27891  }
 27892  
 27893  // SafeMathTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 27894  // with pre-set transact options.
 27895  type SafeMathTransactorSession struct {
 27896  	Contract     *SafeMathTransactor // Generic contract transactor binding to set the session for
 27897  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
 27898  }
 27899  
 27900  // SafeMathRaw is an auto generated low-level Go binding around a Klaytn contract.
 27901  type SafeMathRaw struct {
 27902  	Contract *SafeMath // Generic contract binding to access the raw methods on
 27903  }
 27904  
 27905  // SafeMathCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 27906  type SafeMathCallerRaw struct {
 27907  	Contract *SafeMathCaller // Generic read-only contract binding to access the raw methods on
 27908  }
 27909  
 27910  // SafeMathTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 27911  type SafeMathTransactorRaw struct {
 27912  	Contract *SafeMathTransactor // Generic write-only contract binding to access the raw methods on
 27913  }
 27914  
 27915  // NewSafeMath creates a new instance of SafeMath, bound to a specific deployed contract.
 27916  func NewSafeMath(address common.Address, backend bind.ContractBackend) (*SafeMath, error) {
 27917  	contract, err := bindSafeMath(address, backend, backend, backend)
 27918  	if err != nil {
 27919  		return nil, err
 27920  	}
 27921  	return &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
 27922  }
 27923  
 27924  // NewSafeMathCaller creates a new read-only instance of SafeMath, bound to a specific deployed contract.
 27925  func NewSafeMathCaller(address common.Address, caller bind.ContractCaller) (*SafeMathCaller, error) {
 27926  	contract, err := bindSafeMath(address, caller, nil, nil)
 27927  	if err != nil {
 27928  		return nil, err
 27929  	}
 27930  	return &SafeMathCaller{contract: contract}, nil
 27931  }
 27932  
 27933  // NewSafeMathTransactor creates a new write-only instance of SafeMath, bound to a specific deployed contract.
 27934  func NewSafeMathTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeMathTransactor, error) {
 27935  	contract, err := bindSafeMath(address, nil, transactor, nil)
 27936  	if err != nil {
 27937  		return nil, err
 27938  	}
 27939  	return &SafeMathTransactor{contract: contract}, nil
 27940  }
 27941  
 27942  // NewSafeMathFilterer creates a new log filterer instance of SafeMath, bound to a specific deployed contract.
 27943  func NewSafeMathFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeMathFilterer, error) {
 27944  	contract, err := bindSafeMath(address, nil, nil, filterer)
 27945  	if err != nil {
 27946  		return nil, err
 27947  	}
 27948  	return &SafeMathFilterer{contract: contract}, nil
 27949  }
 27950  
 27951  // bindSafeMath binds a generic wrapper to an already deployed contract.
 27952  func bindSafeMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 27953  	parsed, err := abi.JSON(strings.NewReader(SafeMathABI))
 27954  	if err != nil {
 27955  		return nil, err
 27956  	}
 27957  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 27958  }
 27959  
 27960  // Call invokes the (constant) contract method with params as input values and
 27961  // sets the output to result. The result type might be a single field for simple
 27962  // returns, a slice of interfaces for anonymous returns and a struct for named
 27963  // returns.
 27964  func (_SafeMath *SafeMathRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 27965  	return _SafeMath.Contract.SafeMathCaller.contract.Call(opts, result, method, params...)
 27966  }
 27967  
 27968  // Transfer initiates a plain transaction to move funds to the contract, calling
 27969  // its default method if one is available.
 27970  func (_SafeMath *SafeMathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 27971  	return _SafeMath.Contract.SafeMathTransactor.contract.Transfer(opts)
 27972  }
 27973  
 27974  // Transact invokes the (paid) contract method with params as input values.
 27975  func (_SafeMath *SafeMathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 27976  	return _SafeMath.Contract.SafeMathTransactor.contract.Transact(opts, method, params...)
 27977  }
 27978  
 27979  // Call invokes the (constant) contract method with params as input values and
 27980  // sets the output to result. The result type might be a single field for simple
 27981  // returns, a slice of interfaces for anonymous returns and a struct for named
 27982  // returns.
 27983  func (_SafeMath *SafeMathCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 27984  	return _SafeMath.Contract.contract.Call(opts, result, method, params...)
 27985  }
 27986  
 27987  // Transfer initiates a plain transaction to move funds to the contract, calling
 27988  // its default method if one is available.
 27989  func (_SafeMath *SafeMathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 27990  	return _SafeMath.Contract.contract.Transfer(opts)
 27991  }
 27992  
 27993  // Transact invokes the (paid) contract method with params as input values.
 27994  func (_SafeMath *SafeMathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 27995  	return _SafeMath.Contract.contract.Transact(opts, method, params...)
 27996  }