github.com/klaytn/klaytn@v1.12.1/contracts/sc_erc721/sc_nft.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 scnft
     5  
     6  import (
     7  	"errors"
     8  	"math/big"
     9  	"strings"
    10  
    11  	"github.com/klaytn/klaytn"
    12  	"github.com/klaytn/klaytn/accounts/abi"
    13  	"github.com/klaytn/klaytn/accounts/abi/bind"
    14  	"github.com/klaytn/klaytn/blockchain/types"
    15  	"github.com/klaytn/klaytn/common"
    16  	"github.com/klaytn/klaytn/event"
    17  )
    18  
    19  // Reference imports to suppress errors if they are not otherwise used.
    20  var (
    21  	_ = errors.New
    22  	_ = big.NewInt
    23  	_ = strings.NewReader
    24  	_ = klaytn.NotFound
    25  	_ = bind.Bind
    26  	_ = common.Big1
    27  	_ = types.BloomLookup
    28  	_ = event.NewSubscription
    29  	_ = abi.ConvertType
    30  )
    31  
    32  // AddressMetaData contains all meta data concerning the Address contract.
    33  var AddressMetaData = &bind.MetaData{
    34  	ABI: "[]",
    35  	Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820299ebfdf39258e62f3b1db6c55ebb9d11001cde07d51662fa2fd336c270f24630029",
    36  }
    37  
    38  // AddressABI is the input ABI used to generate the binding from.
    39  // Deprecated: Use AddressMetaData.ABI instead.
    40  var AddressABI = AddressMetaData.ABI
    41  
    42  // AddressBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
    43  const AddressBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820299ebfdf39258e62f3b1db6c55ebb9d11001cde07d51662fa2fd336c270f24630029`
    44  
    45  // AddressBin is the compiled bytecode used for deploying new contracts.
    46  // Deprecated: Use AddressMetaData.Bin instead.
    47  var AddressBin = AddressMetaData.Bin
    48  
    49  // DeployAddress deploys a new Klaytn contract, binding an instance of Address to it.
    50  func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) {
    51  	parsed, err := AddressMetaData.GetAbi()
    52  	if err != nil {
    53  		return common.Address{}, nil, nil, err
    54  	}
    55  	if parsed == nil {
    56  		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
    57  	}
    58  
    59  	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AddressBin), backend)
    60  	if err != nil {
    61  		return common.Address{}, nil, nil, err
    62  	}
    63  	return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil
    64  }
    65  
    66  // Address is an auto generated Go binding around a Klaytn contract.
    67  type Address struct {
    68  	AddressCaller     // Read-only binding to the contract
    69  	AddressTransactor // Write-only binding to the contract
    70  	AddressFilterer   // Log filterer for contract events
    71  }
    72  
    73  // AddressCaller is an auto generated read-only Go binding around a Klaytn contract.
    74  type AddressCaller struct {
    75  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    76  }
    77  
    78  // AddressTransactor is an auto generated write-only Go binding around a Klaytn contract.
    79  type AddressTransactor struct {
    80  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    81  }
    82  
    83  // AddressFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
    84  type AddressFilterer struct {
    85  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    86  }
    87  
    88  // AddressSession is an auto generated Go binding around a Klaytn contract,
    89  // with pre-set call and transact options.
    90  type AddressSession struct {
    91  	Contract     *Address          // Generic contract binding to set the session for
    92  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    93  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    94  }
    95  
    96  // AddressCallerSession is an auto generated read-only Go binding around a Klaytn contract,
    97  // with pre-set call options.
    98  type AddressCallerSession struct {
    99  	Contract *AddressCaller // Generic contract caller binding to set the session for
   100  	CallOpts bind.CallOpts  // Call options to use throughout this session
   101  }
   102  
   103  // AddressTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
   104  // with pre-set transact options.
   105  type AddressTransactorSession struct {
   106  	Contract     *AddressTransactor // Generic contract transactor binding to set the session for
   107  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
   108  }
   109  
   110  // AddressRaw is an auto generated low-level Go binding around a Klaytn contract.
   111  type AddressRaw struct {
   112  	Contract *Address // Generic contract binding to access the raw methods on
   113  }
   114  
   115  // AddressCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
   116  type AddressCallerRaw struct {
   117  	Contract *AddressCaller // Generic read-only contract binding to access the raw methods on
   118  }
   119  
   120  // AddressTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
   121  type AddressTransactorRaw struct {
   122  	Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on
   123  }
   124  
   125  // NewAddress creates a new instance of Address, bound to a specific deployed contract.
   126  func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) {
   127  	contract, err := bindAddress(address, backend, backend, backend)
   128  	if err != nil {
   129  		return nil, err
   130  	}
   131  	return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil
   132  }
   133  
   134  // NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract.
   135  func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) {
   136  	contract, err := bindAddress(address, caller, nil, nil)
   137  	if err != nil {
   138  		return nil, err
   139  	}
   140  	return &AddressCaller{contract: contract}, nil
   141  }
   142  
   143  // NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract.
   144  func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) {
   145  	contract, err := bindAddress(address, nil, transactor, nil)
   146  	if err != nil {
   147  		return nil, err
   148  	}
   149  	return &AddressTransactor{contract: contract}, nil
   150  }
   151  
   152  // NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract.
   153  func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) {
   154  	contract, err := bindAddress(address, nil, nil, filterer)
   155  	if err != nil {
   156  		return nil, err
   157  	}
   158  	return &AddressFilterer{contract: contract}, nil
   159  }
   160  
   161  // bindAddress binds a generic wrapper to an already deployed contract.
   162  func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   163  	parsed, err := AddressMetaData.GetAbi()
   164  	if err != nil {
   165  		return nil, err
   166  	}
   167  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
   168  }
   169  
   170  // Call invokes the (constant) contract method with params as input values and
   171  // sets the output to result. The result type might be a single field for simple
   172  // returns, a slice of interfaces for anonymous returns and a struct for named
   173  // returns.
   174  func (_Address *AddressRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   175  	return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...)
   176  }
   177  
   178  // Transfer initiates a plain transaction to move funds to the contract, calling
   179  // its default method if one is available.
   180  func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   181  	return _Address.Contract.AddressTransactor.contract.Transfer(opts)
   182  }
   183  
   184  // Transact invokes the (paid) contract method with params as input values.
   185  func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   186  	return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...)
   187  }
   188  
   189  // Call invokes the (constant) contract method with params as input values and
   190  // sets the output to result. The result type might be a single field for simple
   191  // returns, a slice of interfaces for anonymous returns and a struct for named
   192  // returns.
   193  func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   194  	return _Address.Contract.contract.Call(opts, result, method, params...)
   195  }
   196  
   197  // Transfer initiates a plain transaction to move funds to the contract, calling
   198  // its default method if one is available.
   199  func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   200  	return _Address.Contract.contract.Transfer(opts)
   201  }
   202  
   203  // Transact invokes the (paid) contract method with params as input values.
   204  func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   205  	return _Address.Contract.contract.Transact(opts, method, params...)
   206  }
   207  
   208  // CountersMetaData contains all meta data concerning the Counters contract.
   209  var CountersMetaData = &bind.MetaData{
   210  	ABI: "[]",
   211  	Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820805a368616cc52189113373468f3b8d2b801d1cb861a5f35c763ad7ac01ac1fe0029",
   212  }
   213  
   214  // CountersABI is the input ABI used to generate the binding from.
   215  // Deprecated: Use CountersMetaData.ABI instead.
   216  var CountersABI = CountersMetaData.ABI
   217  
   218  // CountersBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
   219  const CountersBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820805a368616cc52189113373468f3b8d2b801d1cb861a5f35c763ad7ac01ac1fe0029`
   220  
   221  // CountersBin is the compiled bytecode used for deploying new contracts.
   222  // Deprecated: Use CountersMetaData.Bin instead.
   223  var CountersBin = CountersMetaData.Bin
   224  
   225  // DeployCounters deploys a new Klaytn contract, binding an instance of Counters to it.
   226  func DeployCounters(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Counters, error) {
   227  	parsed, err := CountersMetaData.GetAbi()
   228  	if err != nil {
   229  		return common.Address{}, nil, nil, err
   230  	}
   231  	if parsed == nil {
   232  		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
   233  	}
   234  
   235  	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(CountersBin), backend)
   236  	if err != nil {
   237  		return common.Address{}, nil, nil, err
   238  	}
   239  	return address, tx, &Counters{CountersCaller: CountersCaller{contract: contract}, CountersTransactor: CountersTransactor{contract: contract}, CountersFilterer: CountersFilterer{contract: contract}}, nil
   240  }
   241  
   242  // Counters is an auto generated Go binding around a Klaytn contract.
   243  type Counters struct {
   244  	CountersCaller     // Read-only binding to the contract
   245  	CountersTransactor // Write-only binding to the contract
   246  	CountersFilterer   // Log filterer for contract events
   247  }
   248  
   249  // CountersCaller is an auto generated read-only Go binding around a Klaytn contract.
   250  type CountersCaller struct {
   251  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   252  }
   253  
   254  // CountersTransactor is an auto generated write-only Go binding around a Klaytn contract.
   255  type CountersTransactor struct {
   256  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   257  }
   258  
   259  // CountersFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
   260  type CountersFilterer struct {
   261  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   262  }
   263  
   264  // CountersSession is an auto generated Go binding around a Klaytn contract,
   265  // with pre-set call and transact options.
   266  type CountersSession struct {
   267  	Contract     *Counters         // Generic contract binding to set the session for
   268  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   269  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   270  }
   271  
   272  // CountersCallerSession is an auto generated read-only Go binding around a Klaytn contract,
   273  // with pre-set call options.
   274  type CountersCallerSession struct {
   275  	Contract *CountersCaller // Generic contract caller binding to set the session for
   276  	CallOpts bind.CallOpts   // Call options to use throughout this session
   277  }
   278  
   279  // CountersTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
   280  // with pre-set transact options.
   281  type CountersTransactorSession struct {
   282  	Contract     *CountersTransactor // Generic contract transactor binding to set the session for
   283  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
   284  }
   285  
   286  // CountersRaw is an auto generated low-level Go binding around a Klaytn contract.
   287  type CountersRaw struct {
   288  	Contract *Counters // Generic contract binding to access the raw methods on
   289  }
   290  
   291  // CountersCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
   292  type CountersCallerRaw struct {
   293  	Contract *CountersCaller // Generic read-only contract binding to access the raw methods on
   294  }
   295  
   296  // CountersTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
   297  type CountersTransactorRaw struct {
   298  	Contract *CountersTransactor // Generic write-only contract binding to access the raw methods on
   299  }
   300  
   301  // NewCounters creates a new instance of Counters, bound to a specific deployed contract.
   302  func NewCounters(address common.Address, backend bind.ContractBackend) (*Counters, error) {
   303  	contract, err := bindCounters(address, backend, backend, backend)
   304  	if err != nil {
   305  		return nil, err
   306  	}
   307  	return &Counters{CountersCaller: CountersCaller{contract: contract}, CountersTransactor: CountersTransactor{contract: contract}, CountersFilterer: CountersFilterer{contract: contract}}, nil
   308  }
   309  
   310  // NewCountersCaller creates a new read-only instance of Counters, bound to a specific deployed contract.
   311  func NewCountersCaller(address common.Address, caller bind.ContractCaller) (*CountersCaller, error) {
   312  	contract, err := bindCounters(address, caller, nil, nil)
   313  	if err != nil {
   314  		return nil, err
   315  	}
   316  	return &CountersCaller{contract: contract}, nil
   317  }
   318  
   319  // NewCountersTransactor creates a new write-only instance of Counters, bound to a specific deployed contract.
   320  func NewCountersTransactor(address common.Address, transactor bind.ContractTransactor) (*CountersTransactor, error) {
   321  	contract, err := bindCounters(address, nil, transactor, nil)
   322  	if err != nil {
   323  		return nil, err
   324  	}
   325  	return &CountersTransactor{contract: contract}, nil
   326  }
   327  
   328  // NewCountersFilterer creates a new log filterer instance of Counters, bound to a specific deployed contract.
   329  func NewCountersFilterer(address common.Address, filterer bind.ContractFilterer) (*CountersFilterer, error) {
   330  	contract, err := bindCounters(address, nil, nil, filterer)
   331  	if err != nil {
   332  		return nil, err
   333  	}
   334  	return &CountersFilterer{contract: contract}, nil
   335  }
   336  
   337  // bindCounters binds a generic wrapper to an already deployed contract.
   338  func bindCounters(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   339  	parsed, err := CountersMetaData.GetAbi()
   340  	if err != nil {
   341  		return nil, err
   342  	}
   343  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
   344  }
   345  
   346  // Call invokes the (constant) contract method with params as input values and
   347  // sets the output to result. The result type might be a single field for simple
   348  // returns, a slice of interfaces for anonymous returns and a struct for named
   349  // returns.
   350  func (_Counters *CountersRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   351  	return _Counters.Contract.CountersCaller.contract.Call(opts, result, method, params...)
   352  }
   353  
   354  // Transfer initiates a plain transaction to move funds to the contract, calling
   355  // its default method if one is available.
   356  func (_Counters *CountersRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   357  	return _Counters.Contract.CountersTransactor.contract.Transfer(opts)
   358  }
   359  
   360  // Transact invokes the (paid) contract method with params as input values.
   361  func (_Counters *CountersRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   362  	return _Counters.Contract.CountersTransactor.contract.Transact(opts, method, params...)
   363  }
   364  
   365  // Call invokes the (constant) contract method with params as input values and
   366  // sets the output to result. The result type might be a single field for simple
   367  // returns, a slice of interfaces for anonymous returns and a struct for named
   368  // returns.
   369  func (_Counters *CountersCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   370  	return _Counters.Contract.contract.Call(opts, result, method, params...)
   371  }
   372  
   373  // Transfer initiates a plain transaction to move funds to the contract, calling
   374  // its default method if one is available.
   375  func (_Counters *CountersTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   376  	return _Counters.Contract.contract.Transfer(opts)
   377  }
   378  
   379  // Transact invokes the (paid) contract method with params as input values.
   380  func (_Counters *CountersTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   381  	return _Counters.Contract.contract.Transact(opts, method, params...)
   382  }
   383  
   384  // ERC165MetaData contains all meta data concerning the ERC165 contract.
   385  var ERC165MetaData = &bind.MetaData{
   386  	ABI: "[{\"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\"}]",
   387  	Sigs: map[string]string{
   388  		"01ffc9a7": "supportsInterface(bytes4)",
   389  	},
   390  }
   391  
   392  // ERC165ABI is the input ABI used to generate the binding from.
   393  // Deprecated: Use ERC165MetaData.ABI instead.
   394  var ERC165ABI = ERC165MetaData.ABI
   395  
   396  // ERC165BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
   397  const ERC165BinRuntime = ``
   398  
   399  // ERC165FuncSigs maps the 4-byte function signature to its string representation.
   400  // Deprecated: Use ERC165MetaData.Sigs instead.
   401  var ERC165FuncSigs = ERC165MetaData.Sigs
   402  
   403  // ERC165 is an auto generated Go binding around a Klaytn contract.
   404  type ERC165 struct {
   405  	ERC165Caller     // Read-only binding to the contract
   406  	ERC165Transactor // Write-only binding to the contract
   407  	ERC165Filterer   // Log filterer for contract events
   408  }
   409  
   410  // ERC165Caller is an auto generated read-only Go binding around a Klaytn contract.
   411  type ERC165Caller struct {
   412  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   413  }
   414  
   415  // ERC165Transactor is an auto generated write-only Go binding around a Klaytn contract.
   416  type ERC165Transactor struct {
   417  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   418  }
   419  
   420  // ERC165Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
   421  type ERC165Filterer struct {
   422  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   423  }
   424  
   425  // ERC165Session is an auto generated Go binding around a Klaytn contract,
   426  // with pre-set call and transact options.
   427  type ERC165Session struct {
   428  	Contract     *ERC165           // Generic contract binding to set the session for
   429  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   430  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   431  }
   432  
   433  // ERC165CallerSession is an auto generated read-only Go binding around a Klaytn contract,
   434  // with pre-set call options.
   435  type ERC165CallerSession struct {
   436  	Contract *ERC165Caller // Generic contract caller binding to set the session for
   437  	CallOpts bind.CallOpts // Call options to use throughout this session
   438  }
   439  
   440  // ERC165TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
   441  // with pre-set transact options.
   442  type ERC165TransactorSession struct {
   443  	Contract     *ERC165Transactor // Generic contract transactor binding to set the session for
   444  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   445  }
   446  
   447  // ERC165Raw is an auto generated low-level Go binding around a Klaytn contract.
   448  type ERC165Raw struct {
   449  	Contract *ERC165 // Generic contract binding to access the raw methods on
   450  }
   451  
   452  // ERC165CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
   453  type ERC165CallerRaw struct {
   454  	Contract *ERC165Caller // Generic read-only contract binding to access the raw methods on
   455  }
   456  
   457  // ERC165TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
   458  type ERC165TransactorRaw struct {
   459  	Contract *ERC165Transactor // Generic write-only contract binding to access the raw methods on
   460  }
   461  
   462  // NewERC165 creates a new instance of ERC165, bound to a specific deployed contract.
   463  func NewERC165(address common.Address, backend bind.ContractBackend) (*ERC165, error) {
   464  	contract, err := bindERC165(address, backend, backend, backend)
   465  	if err != nil {
   466  		return nil, err
   467  	}
   468  	return &ERC165{ERC165Caller: ERC165Caller{contract: contract}, ERC165Transactor: ERC165Transactor{contract: contract}, ERC165Filterer: ERC165Filterer{contract: contract}}, nil
   469  }
   470  
   471  // NewERC165Caller creates a new read-only instance of ERC165, bound to a specific deployed contract.
   472  func NewERC165Caller(address common.Address, caller bind.ContractCaller) (*ERC165Caller, error) {
   473  	contract, err := bindERC165(address, caller, nil, nil)
   474  	if err != nil {
   475  		return nil, err
   476  	}
   477  	return &ERC165Caller{contract: contract}, nil
   478  }
   479  
   480  // NewERC165Transactor creates a new write-only instance of ERC165, bound to a specific deployed contract.
   481  func NewERC165Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC165Transactor, error) {
   482  	contract, err := bindERC165(address, nil, transactor, nil)
   483  	if err != nil {
   484  		return nil, err
   485  	}
   486  	return &ERC165Transactor{contract: contract}, nil
   487  }
   488  
   489  // NewERC165Filterer creates a new log filterer instance of ERC165, bound to a specific deployed contract.
   490  func NewERC165Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC165Filterer, error) {
   491  	contract, err := bindERC165(address, nil, nil, filterer)
   492  	if err != nil {
   493  		return nil, err
   494  	}
   495  	return &ERC165Filterer{contract: contract}, nil
   496  }
   497  
   498  // bindERC165 binds a generic wrapper to an already deployed contract.
   499  func bindERC165(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   500  	parsed, err := ERC165MetaData.GetAbi()
   501  	if err != nil {
   502  		return nil, err
   503  	}
   504  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
   505  }
   506  
   507  // Call invokes the (constant) contract method with params as input values and
   508  // sets the output to result. The result type might be a single field for simple
   509  // returns, a slice of interfaces for anonymous returns and a struct for named
   510  // returns.
   511  func (_ERC165 *ERC165Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   512  	return _ERC165.Contract.ERC165Caller.contract.Call(opts, result, method, params...)
   513  }
   514  
   515  // Transfer initiates a plain transaction to move funds to the contract, calling
   516  // its default method if one is available.
   517  func (_ERC165 *ERC165Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   518  	return _ERC165.Contract.ERC165Transactor.contract.Transfer(opts)
   519  }
   520  
   521  // Transact invokes the (paid) contract method with params as input values.
   522  func (_ERC165 *ERC165Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   523  	return _ERC165.Contract.ERC165Transactor.contract.Transact(opts, method, params...)
   524  }
   525  
   526  // Call invokes the (constant) contract method with params as input values and
   527  // sets the output to result. The result type might be a single field for simple
   528  // returns, a slice of interfaces for anonymous returns and a struct for named
   529  // returns.
   530  func (_ERC165 *ERC165CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   531  	return _ERC165.Contract.contract.Call(opts, result, method, params...)
   532  }
   533  
   534  // Transfer initiates a plain transaction to move funds to the contract, calling
   535  // its default method if one is available.
   536  func (_ERC165 *ERC165TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   537  	return _ERC165.Contract.contract.Transfer(opts)
   538  }
   539  
   540  // Transact invokes the (paid) contract method with params as input values.
   541  func (_ERC165 *ERC165TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   542  	return _ERC165.Contract.contract.Transact(opts, method, params...)
   543  }
   544  
   545  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   546  //
   547  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
   548  func (_ERC165 *ERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
   549  	var out []interface{}
   550  	err := _ERC165.contract.Call(opts, &out, "supportsInterface", interfaceId)
   551  
   552  	if err != nil {
   553  		return *new(bool), err
   554  	}
   555  
   556  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   557  
   558  	return out0, err
   559  
   560  }
   561  
   562  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   563  //
   564  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
   565  func (_ERC165 *ERC165Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
   566  	return _ERC165.Contract.SupportsInterface(&_ERC165.CallOpts, interfaceId)
   567  }
   568  
   569  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   570  //
   571  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
   572  func (_ERC165 *ERC165CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
   573  	return _ERC165.Contract.SupportsInterface(&_ERC165.CallOpts, interfaceId)
   574  }
   575  
   576  // ERC721MetaData contains all meta data concerning the ERC721 contract.
   577  var ERC721MetaData = &bind.MetaData{
   578  	ABI: "[{\"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\"}]",
   579  	Sigs: map[string]string{
   580  		"095ea7b3": "approve(address,uint256)",
   581  		"70a08231": "balanceOf(address)",
   582  		"081812fc": "getApproved(uint256)",
   583  		"e985e9c5": "isApprovedForAll(address,address)",
   584  		"6352211e": "ownerOf(uint256)",
   585  		"42842e0e": "safeTransferFrom(address,address,uint256)",
   586  		"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
   587  		"a22cb465": "setApprovalForAll(address,bool)",
   588  		"01ffc9a7": "supportsInterface(bytes4)",
   589  		"23b872dd": "transferFrom(address,address,uint256)",
   590  	},
   591  	Bin: "0x608060405234801561001057600080fd5b506100276301ffc9a760e01b61004260201b60201c565b61003d6380ac58cd60e01b61004260201b60201c565b610110565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b610d448061011f6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820ed0176cdf6bb84bc2e81a19dd4f43f70a184a383de47142e2b45467f824b179b0029",
   592  }
   593  
   594  // ERC721ABI is the input ABI used to generate the binding from.
   595  // Deprecated: Use ERC721MetaData.ABI instead.
   596  var ERC721ABI = ERC721MetaData.ABI
   597  
   598  // ERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
   599  const ERC721BinRuntime = `608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820ed0176cdf6bb84bc2e81a19dd4f43f70a184a383de47142e2b45467f824b179b0029`
   600  
   601  // ERC721FuncSigs maps the 4-byte function signature to its string representation.
   602  // Deprecated: Use ERC721MetaData.Sigs instead.
   603  var ERC721FuncSigs = ERC721MetaData.Sigs
   604  
   605  // ERC721Bin is the compiled bytecode used for deploying new contracts.
   606  // Deprecated: Use ERC721MetaData.Bin instead.
   607  var ERC721Bin = ERC721MetaData.Bin
   608  
   609  // DeployERC721 deploys a new Klaytn contract, binding an instance of ERC721 to it.
   610  func DeployERC721(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC721, error) {
   611  	parsed, err := ERC721MetaData.GetAbi()
   612  	if err != nil {
   613  		return common.Address{}, nil, nil, err
   614  	}
   615  	if parsed == nil {
   616  		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
   617  	}
   618  
   619  	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC721Bin), backend)
   620  	if err != nil {
   621  		return common.Address{}, nil, nil, err
   622  	}
   623  	return address, tx, &ERC721{ERC721Caller: ERC721Caller{contract: contract}, ERC721Transactor: ERC721Transactor{contract: contract}, ERC721Filterer: ERC721Filterer{contract: contract}}, nil
   624  }
   625  
   626  // ERC721 is an auto generated Go binding around a Klaytn contract.
   627  type ERC721 struct {
   628  	ERC721Caller     // Read-only binding to the contract
   629  	ERC721Transactor // Write-only binding to the contract
   630  	ERC721Filterer   // Log filterer for contract events
   631  }
   632  
   633  // ERC721Caller is an auto generated read-only Go binding around a Klaytn contract.
   634  type ERC721Caller struct {
   635  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   636  }
   637  
   638  // ERC721Transactor is an auto generated write-only Go binding around a Klaytn contract.
   639  type ERC721Transactor struct {
   640  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   641  }
   642  
   643  // ERC721Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
   644  type ERC721Filterer struct {
   645  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   646  }
   647  
   648  // ERC721Session is an auto generated Go binding around a Klaytn contract,
   649  // with pre-set call and transact options.
   650  type ERC721Session struct {
   651  	Contract     *ERC721           // Generic contract binding to set the session for
   652  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   653  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   654  }
   655  
   656  // ERC721CallerSession is an auto generated read-only Go binding around a Klaytn contract,
   657  // with pre-set call options.
   658  type ERC721CallerSession struct {
   659  	Contract *ERC721Caller // Generic contract caller binding to set the session for
   660  	CallOpts bind.CallOpts // Call options to use throughout this session
   661  }
   662  
   663  // ERC721TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
   664  // with pre-set transact options.
   665  type ERC721TransactorSession struct {
   666  	Contract     *ERC721Transactor // Generic contract transactor binding to set the session for
   667  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   668  }
   669  
   670  // ERC721Raw is an auto generated low-level Go binding around a Klaytn contract.
   671  type ERC721Raw struct {
   672  	Contract *ERC721 // Generic contract binding to access the raw methods on
   673  }
   674  
   675  // ERC721CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
   676  type ERC721CallerRaw struct {
   677  	Contract *ERC721Caller // Generic read-only contract binding to access the raw methods on
   678  }
   679  
   680  // ERC721TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
   681  type ERC721TransactorRaw struct {
   682  	Contract *ERC721Transactor // Generic write-only contract binding to access the raw methods on
   683  }
   684  
   685  // NewERC721 creates a new instance of ERC721, bound to a specific deployed contract.
   686  func NewERC721(address common.Address, backend bind.ContractBackend) (*ERC721, error) {
   687  	contract, err := bindERC721(address, backend, backend, backend)
   688  	if err != nil {
   689  		return nil, err
   690  	}
   691  	return &ERC721{ERC721Caller: ERC721Caller{contract: contract}, ERC721Transactor: ERC721Transactor{contract: contract}, ERC721Filterer: ERC721Filterer{contract: contract}}, nil
   692  }
   693  
   694  // NewERC721Caller creates a new read-only instance of ERC721, bound to a specific deployed contract.
   695  func NewERC721Caller(address common.Address, caller bind.ContractCaller) (*ERC721Caller, error) {
   696  	contract, err := bindERC721(address, caller, nil, nil)
   697  	if err != nil {
   698  		return nil, err
   699  	}
   700  	return &ERC721Caller{contract: contract}, nil
   701  }
   702  
   703  // NewERC721Transactor creates a new write-only instance of ERC721, bound to a specific deployed contract.
   704  func NewERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC721Transactor, error) {
   705  	contract, err := bindERC721(address, nil, transactor, nil)
   706  	if err != nil {
   707  		return nil, err
   708  	}
   709  	return &ERC721Transactor{contract: contract}, nil
   710  }
   711  
   712  // NewERC721Filterer creates a new log filterer instance of ERC721, bound to a specific deployed contract.
   713  func NewERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC721Filterer, error) {
   714  	contract, err := bindERC721(address, nil, nil, filterer)
   715  	if err != nil {
   716  		return nil, err
   717  	}
   718  	return &ERC721Filterer{contract: contract}, nil
   719  }
   720  
   721  // bindERC721 binds a generic wrapper to an already deployed contract.
   722  func bindERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   723  	parsed, err := ERC721MetaData.GetAbi()
   724  	if err != nil {
   725  		return nil, err
   726  	}
   727  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
   728  }
   729  
   730  // Call invokes the (constant) contract method with params as input values and
   731  // sets the output to result. The result type might be a single field for simple
   732  // returns, a slice of interfaces for anonymous returns and a struct for named
   733  // returns.
   734  func (_ERC721 *ERC721Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   735  	return _ERC721.Contract.ERC721Caller.contract.Call(opts, result, method, params...)
   736  }
   737  
   738  // Transfer initiates a plain transaction to move funds to the contract, calling
   739  // its default method if one is available.
   740  func (_ERC721 *ERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   741  	return _ERC721.Contract.ERC721Transactor.contract.Transfer(opts)
   742  }
   743  
   744  // Transact invokes the (paid) contract method with params as input values.
   745  func (_ERC721 *ERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   746  	return _ERC721.Contract.ERC721Transactor.contract.Transact(opts, method, params...)
   747  }
   748  
   749  // Call invokes the (constant) contract method with params as input values and
   750  // sets the output to result. The result type might be a single field for simple
   751  // returns, a slice of interfaces for anonymous returns and a struct for named
   752  // returns.
   753  func (_ERC721 *ERC721CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   754  	return _ERC721.Contract.contract.Call(opts, result, method, params...)
   755  }
   756  
   757  // Transfer initiates a plain transaction to move funds to the contract, calling
   758  // its default method if one is available.
   759  func (_ERC721 *ERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   760  	return _ERC721.Contract.contract.Transfer(opts)
   761  }
   762  
   763  // Transact invokes the (paid) contract method with params as input values.
   764  func (_ERC721 *ERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   765  	return _ERC721.Contract.contract.Transact(opts, method, params...)
   766  }
   767  
   768  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   769  //
   770  // Solidity: function balanceOf(address owner) view returns(uint256)
   771  func (_ERC721 *ERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
   772  	var out []interface{}
   773  	err := _ERC721.contract.Call(opts, &out, "balanceOf", owner)
   774  
   775  	if err != nil {
   776  		return *new(*big.Int), err
   777  	}
   778  
   779  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   780  
   781  	return out0, err
   782  
   783  }
   784  
   785  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   786  //
   787  // Solidity: function balanceOf(address owner) view returns(uint256)
   788  func (_ERC721 *ERC721Session) BalanceOf(owner common.Address) (*big.Int, error) {
   789  	return _ERC721.Contract.BalanceOf(&_ERC721.CallOpts, owner)
   790  }
   791  
   792  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   793  //
   794  // Solidity: function balanceOf(address owner) view returns(uint256)
   795  func (_ERC721 *ERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
   796  	return _ERC721.Contract.BalanceOf(&_ERC721.CallOpts, owner)
   797  }
   798  
   799  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
   800  //
   801  // Solidity: function getApproved(uint256 tokenId) view returns(address)
   802  func (_ERC721 *ERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
   803  	var out []interface{}
   804  	err := _ERC721.contract.Call(opts, &out, "getApproved", tokenId)
   805  
   806  	if err != nil {
   807  		return *new(common.Address), err
   808  	}
   809  
   810  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   811  
   812  	return out0, err
   813  
   814  }
   815  
   816  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
   817  //
   818  // Solidity: function getApproved(uint256 tokenId) view returns(address)
   819  func (_ERC721 *ERC721Session) GetApproved(tokenId *big.Int) (common.Address, error) {
   820  	return _ERC721.Contract.GetApproved(&_ERC721.CallOpts, tokenId)
   821  }
   822  
   823  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
   824  //
   825  // Solidity: function getApproved(uint256 tokenId) view returns(address)
   826  func (_ERC721 *ERC721CallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
   827  	return _ERC721.Contract.GetApproved(&_ERC721.CallOpts, tokenId)
   828  }
   829  
   830  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
   831  //
   832  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
   833  func (_ERC721 *ERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
   834  	var out []interface{}
   835  	err := _ERC721.contract.Call(opts, &out, "isApprovedForAll", owner, operator)
   836  
   837  	if err != nil {
   838  		return *new(bool), err
   839  	}
   840  
   841  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   842  
   843  	return out0, err
   844  
   845  }
   846  
   847  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
   848  //
   849  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
   850  func (_ERC721 *ERC721Session) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
   851  	return _ERC721.Contract.IsApprovedForAll(&_ERC721.CallOpts, owner, operator)
   852  }
   853  
   854  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
   855  //
   856  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
   857  func (_ERC721 *ERC721CallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
   858  	return _ERC721.Contract.IsApprovedForAll(&_ERC721.CallOpts, owner, operator)
   859  }
   860  
   861  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
   862  //
   863  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
   864  func (_ERC721 *ERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
   865  	var out []interface{}
   866  	err := _ERC721.contract.Call(opts, &out, "ownerOf", tokenId)
   867  
   868  	if err != nil {
   869  		return *new(common.Address), err
   870  	}
   871  
   872  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   873  
   874  	return out0, err
   875  
   876  }
   877  
   878  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
   879  //
   880  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
   881  func (_ERC721 *ERC721Session) OwnerOf(tokenId *big.Int) (common.Address, error) {
   882  	return _ERC721.Contract.OwnerOf(&_ERC721.CallOpts, tokenId)
   883  }
   884  
   885  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
   886  //
   887  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
   888  func (_ERC721 *ERC721CallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
   889  	return _ERC721.Contract.OwnerOf(&_ERC721.CallOpts, tokenId)
   890  }
   891  
   892  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   893  //
   894  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
   895  func (_ERC721 *ERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
   896  	var out []interface{}
   897  	err := _ERC721.contract.Call(opts, &out, "supportsInterface", interfaceId)
   898  
   899  	if err != nil {
   900  		return *new(bool), err
   901  	}
   902  
   903  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   904  
   905  	return out0, err
   906  
   907  }
   908  
   909  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   910  //
   911  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
   912  func (_ERC721 *ERC721Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
   913  	return _ERC721.Contract.SupportsInterface(&_ERC721.CallOpts, interfaceId)
   914  }
   915  
   916  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   917  //
   918  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
   919  func (_ERC721 *ERC721CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
   920  	return _ERC721.Contract.SupportsInterface(&_ERC721.CallOpts, interfaceId)
   921  }
   922  
   923  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
   924  //
   925  // Solidity: function approve(address to, uint256 tokenId) returns()
   926  func (_ERC721 *ERC721Transactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   927  	return _ERC721.contract.Transact(opts, "approve", to, tokenId)
   928  }
   929  
   930  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
   931  //
   932  // Solidity: function approve(address to, uint256 tokenId) returns()
   933  func (_ERC721 *ERC721Session) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   934  	return _ERC721.Contract.Approve(&_ERC721.TransactOpts, to, tokenId)
   935  }
   936  
   937  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
   938  //
   939  // Solidity: function approve(address to, uint256 tokenId) returns()
   940  func (_ERC721 *ERC721TransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   941  	return _ERC721.Contract.Approve(&_ERC721.TransactOpts, to, tokenId)
   942  }
   943  
   944  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
   945  //
   946  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
   947  func (_ERC721 *ERC721Transactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   948  	return _ERC721.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
   949  }
   950  
   951  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
   952  //
   953  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
   954  func (_ERC721 *ERC721Session) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   955  	return _ERC721.Contract.SafeTransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
   956  }
   957  
   958  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
   959  //
   960  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
   961  func (_ERC721 *ERC721TransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   962  	return _ERC721.Contract.SafeTransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
   963  }
   964  
   965  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
   966  //
   967  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
   968  func (_ERC721 *ERC721Transactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
   969  	return _ERC721.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
   970  }
   971  
   972  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
   973  //
   974  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
   975  func (_ERC721 *ERC721Session) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
   976  	return _ERC721.Contract.SafeTransferFrom0(&_ERC721.TransactOpts, from, to, tokenId, _data)
   977  }
   978  
   979  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
   980  //
   981  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
   982  func (_ERC721 *ERC721TransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
   983  	return _ERC721.Contract.SafeTransferFrom0(&_ERC721.TransactOpts, from, to, tokenId, _data)
   984  }
   985  
   986  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
   987  //
   988  // Solidity: function setApprovalForAll(address to, bool approved) returns()
   989  func (_ERC721 *ERC721Transactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
   990  	return _ERC721.contract.Transact(opts, "setApprovalForAll", to, approved)
   991  }
   992  
   993  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
   994  //
   995  // Solidity: function setApprovalForAll(address to, bool approved) returns()
   996  func (_ERC721 *ERC721Session) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
   997  	return _ERC721.Contract.SetApprovalForAll(&_ERC721.TransactOpts, to, approved)
   998  }
   999  
  1000  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  1001  //
  1002  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  1003  func (_ERC721 *ERC721TransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  1004  	return _ERC721.Contract.SetApprovalForAll(&_ERC721.TransactOpts, to, approved)
  1005  }
  1006  
  1007  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1008  //
  1009  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  1010  func (_ERC721 *ERC721Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1011  	return _ERC721.contract.Transact(opts, "transferFrom", from, to, tokenId)
  1012  }
  1013  
  1014  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1015  //
  1016  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  1017  func (_ERC721 *ERC721Session) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1018  	return _ERC721.Contract.TransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
  1019  }
  1020  
  1021  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1022  //
  1023  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  1024  func (_ERC721 *ERC721TransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1025  	return _ERC721.Contract.TransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
  1026  }
  1027  
  1028  // 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.
  1029  type ERC721ApprovalIterator struct {
  1030  	Event *ERC721Approval // Event containing the contract specifics and raw log
  1031  
  1032  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1033  	event    string              // Event name to use for unpacking event data
  1034  
  1035  	logs chan types.Log      // Log channel receiving the found contract events
  1036  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  1037  	done bool                // Whether the subscription completed delivering logs
  1038  	fail error               // Occurred error to stop iteration
  1039  }
  1040  
  1041  // Next advances the iterator to the subsequent event, returning whether there
  1042  // are any more events found. In case of a retrieval or parsing error, false is
  1043  // returned and Error() can be queried for the exact failure.
  1044  func (it *ERC721ApprovalIterator) Next() bool {
  1045  	// If the iterator failed, stop iterating
  1046  	if it.fail != nil {
  1047  		return false
  1048  	}
  1049  	// If the iterator completed, deliver directly whatever's available
  1050  	if it.done {
  1051  		select {
  1052  		case log := <-it.logs:
  1053  			it.Event = new(ERC721Approval)
  1054  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1055  				it.fail = err
  1056  				return false
  1057  			}
  1058  			it.Event.Raw = log
  1059  			return true
  1060  
  1061  		default:
  1062  			return false
  1063  		}
  1064  	}
  1065  	// Iterator still in progress, wait for either a data or an error event
  1066  	select {
  1067  	case log := <-it.logs:
  1068  		it.Event = new(ERC721Approval)
  1069  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1070  			it.fail = err
  1071  			return false
  1072  		}
  1073  		it.Event.Raw = log
  1074  		return true
  1075  
  1076  	case err := <-it.sub.Err():
  1077  		it.done = true
  1078  		it.fail = err
  1079  		return it.Next()
  1080  	}
  1081  }
  1082  
  1083  // Error returns any retrieval or parsing error occurred during filtering.
  1084  func (it *ERC721ApprovalIterator) Error() error {
  1085  	return it.fail
  1086  }
  1087  
  1088  // Close terminates the iteration process, releasing any pending underlying
  1089  // resources.
  1090  func (it *ERC721ApprovalIterator) Close() error {
  1091  	it.sub.Unsubscribe()
  1092  	return nil
  1093  }
  1094  
  1095  // ERC721Approval represents a Approval event raised by the ERC721 contract.
  1096  type ERC721Approval struct {
  1097  	Owner    common.Address
  1098  	Approved common.Address
  1099  	TokenId  *big.Int
  1100  	Raw      types.Log // Blockchain specific contextual infos
  1101  }
  1102  
  1103  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1104  //
  1105  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  1106  func (_ERC721 *ERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721ApprovalIterator, error) {
  1107  
  1108  	var ownerRule []interface{}
  1109  	for _, ownerItem := range owner {
  1110  		ownerRule = append(ownerRule, ownerItem)
  1111  	}
  1112  	var approvedRule []interface{}
  1113  	for _, approvedItem := range approved {
  1114  		approvedRule = append(approvedRule, approvedItem)
  1115  	}
  1116  	var tokenIdRule []interface{}
  1117  	for _, tokenIdItem := range tokenId {
  1118  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  1119  	}
  1120  
  1121  	logs, sub, err := _ERC721.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  1122  	if err != nil {
  1123  		return nil, err
  1124  	}
  1125  	return &ERC721ApprovalIterator{contract: _ERC721.contract, event: "Approval", logs: logs, sub: sub}, nil
  1126  }
  1127  
  1128  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1129  //
  1130  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  1131  func (_ERC721 *ERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  1132  
  1133  	var ownerRule []interface{}
  1134  	for _, ownerItem := range owner {
  1135  		ownerRule = append(ownerRule, ownerItem)
  1136  	}
  1137  	var approvedRule []interface{}
  1138  	for _, approvedItem := range approved {
  1139  		approvedRule = append(approvedRule, approvedItem)
  1140  	}
  1141  	var tokenIdRule []interface{}
  1142  	for _, tokenIdItem := range tokenId {
  1143  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  1144  	}
  1145  
  1146  	logs, sub, err := _ERC721.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  1147  	if err != nil {
  1148  		return nil, err
  1149  	}
  1150  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1151  		defer sub.Unsubscribe()
  1152  		for {
  1153  			select {
  1154  			case log := <-logs:
  1155  				// New log arrived, parse the event and forward to the user
  1156  				event := new(ERC721Approval)
  1157  				if err := _ERC721.contract.UnpackLog(event, "Approval", log); err != nil {
  1158  					return err
  1159  				}
  1160  				event.Raw = log
  1161  
  1162  				select {
  1163  				case sink <- event:
  1164  				case err := <-sub.Err():
  1165  					return err
  1166  				case <-quit:
  1167  					return nil
  1168  				}
  1169  			case err := <-sub.Err():
  1170  				return err
  1171  			case <-quit:
  1172  				return nil
  1173  			}
  1174  		}
  1175  	}), nil
  1176  }
  1177  
  1178  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1179  //
  1180  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  1181  func (_ERC721 *ERC721Filterer) ParseApproval(log types.Log) (*ERC721Approval, error) {
  1182  	event := new(ERC721Approval)
  1183  	if err := _ERC721.contract.UnpackLog(event, "Approval", log); err != nil {
  1184  		return nil, err
  1185  	}
  1186  	return event, nil
  1187  }
  1188  
  1189  // 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.
  1190  type ERC721ApprovalForAllIterator struct {
  1191  	Event *ERC721ApprovalForAll // Event containing the contract specifics and raw log
  1192  
  1193  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1194  	event    string              // Event name to use for unpacking event data
  1195  
  1196  	logs chan types.Log      // Log channel receiving the found contract events
  1197  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  1198  	done bool                // Whether the subscription completed delivering logs
  1199  	fail error               // Occurred error to stop iteration
  1200  }
  1201  
  1202  // Next advances the iterator to the subsequent event, returning whether there
  1203  // are any more events found. In case of a retrieval or parsing error, false is
  1204  // returned and Error() can be queried for the exact failure.
  1205  func (it *ERC721ApprovalForAllIterator) Next() bool {
  1206  	// If the iterator failed, stop iterating
  1207  	if it.fail != nil {
  1208  		return false
  1209  	}
  1210  	// If the iterator completed, deliver directly whatever's available
  1211  	if it.done {
  1212  		select {
  1213  		case log := <-it.logs:
  1214  			it.Event = new(ERC721ApprovalForAll)
  1215  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1216  				it.fail = err
  1217  				return false
  1218  			}
  1219  			it.Event.Raw = log
  1220  			return true
  1221  
  1222  		default:
  1223  			return false
  1224  		}
  1225  	}
  1226  	// Iterator still in progress, wait for either a data or an error event
  1227  	select {
  1228  	case log := <-it.logs:
  1229  		it.Event = new(ERC721ApprovalForAll)
  1230  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1231  			it.fail = err
  1232  			return false
  1233  		}
  1234  		it.Event.Raw = log
  1235  		return true
  1236  
  1237  	case err := <-it.sub.Err():
  1238  		it.done = true
  1239  		it.fail = err
  1240  		return it.Next()
  1241  	}
  1242  }
  1243  
  1244  // Error returns any retrieval or parsing error occurred during filtering.
  1245  func (it *ERC721ApprovalForAllIterator) Error() error {
  1246  	return it.fail
  1247  }
  1248  
  1249  // Close terminates the iteration process, releasing any pending underlying
  1250  // resources.
  1251  func (it *ERC721ApprovalForAllIterator) Close() error {
  1252  	it.sub.Unsubscribe()
  1253  	return nil
  1254  }
  1255  
  1256  // ERC721ApprovalForAll represents a ApprovalForAll event raised by the ERC721 contract.
  1257  type ERC721ApprovalForAll struct {
  1258  	Owner    common.Address
  1259  	Operator common.Address
  1260  	Approved bool
  1261  	Raw      types.Log // Blockchain specific contextual infos
  1262  }
  1263  
  1264  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  1265  //
  1266  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  1267  func (_ERC721 *ERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721ApprovalForAllIterator, error) {
  1268  
  1269  	var ownerRule []interface{}
  1270  	for _, ownerItem := range owner {
  1271  		ownerRule = append(ownerRule, ownerItem)
  1272  	}
  1273  	var operatorRule []interface{}
  1274  	for _, operatorItem := range operator {
  1275  		operatorRule = append(operatorRule, operatorItem)
  1276  	}
  1277  
  1278  	logs, sub, err := _ERC721.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  1279  	if err != nil {
  1280  		return nil, err
  1281  	}
  1282  	return &ERC721ApprovalForAllIterator{contract: _ERC721.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  1283  }
  1284  
  1285  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  1286  //
  1287  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  1288  func (_ERC721 *ERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  1289  
  1290  	var ownerRule []interface{}
  1291  	for _, ownerItem := range owner {
  1292  		ownerRule = append(ownerRule, ownerItem)
  1293  	}
  1294  	var operatorRule []interface{}
  1295  	for _, operatorItem := range operator {
  1296  		operatorRule = append(operatorRule, operatorItem)
  1297  	}
  1298  
  1299  	logs, sub, err := _ERC721.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  1300  	if err != nil {
  1301  		return nil, err
  1302  	}
  1303  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1304  		defer sub.Unsubscribe()
  1305  		for {
  1306  			select {
  1307  			case log := <-logs:
  1308  				// New log arrived, parse the event and forward to the user
  1309  				event := new(ERC721ApprovalForAll)
  1310  				if err := _ERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  1311  					return err
  1312  				}
  1313  				event.Raw = log
  1314  
  1315  				select {
  1316  				case sink <- event:
  1317  				case err := <-sub.Err():
  1318  					return err
  1319  				case <-quit:
  1320  					return nil
  1321  				}
  1322  			case err := <-sub.Err():
  1323  				return err
  1324  			case <-quit:
  1325  				return nil
  1326  			}
  1327  		}
  1328  	}), nil
  1329  }
  1330  
  1331  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  1332  //
  1333  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  1334  func (_ERC721 *ERC721Filterer) ParseApprovalForAll(log types.Log) (*ERC721ApprovalForAll, error) {
  1335  	event := new(ERC721ApprovalForAll)
  1336  	if err := _ERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  1337  		return nil, err
  1338  	}
  1339  	return event, nil
  1340  }
  1341  
  1342  // 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.
  1343  type ERC721TransferIterator struct {
  1344  	Event *ERC721Transfer // Event containing the contract specifics and raw log
  1345  
  1346  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1347  	event    string              // Event name to use for unpacking event data
  1348  
  1349  	logs chan types.Log      // Log channel receiving the found contract events
  1350  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  1351  	done bool                // Whether the subscription completed delivering logs
  1352  	fail error               // Occurred error to stop iteration
  1353  }
  1354  
  1355  // Next advances the iterator to the subsequent event, returning whether there
  1356  // are any more events found. In case of a retrieval or parsing error, false is
  1357  // returned and Error() can be queried for the exact failure.
  1358  func (it *ERC721TransferIterator) Next() bool {
  1359  	// If the iterator failed, stop iterating
  1360  	if it.fail != nil {
  1361  		return false
  1362  	}
  1363  	// If the iterator completed, deliver directly whatever's available
  1364  	if it.done {
  1365  		select {
  1366  		case log := <-it.logs:
  1367  			it.Event = new(ERC721Transfer)
  1368  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1369  				it.fail = err
  1370  				return false
  1371  			}
  1372  			it.Event.Raw = log
  1373  			return true
  1374  
  1375  		default:
  1376  			return false
  1377  		}
  1378  	}
  1379  	// Iterator still in progress, wait for either a data or an error event
  1380  	select {
  1381  	case log := <-it.logs:
  1382  		it.Event = new(ERC721Transfer)
  1383  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1384  			it.fail = err
  1385  			return false
  1386  		}
  1387  		it.Event.Raw = log
  1388  		return true
  1389  
  1390  	case err := <-it.sub.Err():
  1391  		it.done = true
  1392  		it.fail = err
  1393  		return it.Next()
  1394  	}
  1395  }
  1396  
  1397  // Error returns any retrieval or parsing error occurred during filtering.
  1398  func (it *ERC721TransferIterator) Error() error {
  1399  	return it.fail
  1400  }
  1401  
  1402  // Close terminates the iteration process, releasing any pending underlying
  1403  // resources.
  1404  func (it *ERC721TransferIterator) Close() error {
  1405  	it.sub.Unsubscribe()
  1406  	return nil
  1407  }
  1408  
  1409  // ERC721Transfer represents a Transfer event raised by the ERC721 contract.
  1410  type ERC721Transfer struct {
  1411  	From    common.Address
  1412  	To      common.Address
  1413  	TokenId *big.Int
  1414  	Raw     types.Log // Blockchain specific contextual infos
  1415  }
  1416  
  1417  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  1418  //
  1419  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  1420  func (_ERC721 *ERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721TransferIterator, error) {
  1421  
  1422  	var fromRule []interface{}
  1423  	for _, fromItem := range from {
  1424  		fromRule = append(fromRule, fromItem)
  1425  	}
  1426  	var toRule []interface{}
  1427  	for _, toItem := range to {
  1428  		toRule = append(toRule, toItem)
  1429  	}
  1430  	var tokenIdRule []interface{}
  1431  	for _, tokenIdItem := range tokenId {
  1432  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  1433  	}
  1434  
  1435  	logs, sub, err := _ERC721.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  1436  	if err != nil {
  1437  		return nil, err
  1438  	}
  1439  	return &ERC721TransferIterator{contract: _ERC721.contract, event: "Transfer", logs: logs, sub: sub}, nil
  1440  }
  1441  
  1442  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  1443  //
  1444  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  1445  func (_ERC721 *ERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  1446  
  1447  	var fromRule []interface{}
  1448  	for _, fromItem := range from {
  1449  		fromRule = append(fromRule, fromItem)
  1450  	}
  1451  	var toRule []interface{}
  1452  	for _, toItem := range to {
  1453  		toRule = append(toRule, toItem)
  1454  	}
  1455  	var tokenIdRule []interface{}
  1456  	for _, tokenIdItem := range tokenId {
  1457  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  1458  	}
  1459  
  1460  	logs, sub, err := _ERC721.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  1461  	if err != nil {
  1462  		return nil, err
  1463  	}
  1464  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1465  		defer sub.Unsubscribe()
  1466  		for {
  1467  			select {
  1468  			case log := <-logs:
  1469  				// New log arrived, parse the event and forward to the user
  1470  				event := new(ERC721Transfer)
  1471  				if err := _ERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
  1472  					return err
  1473  				}
  1474  				event.Raw = log
  1475  
  1476  				select {
  1477  				case sink <- event:
  1478  				case err := <-sub.Err():
  1479  					return err
  1480  				case <-quit:
  1481  					return nil
  1482  				}
  1483  			case err := <-sub.Err():
  1484  				return err
  1485  			case <-quit:
  1486  				return nil
  1487  			}
  1488  		}
  1489  	}), nil
  1490  }
  1491  
  1492  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  1493  //
  1494  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  1495  func (_ERC721 *ERC721Filterer) ParseTransfer(log types.Log) (*ERC721Transfer, error) {
  1496  	event := new(ERC721Transfer)
  1497  	if err := _ERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
  1498  		return nil, err
  1499  	}
  1500  	return event, nil
  1501  }
  1502  
  1503  // ERC721BurnableMetaData contains all meta data concerning the ERC721Burnable contract.
  1504  var ERC721BurnableMetaData = &bind.MetaData{
  1505  	ABI: "[{\"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\"}]",
  1506  	Sigs: map[string]string{
  1507  		"095ea7b3": "approve(address,uint256)",
  1508  		"70a08231": "balanceOf(address)",
  1509  		"42966c68": "burn(uint256)",
  1510  		"081812fc": "getApproved(uint256)",
  1511  		"e985e9c5": "isApprovedForAll(address,address)",
  1512  		"6352211e": "ownerOf(uint256)",
  1513  		"42842e0e": "safeTransferFrom(address,address,uint256)",
  1514  		"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  1515  		"a22cb465": "setApprovalForAll(address,bool)",
  1516  		"01ffc9a7": "supportsInterface(bytes4)",
  1517  		"23b872dd": "transferFrom(address,address,uint256)",
  1518  	},
  1519  	Bin: "0x608060405261001a6301ffc9a760e01b61003560201b60201c565b6100306380ac58cd60e01b61003560201b60201c565b610103565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100c657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b610eff806101126000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a723058200b2831a1feaad2f1c210200377a7ea891524c8e08250cec47ef805ccf70f5f8c0029",
  1520  }
  1521  
  1522  // ERC721BurnableABI is the input ABI used to generate the binding from.
  1523  // Deprecated: Use ERC721BurnableMetaData.ABI instead.
  1524  var ERC721BurnableABI = ERC721BurnableMetaData.ABI
  1525  
  1526  // ERC721BurnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  1527  const ERC721BurnableBinRuntime = `608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a723058200b2831a1feaad2f1c210200377a7ea891524c8e08250cec47ef805ccf70f5f8c0029`
  1528  
  1529  // ERC721BurnableFuncSigs maps the 4-byte function signature to its string representation.
  1530  // Deprecated: Use ERC721BurnableMetaData.Sigs instead.
  1531  var ERC721BurnableFuncSigs = ERC721BurnableMetaData.Sigs
  1532  
  1533  // ERC721BurnableBin is the compiled bytecode used for deploying new contracts.
  1534  // Deprecated: Use ERC721BurnableMetaData.Bin instead.
  1535  var ERC721BurnableBin = ERC721BurnableMetaData.Bin
  1536  
  1537  // DeployERC721Burnable deploys a new Klaytn contract, binding an instance of ERC721Burnable to it.
  1538  func DeployERC721Burnable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC721Burnable, error) {
  1539  	parsed, err := ERC721BurnableMetaData.GetAbi()
  1540  	if err != nil {
  1541  		return common.Address{}, nil, nil, err
  1542  	}
  1543  	if parsed == nil {
  1544  		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
  1545  	}
  1546  
  1547  	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC721BurnableBin), backend)
  1548  	if err != nil {
  1549  		return common.Address{}, nil, nil, err
  1550  	}
  1551  	return address, tx, &ERC721Burnable{ERC721BurnableCaller: ERC721BurnableCaller{contract: contract}, ERC721BurnableTransactor: ERC721BurnableTransactor{contract: contract}, ERC721BurnableFilterer: ERC721BurnableFilterer{contract: contract}}, nil
  1552  }
  1553  
  1554  // ERC721Burnable is an auto generated Go binding around a Klaytn contract.
  1555  type ERC721Burnable struct {
  1556  	ERC721BurnableCaller     // Read-only binding to the contract
  1557  	ERC721BurnableTransactor // Write-only binding to the contract
  1558  	ERC721BurnableFilterer   // Log filterer for contract events
  1559  }
  1560  
  1561  // ERC721BurnableCaller is an auto generated read-only Go binding around a Klaytn contract.
  1562  type ERC721BurnableCaller struct {
  1563  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1564  }
  1565  
  1566  // ERC721BurnableTransactor is an auto generated write-only Go binding around a Klaytn contract.
  1567  type ERC721BurnableTransactor struct {
  1568  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1569  }
  1570  
  1571  // ERC721BurnableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  1572  type ERC721BurnableFilterer struct {
  1573  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1574  }
  1575  
  1576  // ERC721BurnableSession is an auto generated Go binding around a Klaytn contract,
  1577  // with pre-set call and transact options.
  1578  type ERC721BurnableSession struct {
  1579  	Contract     *ERC721Burnable   // Generic contract binding to set the session for
  1580  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1581  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1582  }
  1583  
  1584  // ERC721BurnableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  1585  // with pre-set call options.
  1586  type ERC721BurnableCallerSession struct {
  1587  	Contract *ERC721BurnableCaller // Generic contract caller binding to set the session for
  1588  	CallOpts bind.CallOpts         // Call options to use throughout this session
  1589  }
  1590  
  1591  // ERC721BurnableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  1592  // with pre-set transact options.
  1593  type ERC721BurnableTransactorSession struct {
  1594  	Contract     *ERC721BurnableTransactor // Generic contract transactor binding to set the session for
  1595  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
  1596  }
  1597  
  1598  // ERC721BurnableRaw is an auto generated low-level Go binding around a Klaytn contract.
  1599  type ERC721BurnableRaw struct {
  1600  	Contract *ERC721Burnable // Generic contract binding to access the raw methods on
  1601  }
  1602  
  1603  // ERC721BurnableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  1604  type ERC721BurnableCallerRaw struct {
  1605  	Contract *ERC721BurnableCaller // Generic read-only contract binding to access the raw methods on
  1606  }
  1607  
  1608  // ERC721BurnableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  1609  type ERC721BurnableTransactorRaw struct {
  1610  	Contract *ERC721BurnableTransactor // Generic write-only contract binding to access the raw methods on
  1611  }
  1612  
  1613  // NewERC721Burnable creates a new instance of ERC721Burnable, bound to a specific deployed contract.
  1614  func NewERC721Burnable(address common.Address, backend bind.ContractBackend) (*ERC721Burnable, error) {
  1615  	contract, err := bindERC721Burnable(address, backend, backend, backend)
  1616  	if err != nil {
  1617  		return nil, err
  1618  	}
  1619  	return &ERC721Burnable{ERC721BurnableCaller: ERC721BurnableCaller{contract: contract}, ERC721BurnableTransactor: ERC721BurnableTransactor{contract: contract}, ERC721BurnableFilterer: ERC721BurnableFilterer{contract: contract}}, nil
  1620  }
  1621  
  1622  // NewERC721BurnableCaller creates a new read-only instance of ERC721Burnable, bound to a specific deployed contract.
  1623  func NewERC721BurnableCaller(address common.Address, caller bind.ContractCaller) (*ERC721BurnableCaller, error) {
  1624  	contract, err := bindERC721Burnable(address, caller, nil, nil)
  1625  	if err != nil {
  1626  		return nil, err
  1627  	}
  1628  	return &ERC721BurnableCaller{contract: contract}, nil
  1629  }
  1630  
  1631  // NewERC721BurnableTransactor creates a new write-only instance of ERC721Burnable, bound to a specific deployed contract.
  1632  func NewERC721BurnableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721BurnableTransactor, error) {
  1633  	contract, err := bindERC721Burnable(address, nil, transactor, nil)
  1634  	if err != nil {
  1635  		return nil, err
  1636  	}
  1637  	return &ERC721BurnableTransactor{contract: contract}, nil
  1638  }
  1639  
  1640  // NewERC721BurnableFilterer creates a new log filterer instance of ERC721Burnable, bound to a specific deployed contract.
  1641  func NewERC721BurnableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721BurnableFilterer, error) {
  1642  	contract, err := bindERC721Burnable(address, nil, nil, filterer)
  1643  	if err != nil {
  1644  		return nil, err
  1645  	}
  1646  	return &ERC721BurnableFilterer{contract: contract}, nil
  1647  }
  1648  
  1649  // bindERC721Burnable binds a generic wrapper to an already deployed contract.
  1650  func bindERC721Burnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1651  	parsed, err := ERC721BurnableMetaData.GetAbi()
  1652  	if err != nil {
  1653  		return nil, err
  1654  	}
  1655  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
  1656  }
  1657  
  1658  // Call invokes the (constant) contract method with params as input values and
  1659  // sets the output to result. The result type might be a single field for simple
  1660  // returns, a slice of interfaces for anonymous returns and a struct for named
  1661  // returns.
  1662  func (_ERC721Burnable *ERC721BurnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1663  	return _ERC721Burnable.Contract.ERC721BurnableCaller.contract.Call(opts, result, method, params...)
  1664  }
  1665  
  1666  // Transfer initiates a plain transaction to move funds to the contract, calling
  1667  // its default method if one is available.
  1668  func (_ERC721Burnable *ERC721BurnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1669  	return _ERC721Burnable.Contract.ERC721BurnableTransactor.contract.Transfer(opts)
  1670  }
  1671  
  1672  // Transact invokes the (paid) contract method with params as input values.
  1673  func (_ERC721Burnable *ERC721BurnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1674  	return _ERC721Burnable.Contract.ERC721BurnableTransactor.contract.Transact(opts, method, params...)
  1675  }
  1676  
  1677  // Call invokes the (constant) contract method with params as input values and
  1678  // sets the output to result. The result type might be a single field for simple
  1679  // returns, a slice of interfaces for anonymous returns and a struct for named
  1680  // returns.
  1681  func (_ERC721Burnable *ERC721BurnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1682  	return _ERC721Burnable.Contract.contract.Call(opts, result, method, params...)
  1683  }
  1684  
  1685  // Transfer initiates a plain transaction to move funds to the contract, calling
  1686  // its default method if one is available.
  1687  func (_ERC721Burnable *ERC721BurnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1688  	return _ERC721Burnable.Contract.contract.Transfer(opts)
  1689  }
  1690  
  1691  // Transact invokes the (paid) contract method with params as input values.
  1692  func (_ERC721Burnable *ERC721BurnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1693  	return _ERC721Burnable.Contract.contract.Transact(opts, method, params...)
  1694  }
  1695  
  1696  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1697  //
  1698  // Solidity: function balanceOf(address owner) view returns(uint256)
  1699  func (_ERC721Burnable *ERC721BurnableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  1700  	var out []interface{}
  1701  	err := _ERC721Burnable.contract.Call(opts, &out, "balanceOf", owner)
  1702  
  1703  	if err != nil {
  1704  		return *new(*big.Int), err
  1705  	}
  1706  
  1707  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1708  
  1709  	return out0, err
  1710  
  1711  }
  1712  
  1713  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1714  //
  1715  // Solidity: function balanceOf(address owner) view returns(uint256)
  1716  func (_ERC721Burnable *ERC721BurnableSession) BalanceOf(owner common.Address) (*big.Int, error) {
  1717  	return _ERC721Burnable.Contract.BalanceOf(&_ERC721Burnable.CallOpts, owner)
  1718  }
  1719  
  1720  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1721  //
  1722  // Solidity: function balanceOf(address owner) view returns(uint256)
  1723  func (_ERC721Burnable *ERC721BurnableCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  1724  	return _ERC721Burnable.Contract.BalanceOf(&_ERC721Burnable.CallOpts, owner)
  1725  }
  1726  
  1727  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  1728  //
  1729  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  1730  func (_ERC721Burnable *ERC721BurnableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  1731  	var out []interface{}
  1732  	err := _ERC721Burnable.contract.Call(opts, &out, "getApproved", tokenId)
  1733  
  1734  	if err != nil {
  1735  		return *new(common.Address), err
  1736  	}
  1737  
  1738  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1739  
  1740  	return out0, err
  1741  
  1742  }
  1743  
  1744  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  1745  //
  1746  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  1747  func (_ERC721Burnable *ERC721BurnableSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  1748  	return _ERC721Burnable.Contract.GetApproved(&_ERC721Burnable.CallOpts, tokenId)
  1749  }
  1750  
  1751  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  1752  //
  1753  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  1754  func (_ERC721Burnable *ERC721BurnableCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  1755  	return _ERC721Burnable.Contract.GetApproved(&_ERC721Burnable.CallOpts, tokenId)
  1756  }
  1757  
  1758  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  1759  //
  1760  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  1761  func (_ERC721Burnable *ERC721BurnableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  1762  	var out []interface{}
  1763  	err := _ERC721Burnable.contract.Call(opts, &out, "isApprovedForAll", owner, operator)
  1764  
  1765  	if err != nil {
  1766  		return *new(bool), err
  1767  	}
  1768  
  1769  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1770  
  1771  	return out0, err
  1772  
  1773  }
  1774  
  1775  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  1776  //
  1777  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  1778  func (_ERC721Burnable *ERC721BurnableSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  1779  	return _ERC721Burnable.Contract.IsApprovedForAll(&_ERC721Burnable.CallOpts, owner, operator)
  1780  }
  1781  
  1782  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  1783  //
  1784  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  1785  func (_ERC721Burnable *ERC721BurnableCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  1786  	return _ERC721Burnable.Contract.IsApprovedForAll(&_ERC721Burnable.CallOpts, owner, operator)
  1787  }
  1788  
  1789  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  1790  //
  1791  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  1792  func (_ERC721Burnable *ERC721BurnableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  1793  	var out []interface{}
  1794  	err := _ERC721Burnable.contract.Call(opts, &out, "ownerOf", tokenId)
  1795  
  1796  	if err != nil {
  1797  		return *new(common.Address), err
  1798  	}
  1799  
  1800  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1801  
  1802  	return out0, err
  1803  
  1804  }
  1805  
  1806  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  1807  //
  1808  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  1809  func (_ERC721Burnable *ERC721BurnableSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  1810  	return _ERC721Burnable.Contract.OwnerOf(&_ERC721Burnable.CallOpts, tokenId)
  1811  }
  1812  
  1813  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  1814  //
  1815  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  1816  func (_ERC721Burnable *ERC721BurnableCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  1817  	return _ERC721Burnable.Contract.OwnerOf(&_ERC721Burnable.CallOpts, tokenId)
  1818  }
  1819  
  1820  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1821  //
  1822  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  1823  func (_ERC721Burnable *ERC721BurnableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  1824  	var out []interface{}
  1825  	err := _ERC721Burnable.contract.Call(opts, &out, "supportsInterface", interfaceId)
  1826  
  1827  	if err != nil {
  1828  		return *new(bool), err
  1829  	}
  1830  
  1831  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1832  
  1833  	return out0, err
  1834  
  1835  }
  1836  
  1837  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1838  //
  1839  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  1840  func (_ERC721Burnable *ERC721BurnableSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  1841  	return _ERC721Burnable.Contract.SupportsInterface(&_ERC721Burnable.CallOpts, interfaceId)
  1842  }
  1843  
  1844  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1845  //
  1846  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  1847  func (_ERC721Burnable *ERC721BurnableCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  1848  	return _ERC721Burnable.Contract.SupportsInterface(&_ERC721Burnable.CallOpts, interfaceId)
  1849  }
  1850  
  1851  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1852  //
  1853  // Solidity: function approve(address to, uint256 tokenId) returns()
  1854  func (_ERC721Burnable *ERC721BurnableTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1855  	return _ERC721Burnable.contract.Transact(opts, "approve", to, tokenId)
  1856  }
  1857  
  1858  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1859  //
  1860  // Solidity: function approve(address to, uint256 tokenId) returns()
  1861  func (_ERC721Burnable *ERC721BurnableSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1862  	return _ERC721Burnable.Contract.Approve(&_ERC721Burnable.TransactOpts, to, tokenId)
  1863  }
  1864  
  1865  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1866  //
  1867  // Solidity: function approve(address to, uint256 tokenId) returns()
  1868  func (_ERC721Burnable *ERC721BurnableTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1869  	return _ERC721Burnable.Contract.Approve(&_ERC721Burnable.TransactOpts, to, tokenId)
  1870  }
  1871  
  1872  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  1873  //
  1874  // Solidity: function burn(uint256 tokenId) returns()
  1875  func (_ERC721Burnable *ERC721BurnableTransactor) Burn(opts *bind.TransactOpts, tokenId *big.Int) (*types.Transaction, error) {
  1876  	return _ERC721Burnable.contract.Transact(opts, "burn", tokenId)
  1877  }
  1878  
  1879  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  1880  //
  1881  // Solidity: function burn(uint256 tokenId) returns()
  1882  func (_ERC721Burnable *ERC721BurnableSession) Burn(tokenId *big.Int) (*types.Transaction, error) {
  1883  	return _ERC721Burnable.Contract.Burn(&_ERC721Burnable.TransactOpts, tokenId)
  1884  }
  1885  
  1886  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  1887  //
  1888  // Solidity: function burn(uint256 tokenId) returns()
  1889  func (_ERC721Burnable *ERC721BurnableTransactorSession) Burn(tokenId *big.Int) (*types.Transaction, error) {
  1890  	return _ERC721Burnable.Contract.Burn(&_ERC721Burnable.TransactOpts, tokenId)
  1891  }
  1892  
  1893  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  1894  //
  1895  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  1896  func (_ERC721Burnable *ERC721BurnableTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1897  	return _ERC721Burnable.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  1898  }
  1899  
  1900  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  1901  //
  1902  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  1903  func (_ERC721Burnable *ERC721BurnableSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1904  	return _ERC721Burnable.Contract.SafeTransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId)
  1905  }
  1906  
  1907  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  1908  //
  1909  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  1910  func (_ERC721Burnable *ERC721BurnableTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1911  	return _ERC721Burnable.Contract.SafeTransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId)
  1912  }
  1913  
  1914  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  1915  //
  1916  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  1917  func (_ERC721Burnable *ERC721BurnableTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  1918  	return _ERC721Burnable.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
  1919  }
  1920  
  1921  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  1922  //
  1923  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  1924  func (_ERC721Burnable *ERC721BurnableSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  1925  	return _ERC721Burnable.Contract.SafeTransferFrom0(&_ERC721Burnable.TransactOpts, from, to, tokenId, _data)
  1926  }
  1927  
  1928  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  1929  //
  1930  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  1931  func (_ERC721Burnable *ERC721BurnableTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  1932  	return _ERC721Burnable.Contract.SafeTransferFrom0(&_ERC721Burnable.TransactOpts, from, to, tokenId, _data)
  1933  }
  1934  
  1935  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  1936  //
  1937  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  1938  func (_ERC721Burnable *ERC721BurnableTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
  1939  	return _ERC721Burnable.contract.Transact(opts, "setApprovalForAll", to, approved)
  1940  }
  1941  
  1942  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  1943  //
  1944  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  1945  func (_ERC721Burnable *ERC721BurnableSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  1946  	return _ERC721Burnable.Contract.SetApprovalForAll(&_ERC721Burnable.TransactOpts, to, approved)
  1947  }
  1948  
  1949  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  1950  //
  1951  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  1952  func (_ERC721Burnable *ERC721BurnableTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  1953  	return _ERC721Burnable.Contract.SetApprovalForAll(&_ERC721Burnable.TransactOpts, to, approved)
  1954  }
  1955  
  1956  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1957  //
  1958  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  1959  func (_ERC721Burnable *ERC721BurnableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1960  	return _ERC721Burnable.contract.Transact(opts, "transferFrom", from, to, tokenId)
  1961  }
  1962  
  1963  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1964  //
  1965  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  1966  func (_ERC721Burnable *ERC721BurnableSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1967  	return _ERC721Burnable.Contract.TransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId)
  1968  }
  1969  
  1970  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1971  //
  1972  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  1973  func (_ERC721Burnable *ERC721BurnableTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1974  	return _ERC721Burnable.Contract.TransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId)
  1975  }
  1976  
  1977  // 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.
  1978  type ERC721BurnableApprovalIterator struct {
  1979  	Event *ERC721BurnableApproval // Event containing the contract specifics and raw log
  1980  
  1981  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1982  	event    string              // Event name to use for unpacking event data
  1983  
  1984  	logs chan types.Log      // Log channel receiving the found contract events
  1985  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  1986  	done bool                // Whether the subscription completed delivering logs
  1987  	fail error               // Occurred error to stop iteration
  1988  }
  1989  
  1990  // Next advances the iterator to the subsequent event, returning whether there
  1991  // are any more events found. In case of a retrieval or parsing error, false is
  1992  // returned and Error() can be queried for the exact failure.
  1993  func (it *ERC721BurnableApprovalIterator) Next() bool {
  1994  	// If the iterator failed, stop iterating
  1995  	if it.fail != nil {
  1996  		return false
  1997  	}
  1998  	// If the iterator completed, deliver directly whatever's available
  1999  	if it.done {
  2000  		select {
  2001  		case log := <-it.logs:
  2002  			it.Event = new(ERC721BurnableApproval)
  2003  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2004  				it.fail = err
  2005  				return false
  2006  			}
  2007  			it.Event.Raw = log
  2008  			return true
  2009  
  2010  		default:
  2011  			return false
  2012  		}
  2013  	}
  2014  	// Iterator still in progress, wait for either a data or an error event
  2015  	select {
  2016  	case log := <-it.logs:
  2017  		it.Event = new(ERC721BurnableApproval)
  2018  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2019  			it.fail = err
  2020  			return false
  2021  		}
  2022  		it.Event.Raw = log
  2023  		return true
  2024  
  2025  	case err := <-it.sub.Err():
  2026  		it.done = true
  2027  		it.fail = err
  2028  		return it.Next()
  2029  	}
  2030  }
  2031  
  2032  // Error returns any retrieval or parsing error occurred during filtering.
  2033  func (it *ERC721BurnableApprovalIterator) Error() error {
  2034  	return it.fail
  2035  }
  2036  
  2037  // Close terminates the iteration process, releasing any pending underlying
  2038  // resources.
  2039  func (it *ERC721BurnableApprovalIterator) Close() error {
  2040  	it.sub.Unsubscribe()
  2041  	return nil
  2042  }
  2043  
  2044  // ERC721BurnableApproval represents a Approval event raised by the ERC721Burnable contract.
  2045  type ERC721BurnableApproval struct {
  2046  	Owner    common.Address
  2047  	Approved common.Address
  2048  	TokenId  *big.Int
  2049  	Raw      types.Log // Blockchain specific contextual infos
  2050  }
  2051  
  2052  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2053  //
  2054  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  2055  func (_ERC721Burnable *ERC721BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721BurnableApprovalIterator, error) {
  2056  
  2057  	var ownerRule []interface{}
  2058  	for _, ownerItem := range owner {
  2059  		ownerRule = append(ownerRule, ownerItem)
  2060  	}
  2061  	var approvedRule []interface{}
  2062  	for _, approvedItem := range approved {
  2063  		approvedRule = append(approvedRule, approvedItem)
  2064  	}
  2065  	var tokenIdRule []interface{}
  2066  	for _, tokenIdItem := range tokenId {
  2067  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  2068  	}
  2069  
  2070  	logs, sub, err := _ERC721Burnable.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  2071  	if err != nil {
  2072  		return nil, err
  2073  	}
  2074  	return &ERC721BurnableApprovalIterator{contract: _ERC721Burnable.contract, event: "Approval", logs: logs, sub: sub}, nil
  2075  }
  2076  
  2077  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2078  //
  2079  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  2080  func (_ERC721Burnable *ERC721BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721BurnableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  2081  
  2082  	var ownerRule []interface{}
  2083  	for _, ownerItem := range owner {
  2084  		ownerRule = append(ownerRule, ownerItem)
  2085  	}
  2086  	var approvedRule []interface{}
  2087  	for _, approvedItem := range approved {
  2088  		approvedRule = append(approvedRule, approvedItem)
  2089  	}
  2090  	var tokenIdRule []interface{}
  2091  	for _, tokenIdItem := range tokenId {
  2092  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  2093  	}
  2094  
  2095  	logs, sub, err := _ERC721Burnable.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  2096  	if err != nil {
  2097  		return nil, err
  2098  	}
  2099  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2100  		defer sub.Unsubscribe()
  2101  		for {
  2102  			select {
  2103  			case log := <-logs:
  2104  				// New log arrived, parse the event and forward to the user
  2105  				event := new(ERC721BurnableApproval)
  2106  				if err := _ERC721Burnable.contract.UnpackLog(event, "Approval", log); err != nil {
  2107  					return err
  2108  				}
  2109  				event.Raw = log
  2110  
  2111  				select {
  2112  				case sink <- event:
  2113  				case err := <-sub.Err():
  2114  					return err
  2115  				case <-quit:
  2116  					return nil
  2117  				}
  2118  			case err := <-sub.Err():
  2119  				return err
  2120  			case <-quit:
  2121  				return nil
  2122  			}
  2123  		}
  2124  	}), nil
  2125  }
  2126  
  2127  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2128  //
  2129  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  2130  func (_ERC721Burnable *ERC721BurnableFilterer) ParseApproval(log types.Log) (*ERC721BurnableApproval, error) {
  2131  	event := new(ERC721BurnableApproval)
  2132  	if err := _ERC721Burnable.contract.UnpackLog(event, "Approval", log); err != nil {
  2133  		return nil, err
  2134  	}
  2135  	return event, nil
  2136  }
  2137  
  2138  // 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.
  2139  type ERC721BurnableApprovalForAllIterator struct {
  2140  	Event *ERC721BurnableApprovalForAll // Event containing the contract specifics and raw log
  2141  
  2142  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2143  	event    string              // Event name to use for unpacking event data
  2144  
  2145  	logs chan types.Log      // Log channel receiving the found contract events
  2146  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2147  	done bool                // Whether the subscription completed delivering logs
  2148  	fail error               // Occurred error to stop iteration
  2149  }
  2150  
  2151  // Next advances the iterator to the subsequent event, returning whether there
  2152  // are any more events found. In case of a retrieval or parsing error, false is
  2153  // returned and Error() can be queried for the exact failure.
  2154  func (it *ERC721BurnableApprovalForAllIterator) Next() bool {
  2155  	// If the iterator failed, stop iterating
  2156  	if it.fail != nil {
  2157  		return false
  2158  	}
  2159  	// If the iterator completed, deliver directly whatever's available
  2160  	if it.done {
  2161  		select {
  2162  		case log := <-it.logs:
  2163  			it.Event = new(ERC721BurnableApprovalForAll)
  2164  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2165  				it.fail = err
  2166  				return false
  2167  			}
  2168  			it.Event.Raw = log
  2169  			return true
  2170  
  2171  		default:
  2172  			return false
  2173  		}
  2174  	}
  2175  	// Iterator still in progress, wait for either a data or an error event
  2176  	select {
  2177  	case log := <-it.logs:
  2178  		it.Event = new(ERC721BurnableApprovalForAll)
  2179  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2180  			it.fail = err
  2181  			return false
  2182  		}
  2183  		it.Event.Raw = log
  2184  		return true
  2185  
  2186  	case err := <-it.sub.Err():
  2187  		it.done = true
  2188  		it.fail = err
  2189  		return it.Next()
  2190  	}
  2191  }
  2192  
  2193  // Error returns any retrieval or parsing error occurred during filtering.
  2194  func (it *ERC721BurnableApprovalForAllIterator) Error() error {
  2195  	return it.fail
  2196  }
  2197  
  2198  // Close terminates the iteration process, releasing any pending underlying
  2199  // resources.
  2200  func (it *ERC721BurnableApprovalForAllIterator) Close() error {
  2201  	it.sub.Unsubscribe()
  2202  	return nil
  2203  }
  2204  
  2205  // ERC721BurnableApprovalForAll represents a ApprovalForAll event raised by the ERC721Burnable contract.
  2206  type ERC721BurnableApprovalForAll struct {
  2207  	Owner    common.Address
  2208  	Operator common.Address
  2209  	Approved bool
  2210  	Raw      types.Log // Blockchain specific contextual infos
  2211  }
  2212  
  2213  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  2214  //
  2215  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  2216  func (_ERC721Burnable *ERC721BurnableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721BurnableApprovalForAllIterator, error) {
  2217  
  2218  	var ownerRule []interface{}
  2219  	for _, ownerItem := range owner {
  2220  		ownerRule = append(ownerRule, ownerItem)
  2221  	}
  2222  	var operatorRule []interface{}
  2223  	for _, operatorItem := range operator {
  2224  		operatorRule = append(operatorRule, operatorItem)
  2225  	}
  2226  
  2227  	logs, sub, err := _ERC721Burnable.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  2228  	if err != nil {
  2229  		return nil, err
  2230  	}
  2231  	return &ERC721BurnableApprovalForAllIterator{contract: _ERC721Burnable.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  2232  }
  2233  
  2234  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  2235  //
  2236  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  2237  func (_ERC721Burnable *ERC721BurnableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721BurnableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  2238  
  2239  	var ownerRule []interface{}
  2240  	for _, ownerItem := range owner {
  2241  		ownerRule = append(ownerRule, ownerItem)
  2242  	}
  2243  	var operatorRule []interface{}
  2244  	for _, operatorItem := range operator {
  2245  		operatorRule = append(operatorRule, operatorItem)
  2246  	}
  2247  
  2248  	logs, sub, err := _ERC721Burnable.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  2249  	if err != nil {
  2250  		return nil, err
  2251  	}
  2252  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2253  		defer sub.Unsubscribe()
  2254  		for {
  2255  			select {
  2256  			case log := <-logs:
  2257  				// New log arrived, parse the event and forward to the user
  2258  				event := new(ERC721BurnableApprovalForAll)
  2259  				if err := _ERC721Burnable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  2260  					return err
  2261  				}
  2262  				event.Raw = log
  2263  
  2264  				select {
  2265  				case sink <- event:
  2266  				case err := <-sub.Err():
  2267  					return err
  2268  				case <-quit:
  2269  					return nil
  2270  				}
  2271  			case err := <-sub.Err():
  2272  				return err
  2273  			case <-quit:
  2274  				return nil
  2275  			}
  2276  		}
  2277  	}), nil
  2278  }
  2279  
  2280  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  2281  //
  2282  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  2283  func (_ERC721Burnable *ERC721BurnableFilterer) ParseApprovalForAll(log types.Log) (*ERC721BurnableApprovalForAll, error) {
  2284  	event := new(ERC721BurnableApprovalForAll)
  2285  	if err := _ERC721Burnable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  2286  		return nil, err
  2287  	}
  2288  	return event, nil
  2289  }
  2290  
  2291  // 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.
  2292  type ERC721BurnableTransferIterator struct {
  2293  	Event *ERC721BurnableTransfer // Event containing the contract specifics and raw log
  2294  
  2295  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2296  	event    string              // Event name to use for unpacking event data
  2297  
  2298  	logs chan types.Log      // Log channel receiving the found contract events
  2299  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2300  	done bool                // Whether the subscription completed delivering logs
  2301  	fail error               // Occurred error to stop iteration
  2302  }
  2303  
  2304  // Next advances the iterator to the subsequent event, returning whether there
  2305  // are any more events found. In case of a retrieval or parsing error, false is
  2306  // returned and Error() can be queried for the exact failure.
  2307  func (it *ERC721BurnableTransferIterator) Next() bool {
  2308  	// If the iterator failed, stop iterating
  2309  	if it.fail != nil {
  2310  		return false
  2311  	}
  2312  	// If the iterator completed, deliver directly whatever's available
  2313  	if it.done {
  2314  		select {
  2315  		case log := <-it.logs:
  2316  			it.Event = new(ERC721BurnableTransfer)
  2317  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2318  				it.fail = err
  2319  				return false
  2320  			}
  2321  			it.Event.Raw = log
  2322  			return true
  2323  
  2324  		default:
  2325  			return false
  2326  		}
  2327  	}
  2328  	// Iterator still in progress, wait for either a data or an error event
  2329  	select {
  2330  	case log := <-it.logs:
  2331  		it.Event = new(ERC721BurnableTransfer)
  2332  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2333  			it.fail = err
  2334  			return false
  2335  		}
  2336  		it.Event.Raw = log
  2337  		return true
  2338  
  2339  	case err := <-it.sub.Err():
  2340  		it.done = true
  2341  		it.fail = err
  2342  		return it.Next()
  2343  	}
  2344  }
  2345  
  2346  // Error returns any retrieval or parsing error occurred during filtering.
  2347  func (it *ERC721BurnableTransferIterator) Error() error {
  2348  	return it.fail
  2349  }
  2350  
  2351  // Close terminates the iteration process, releasing any pending underlying
  2352  // resources.
  2353  func (it *ERC721BurnableTransferIterator) Close() error {
  2354  	it.sub.Unsubscribe()
  2355  	return nil
  2356  }
  2357  
  2358  // ERC721BurnableTransfer represents a Transfer event raised by the ERC721Burnable contract.
  2359  type ERC721BurnableTransfer struct {
  2360  	From    common.Address
  2361  	To      common.Address
  2362  	TokenId *big.Int
  2363  	Raw     types.Log // Blockchain specific contextual infos
  2364  }
  2365  
  2366  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2367  //
  2368  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  2369  func (_ERC721Burnable *ERC721BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721BurnableTransferIterator, error) {
  2370  
  2371  	var fromRule []interface{}
  2372  	for _, fromItem := range from {
  2373  		fromRule = append(fromRule, fromItem)
  2374  	}
  2375  	var toRule []interface{}
  2376  	for _, toItem := range to {
  2377  		toRule = append(toRule, toItem)
  2378  	}
  2379  	var tokenIdRule []interface{}
  2380  	for _, tokenIdItem := range tokenId {
  2381  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  2382  	}
  2383  
  2384  	logs, sub, err := _ERC721Burnable.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  2385  	if err != nil {
  2386  		return nil, err
  2387  	}
  2388  	return &ERC721BurnableTransferIterator{contract: _ERC721Burnable.contract, event: "Transfer", logs: logs, sub: sub}, nil
  2389  }
  2390  
  2391  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2392  //
  2393  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  2394  func (_ERC721Burnable *ERC721BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721BurnableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  2395  
  2396  	var fromRule []interface{}
  2397  	for _, fromItem := range from {
  2398  		fromRule = append(fromRule, fromItem)
  2399  	}
  2400  	var toRule []interface{}
  2401  	for _, toItem := range to {
  2402  		toRule = append(toRule, toItem)
  2403  	}
  2404  	var tokenIdRule []interface{}
  2405  	for _, tokenIdItem := range tokenId {
  2406  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  2407  	}
  2408  
  2409  	logs, sub, err := _ERC721Burnable.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  2410  	if err != nil {
  2411  		return nil, err
  2412  	}
  2413  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2414  		defer sub.Unsubscribe()
  2415  		for {
  2416  			select {
  2417  			case log := <-logs:
  2418  				// New log arrived, parse the event and forward to the user
  2419  				event := new(ERC721BurnableTransfer)
  2420  				if err := _ERC721Burnable.contract.UnpackLog(event, "Transfer", log); err != nil {
  2421  					return err
  2422  				}
  2423  				event.Raw = log
  2424  
  2425  				select {
  2426  				case sink <- event:
  2427  				case err := <-sub.Err():
  2428  					return err
  2429  				case <-quit:
  2430  					return nil
  2431  				}
  2432  			case err := <-sub.Err():
  2433  				return err
  2434  			case <-quit:
  2435  				return nil
  2436  			}
  2437  		}
  2438  	}), nil
  2439  }
  2440  
  2441  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2442  //
  2443  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  2444  func (_ERC721Burnable *ERC721BurnableFilterer) ParseTransfer(log types.Log) (*ERC721BurnableTransfer, error) {
  2445  	event := new(ERC721BurnableTransfer)
  2446  	if err := _ERC721Burnable.contract.UnpackLog(event, "Transfer", log); err != nil {
  2447  		return nil, err
  2448  	}
  2449  	return event, nil
  2450  }
  2451  
  2452  // ERC721EnumerableMetaData contains all meta data concerning the ERC721Enumerable contract.
  2453  var ERC721EnumerableMetaData = &bind.MetaData{
  2454  	ABI: "[{\"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\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"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\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"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\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"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\"}]",
  2455  	Sigs: map[string]string{
  2456  		"095ea7b3": "approve(address,uint256)",
  2457  		"70a08231": "balanceOf(address)",
  2458  		"081812fc": "getApproved(uint256)",
  2459  		"e985e9c5": "isApprovedForAll(address,address)",
  2460  		"6352211e": "ownerOf(uint256)",
  2461  		"42842e0e": "safeTransferFrom(address,address,uint256)",
  2462  		"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  2463  		"a22cb465": "setApprovalForAll(address,bool)",
  2464  		"01ffc9a7": "supportsInterface(bytes4)",
  2465  		"4f6ccce7": "tokenByIndex(uint256)",
  2466  		"2f745c59": "tokenOfOwnerByIndex(address,uint256)",
  2467  		"18160ddd": "totalSupply()",
  2468  		"23b872dd": "transferFrom(address,address,uint256)",
  2469  	},
  2470  	Bin: "0x608060405234801561001057600080fd5b506100276301ffc9a760e01b61005860201b60201c565b61003d6380ac58cd60e01b61005860201b60201c565b61005363780e9d6360e01b61005860201b60201c565b610126565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b61109e806101356000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342842e0e1161008c57806370a082311161006657806370a0823114610262578063a22cb46514610288578063b88d4fde146102b6578063e985e9c51461037c576100cf565b806342842e0e146101f25780634f6ccce7146102285780636352211e14610245576100cf565b806301ffc9a7146100d4578063081812fc1461010f578063095ea7b31461014857806318160ddd1461017657806323b872dd146101905780632f745c59146101c6575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103aa565b604080519115158252519081900360200190f35b61012c6004803603602081101561012557600080fd5b50356103c9565b604080516001600160a01b039092168252519081900360200190f35b6101746004803603604081101561015e57600080fd5b506001600160a01b03813516906020013561042e565b005b61017e610545565b60408051918252519081900360200190f35b610174600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561054c565b61017e600480360360408110156101dc57600080fd5b506001600160a01b0381351690602001356105a4565b6101746004803603606081101561020857600080fd5b506001600160a01b03813581169160208101359091169060400135610626565b61017e6004803603602081101561023e57600080fd5b5035610641565b61012c6004803603602081101561025b57600080fd5b50356106aa565b61017e6004803603602081101561027857600080fd5b50356001600160a01b0316610707565b6101746004803603604081101561029e57600080fd5b506001600160a01b0381351690602001351515610772565b610174600480360360808110156102cc57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561030757600080fd5b82018360208201111561031957600080fd5b8035906020019184600183028401116401000000008311171561033b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610841945050505050565b6100fb6004803603604081101561039257600080fd5b506001600160a01b038135811691602001351661089c565b6001600160e01b03191660009081526020819052604090205460ff1690565b60006103d4826108ca565b61041257604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610fa0602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b6000610439826106aa565b9050806001600160a01b0316836001600160a01b0316141561048f57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610ff56021913960400191505060405180910390fd5b336001600160a01b03821614806104ab57506104ab813361089c565b6104e957604051600160e51b62461bcd028152600401808060200182810382526038815260200180610f156038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6007545b90565b61055633826108e7565b61059457604051600160e51b62461bcd0281526004018080602001828103825260318152602001806110166031913960400191505060405180910390fd5b61059f83838361098e565b505050565b60006105af83610707565b82106105ef57604051600160e51b62461bcd02815260040180806020018281038252602b815260200180610e68602b913960400191505060405180910390fd5b6001600160a01b038316600090815260056020526040902080548390811061061357fe5b9060005260206000200154905092915050565b61059f83838360405180602001604052806000815250610841565b600061064b610545565b821061068b57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611047602c913960400191505060405180910390fd5b6007828154811061069857fe5b90600052602060002001549050919050565b6000818152600160205260408120546001600160a01b03168061070157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f776029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661075157604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610f4d602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610701906109ad565b6001600160a01b0382163314156107d35760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b61084c84848461054c565b610858848484846109b1565b61089657604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e936032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006108f2826108ca565b61093057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610ee9602c913960400191505060405180910390fd5b600061093b836106aa565b9050806001600160a01b0316846001600160a01b031614806109765750836001600160a01b031661096b846103c9565b6001600160a01b0316145b806109865750610986818561089c565b949350505050565b610999838383610aea565b6109a38382610c34565b61059f8282610d29565b5490565b60006109c5846001600160a01b0316610d67565b6109d157506001610986565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a4e578181015183820152602001610a36565b50505050905090810190601f168015610a7b5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a9d57600080fd5b505af1158015610ab1573d6000803e3d6000fd5b505050506040513d6020811015610ac757600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b826001600160a01b0316610afd826106aa565b6001600160a01b031614610b4557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610fcc6029913960400191505060405180910390fd5b6001600160a01b038216610b8d57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610ec56024913960400191505060405180910390fd5b610b9681610d6d565b6001600160a01b0383166000908152600360205260409020610bb790610daa565b6001600160a01b0382166000908152600360205260409020610bd890610dc1565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216600090815260056020526040812054610c5e90600163ffffffff610dca16565b600083815260066020526040902054909150808214610cf9576001600160a01b0384166000908152600560205260408120805484908110610c9b57fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b031681526020019081526020016000208381548110610cd957fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490610d22906000198301610e2a565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b3b151590565b6000818152600260205260409020546001600160a01b031615610da757600081815260026020526040902080546001600160a01b03191690555b50565b8054610dbd90600163ffffffff610dca16565b9055565b80546001019055565b600082821115610e245760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b81548183558181111561059f5760008381526020902061059f91810190830161054991905b80821115610e635760008155600101610e4f565b509056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a165627a7a7230582070db274482e0fb06803c6de5fb6dd67537ec0c4933dbacb0b2bf0eef9bbccb410029",
  2471  }
  2472  
  2473  // ERC721EnumerableABI is the input ABI used to generate the binding from.
  2474  // Deprecated: Use ERC721EnumerableMetaData.ABI instead.
  2475  var ERC721EnumerableABI = ERC721EnumerableMetaData.ABI
  2476  
  2477  // ERC721EnumerableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  2478  const ERC721EnumerableBinRuntime = `608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342842e0e1161008c57806370a082311161006657806370a0823114610262578063a22cb46514610288578063b88d4fde146102b6578063e985e9c51461037c576100cf565b806342842e0e146101f25780634f6ccce7146102285780636352211e14610245576100cf565b806301ffc9a7146100d4578063081812fc1461010f578063095ea7b31461014857806318160ddd1461017657806323b872dd146101905780632f745c59146101c6575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103aa565b604080519115158252519081900360200190f35b61012c6004803603602081101561012557600080fd5b50356103c9565b604080516001600160a01b039092168252519081900360200190f35b6101746004803603604081101561015e57600080fd5b506001600160a01b03813516906020013561042e565b005b61017e610545565b60408051918252519081900360200190f35b610174600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561054c565b61017e600480360360408110156101dc57600080fd5b506001600160a01b0381351690602001356105a4565b6101746004803603606081101561020857600080fd5b506001600160a01b03813581169160208101359091169060400135610626565b61017e6004803603602081101561023e57600080fd5b5035610641565b61012c6004803603602081101561025b57600080fd5b50356106aa565b61017e6004803603602081101561027857600080fd5b50356001600160a01b0316610707565b6101746004803603604081101561029e57600080fd5b506001600160a01b0381351690602001351515610772565b610174600480360360808110156102cc57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561030757600080fd5b82018360208201111561031957600080fd5b8035906020019184600183028401116401000000008311171561033b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610841945050505050565b6100fb6004803603604081101561039257600080fd5b506001600160a01b038135811691602001351661089c565b6001600160e01b03191660009081526020819052604090205460ff1690565b60006103d4826108ca565b61041257604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610fa0602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b6000610439826106aa565b9050806001600160a01b0316836001600160a01b0316141561048f57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610ff56021913960400191505060405180910390fd5b336001600160a01b03821614806104ab57506104ab813361089c565b6104e957604051600160e51b62461bcd028152600401808060200182810382526038815260200180610f156038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6007545b90565b61055633826108e7565b61059457604051600160e51b62461bcd0281526004018080602001828103825260318152602001806110166031913960400191505060405180910390fd5b61059f83838361098e565b505050565b60006105af83610707565b82106105ef57604051600160e51b62461bcd02815260040180806020018281038252602b815260200180610e68602b913960400191505060405180910390fd5b6001600160a01b038316600090815260056020526040902080548390811061061357fe5b9060005260206000200154905092915050565b61059f83838360405180602001604052806000815250610841565b600061064b610545565b821061068b57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611047602c913960400191505060405180910390fd5b6007828154811061069857fe5b90600052602060002001549050919050565b6000818152600160205260408120546001600160a01b03168061070157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f776029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661075157604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610f4d602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610701906109ad565b6001600160a01b0382163314156107d35760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b61084c84848461054c565b610858848484846109b1565b61089657604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e936032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006108f2826108ca565b61093057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610ee9602c913960400191505060405180910390fd5b600061093b836106aa565b9050806001600160a01b0316846001600160a01b031614806109765750836001600160a01b031661096b846103c9565b6001600160a01b0316145b806109865750610986818561089c565b949350505050565b610999838383610aea565b6109a38382610c34565b61059f8282610d29565b5490565b60006109c5846001600160a01b0316610d67565b6109d157506001610986565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a4e578181015183820152602001610a36565b50505050905090810190601f168015610a7b5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a9d57600080fd5b505af1158015610ab1573d6000803e3d6000fd5b505050506040513d6020811015610ac757600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b826001600160a01b0316610afd826106aa565b6001600160a01b031614610b4557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610fcc6029913960400191505060405180910390fd5b6001600160a01b038216610b8d57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610ec56024913960400191505060405180910390fd5b610b9681610d6d565b6001600160a01b0383166000908152600360205260409020610bb790610daa565b6001600160a01b0382166000908152600360205260409020610bd890610dc1565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216600090815260056020526040812054610c5e90600163ffffffff610dca16565b600083815260066020526040902054909150808214610cf9576001600160a01b0384166000908152600560205260408120805484908110610c9b57fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b031681526020019081526020016000208381548110610cd957fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490610d22906000198301610e2a565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b3b151590565b6000818152600260205260409020546001600160a01b031615610da757600081815260026020526040902080546001600160a01b03191690555b50565b8054610dbd90600163ffffffff610dca16565b9055565b80546001019055565b600082821115610e245760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b81548183558181111561059f5760008381526020902061059f91810190830161054991905b80821115610e635760008155600101610e4f565b509056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a165627a7a7230582070db274482e0fb06803c6de5fb6dd67537ec0c4933dbacb0b2bf0eef9bbccb410029`
  2479  
  2480  // ERC721EnumerableFuncSigs maps the 4-byte function signature to its string representation.
  2481  // Deprecated: Use ERC721EnumerableMetaData.Sigs instead.
  2482  var ERC721EnumerableFuncSigs = ERC721EnumerableMetaData.Sigs
  2483  
  2484  // ERC721EnumerableBin is the compiled bytecode used for deploying new contracts.
  2485  // Deprecated: Use ERC721EnumerableMetaData.Bin instead.
  2486  var ERC721EnumerableBin = ERC721EnumerableMetaData.Bin
  2487  
  2488  // DeployERC721Enumerable deploys a new Klaytn contract, binding an instance of ERC721Enumerable to it.
  2489  func DeployERC721Enumerable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC721Enumerable, error) {
  2490  	parsed, err := ERC721EnumerableMetaData.GetAbi()
  2491  	if err != nil {
  2492  		return common.Address{}, nil, nil, err
  2493  	}
  2494  	if parsed == nil {
  2495  		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
  2496  	}
  2497  
  2498  	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC721EnumerableBin), backend)
  2499  	if err != nil {
  2500  		return common.Address{}, nil, nil, err
  2501  	}
  2502  	return address, tx, &ERC721Enumerable{ERC721EnumerableCaller: ERC721EnumerableCaller{contract: contract}, ERC721EnumerableTransactor: ERC721EnumerableTransactor{contract: contract}, ERC721EnumerableFilterer: ERC721EnumerableFilterer{contract: contract}}, nil
  2503  }
  2504  
  2505  // ERC721Enumerable is an auto generated Go binding around a Klaytn contract.
  2506  type ERC721Enumerable struct {
  2507  	ERC721EnumerableCaller     // Read-only binding to the contract
  2508  	ERC721EnumerableTransactor // Write-only binding to the contract
  2509  	ERC721EnumerableFilterer   // Log filterer for contract events
  2510  }
  2511  
  2512  // ERC721EnumerableCaller is an auto generated read-only Go binding around a Klaytn contract.
  2513  type ERC721EnumerableCaller struct {
  2514  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2515  }
  2516  
  2517  // ERC721EnumerableTransactor is an auto generated write-only Go binding around a Klaytn contract.
  2518  type ERC721EnumerableTransactor struct {
  2519  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2520  }
  2521  
  2522  // ERC721EnumerableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  2523  type ERC721EnumerableFilterer struct {
  2524  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2525  }
  2526  
  2527  // ERC721EnumerableSession is an auto generated Go binding around a Klaytn contract,
  2528  // with pre-set call and transact options.
  2529  type ERC721EnumerableSession struct {
  2530  	Contract     *ERC721Enumerable // Generic contract binding to set the session for
  2531  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  2532  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  2533  }
  2534  
  2535  // ERC721EnumerableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  2536  // with pre-set call options.
  2537  type ERC721EnumerableCallerSession struct {
  2538  	Contract *ERC721EnumerableCaller // Generic contract caller binding to set the session for
  2539  	CallOpts bind.CallOpts           // Call options to use throughout this session
  2540  }
  2541  
  2542  // ERC721EnumerableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  2543  // with pre-set transact options.
  2544  type ERC721EnumerableTransactorSession struct {
  2545  	Contract     *ERC721EnumerableTransactor // Generic contract transactor binding to set the session for
  2546  	TransactOpts bind.TransactOpts           // Transaction auth options to use throughout this session
  2547  }
  2548  
  2549  // ERC721EnumerableRaw is an auto generated low-level Go binding around a Klaytn contract.
  2550  type ERC721EnumerableRaw struct {
  2551  	Contract *ERC721Enumerable // Generic contract binding to access the raw methods on
  2552  }
  2553  
  2554  // ERC721EnumerableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  2555  type ERC721EnumerableCallerRaw struct {
  2556  	Contract *ERC721EnumerableCaller // Generic read-only contract binding to access the raw methods on
  2557  }
  2558  
  2559  // ERC721EnumerableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  2560  type ERC721EnumerableTransactorRaw struct {
  2561  	Contract *ERC721EnumerableTransactor // Generic write-only contract binding to access the raw methods on
  2562  }
  2563  
  2564  // NewERC721Enumerable creates a new instance of ERC721Enumerable, bound to a specific deployed contract.
  2565  func NewERC721Enumerable(address common.Address, backend bind.ContractBackend) (*ERC721Enumerable, error) {
  2566  	contract, err := bindERC721Enumerable(address, backend, backend, backend)
  2567  	if err != nil {
  2568  		return nil, err
  2569  	}
  2570  	return &ERC721Enumerable{ERC721EnumerableCaller: ERC721EnumerableCaller{contract: contract}, ERC721EnumerableTransactor: ERC721EnumerableTransactor{contract: contract}, ERC721EnumerableFilterer: ERC721EnumerableFilterer{contract: contract}}, nil
  2571  }
  2572  
  2573  // NewERC721EnumerableCaller creates a new read-only instance of ERC721Enumerable, bound to a specific deployed contract.
  2574  func NewERC721EnumerableCaller(address common.Address, caller bind.ContractCaller) (*ERC721EnumerableCaller, error) {
  2575  	contract, err := bindERC721Enumerable(address, caller, nil, nil)
  2576  	if err != nil {
  2577  		return nil, err
  2578  	}
  2579  	return &ERC721EnumerableCaller{contract: contract}, nil
  2580  }
  2581  
  2582  // NewERC721EnumerableTransactor creates a new write-only instance of ERC721Enumerable, bound to a specific deployed contract.
  2583  func NewERC721EnumerableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721EnumerableTransactor, error) {
  2584  	contract, err := bindERC721Enumerable(address, nil, transactor, nil)
  2585  	if err != nil {
  2586  		return nil, err
  2587  	}
  2588  	return &ERC721EnumerableTransactor{contract: contract}, nil
  2589  }
  2590  
  2591  // NewERC721EnumerableFilterer creates a new log filterer instance of ERC721Enumerable, bound to a specific deployed contract.
  2592  func NewERC721EnumerableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721EnumerableFilterer, error) {
  2593  	contract, err := bindERC721Enumerable(address, nil, nil, filterer)
  2594  	if err != nil {
  2595  		return nil, err
  2596  	}
  2597  	return &ERC721EnumerableFilterer{contract: contract}, nil
  2598  }
  2599  
  2600  // bindERC721Enumerable binds a generic wrapper to an already deployed contract.
  2601  func bindERC721Enumerable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  2602  	parsed, err := ERC721EnumerableMetaData.GetAbi()
  2603  	if err != nil {
  2604  		return nil, err
  2605  	}
  2606  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
  2607  }
  2608  
  2609  // Call invokes the (constant) contract method with params as input values and
  2610  // sets the output to result. The result type might be a single field for simple
  2611  // returns, a slice of interfaces for anonymous returns and a struct for named
  2612  // returns.
  2613  func (_ERC721Enumerable *ERC721EnumerableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  2614  	return _ERC721Enumerable.Contract.ERC721EnumerableCaller.contract.Call(opts, result, method, params...)
  2615  }
  2616  
  2617  // Transfer initiates a plain transaction to move funds to the contract, calling
  2618  // its default method if one is available.
  2619  func (_ERC721Enumerable *ERC721EnumerableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2620  	return _ERC721Enumerable.Contract.ERC721EnumerableTransactor.contract.Transfer(opts)
  2621  }
  2622  
  2623  // Transact invokes the (paid) contract method with params as input values.
  2624  func (_ERC721Enumerable *ERC721EnumerableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2625  	return _ERC721Enumerable.Contract.ERC721EnumerableTransactor.contract.Transact(opts, method, params...)
  2626  }
  2627  
  2628  // Call invokes the (constant) contract method with params as input values and
  2629  // sets the output to result. The result type might be a single field for simple
  2630  // returns, a slice of interfaces for anonymous returns and a struct for named
  2631  // returns.
  2632  func (_ERC721Enumerable *ERC721EnumerableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  2633  	return _ERC721Enumerable.Contract.contract.Call(opts, result, method, params...)
  2634  }
  2635  
  2636  // Transfer initiates a plain transaction to move funds to the contract, calling
  2637  // its default method if one is available.
  2638  func (_ERC721Enumerable *ERC721EnumerableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2639  	return _ERC721Enumerable.Contract.contract.Transfer(opts)
  2640  }
  2641  
  2642  // Transact invokes the (paid) contract method with params as input values.
  2643  func (_ERC721Enumerable *ERC721EnumerableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2644  	return _ERC721Enumerable.Contract.contract.Transact(opts, method, params...)
  2645  }
  2646  
  2647  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2648  //
  2649  // Solidity: function balanceOf(address owner) view returns(uint256)
  2650  func (_ERC721Enumerable *ERC721EnumerableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  2651  	var out []interface{}
  2652  	err := _ERC721Enumerable.contract.Call(opts, &out, "balanceOf", owner)
  2653  
  2654  	if err != nil {
  2655  		return *new(*big.Int), err
  2656  	}
  2657  
  2658  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  2659  
  2660  	return out0, err
  2661  
  2662  }
  2663  
  2664  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2665  //
  2666  // Solidity: function balanceOf(address owner) view returns(uint256)
  2667  func (_ERC721Enumerable *ERC721EnumerableSession) BalanceOf(owner common.Address) (*big.Int, error) {
  2668  	return _ERC721Enumerable.Contract.BalanceOf(&_ERC721Enumerable.CallOpts, owner)
  2669  }
  2670  
  2671  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2672  //
  2673  // Solidity: function balanceOf(address owner) view returns(uint256)
  2674  func (_ERC721Enumerable *ERC721EnumerableCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  2675  	return _ERC721Enumerable.Contract.BalanceOf(&_ERC721Enumerable.CallOpts, owner)
  2676  }
  2677  
  2678  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  2679  //
  2680  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  2681  func (_ERC721Enumerable *ERC721EnumerableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  2682  	var out []interface{}
  2683  	err := _ERC721Enumerable.contract.Call(opts, &out, "getApproved", tokenId)
  2684  
  2685  	if err != nil {
  2686  		return *new(common.Address), err
  2687  	}
  2688  
  2689  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  2690  
  2691  	return out0, err
  2692  
  2693  }
  2694  
  2695  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  2696  //
  2697  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  2698  func (_ERC721Enumerable *ERC721EnumerableSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  2699  	return _ERC721Enumerable.Contract.GetApproved(&_ERC721Enumerable.CallOpts, tokenId)
  2700  }
  2701  
  2702  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  2703  //
  2704  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  2705  func (_ERC721Enumerable *ERC721EnumerableCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  2706  	return _ERC721Enumerable.Contract.GetApproved(&_ERC721Enumerable.CallOpts, tokenId)
  2707  }
  2708  
  2709  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  2710  //
  2711  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  2712  func (_ERC721Enumerable *ERC721EnumerableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  2713  	var out []interface{}
  2714  	err := _ERC721Enumerable.contract.Call(opts, &out, "isApprovedForAll", owner, operator)
  2715  
  2716  	if err != nil {
  2717  		return *new(bool), err
  2718  	}
  2719  
  2720  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  2721  
  2722  	return out0, err
  2723  
  2724  }
  2725  
  2726  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  2727  //
  2728  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  2729  func (_ERC721Enumerable *ERC721EnumerableSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  2730  	return _ERC721Enumerable.Contract.IsApprovedForAll(&_ERC721Enumerable.CallOpts, owner, operator)
  2731  }
  2732  
  2733  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  2734  //
  2735  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  2736  func (_ERC721Enumerable *ERC721EnumerableCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  2737  	return _ERC721Enumerable.Contract.IsApprovedForAll(&_ERC721Enumerable.CallOpts, owner, operator)
  2738  }
  2739  
  2740  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  2741  //
  2742  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  2743  func (_ERC721Enumerable *ERC721EnumerableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  2744  	var out []interface{}
  2745  	err := _ERC721Enumerable.contract.Call(opts, &out, "ownerOf", tokenId)
  2746  
  2747  	if err != nil {
  2748  		return *new(common.Address), err
  2749  	}
  2750  
  2751  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  2752  
  2753  	return out0, err
  2754  
  2755  }
  2756  
  2757  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  2758  //
  2759  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  2760  func (_ERC721Enumerable *ERC721EnumerableSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  2761  	return _ERC721Enumerable.Contract.OwnerOf(&_ERC721Enumerable.CallOpts, tokenId)
  2762  }
  2763  
  2764  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  2765  //
  2766  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  2767  func (_ERC721Enumerable *ERC721EnumerableCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  2768  	return _ERC721Enumerable.Contract.OwnerOf(&_ERC721Enumerable.CallOpts, tokenId)
  2769  }
  2770  
  2771  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  2772  //
  2773  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  2774  func (_ERC721Enumerable *ERC721EnumerableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  2775  	var out []interface{}
  2776  	err := _ERC721Enumerable.contract.Call(opts, &out, "supportsInterface", interfaceId)
  2777  
  2778  	if err != nil {
  2779  		return *new(bool), err
  2780  	}
  2781  
  2782  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  2783  
  2784  	return out0, err
  2785  
  2786  }
  2787  
  2788  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  2789  //
  2790  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  2791  func (_ERC721Enumerable *ERC721EnumerableSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  2792  	return _ERC721Enumerable.Contract.SupportsInterface(&_ERC721Enumerable.CallOpts, interfaceId)
  2793  }
  2794  
  2795  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  2796  //
  2797  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  2798  func (_ERC721Enumerable *ERC721EnumerableCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  2799  	return _ERC721Enumerable.Contract.SupportsInterface(&_ERC721Enumerable.CallOpts, interfaceId)
  2800  }
  2801  
  2802  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  2803  //
  2804  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  2805  func (_ERC721Enumerable *ERC721EnumerableCaller) TokenByIndex(opts *bind.CallOpts, index *big.Int) (*big.Int, error) {
  2806  	var out []interface{}
  2807  	err := _ERC721Enumerable.contract.Call(opts, &out, "tokenByIndex", index)
  2808  
  2809  	if err != nil {
  2810  		return *new(*big.Int), err
  2811  	}
  2812  
  2813  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  2814  
  2815  	return out0, err
  2816  
  2817  }
  2818  
  2819  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  2820  //
  2821  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  2822  func (_ERC721Enumerable *ERC721EnumerableSession) TokenByIndex(index *big.Int) (*big.Int, error) {
  2823  	return _ERC721Enumerable.Contract.TokenByIndex(&_ERC721Enumerable.CallOpts, index)
  2824  }
  2825  
  2826  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  2827  //
  2828  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  2829  func (_ERC721Enumerable *ERC721EnumerableCallerSession) TokenByIndex(index *big.Int) (*big.Int, error) {
  2830  	return _ERC721Enumerable.Contract.TokenByIndex(&_ERC721Enumerable.CallOpts, index)
  2831  }
  2832  
  2833  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  2834  //
  2835  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
  2836  func (_ERC721Enumerable *ERC721EnumerableCaller) TokenOfOwnerByIndex(opts *bind.CallOpts, owner common.Address, index *big.Int) (*big.Int, error) {
  2837  	var out []interface{}
  2838  	err := _ERC721Enumerable.contract.Call(opts, &out, "tokenOfOwnerByIndex", owner, index)
  2839  
  2840  	if err != nil {
  2841  		return *new(*big.Int), err
  2842  	}
  2843  
  2844  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  2845  
  2846  	return out0, err
  2847  
  2848  }
  2849  
  2850  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  2851  //
  2852  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
  2853  func (_ERC721Enumerable *ERC721EnumerableSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) {
  2854  	return _ERC721Enumerable.Contract.TokenOfOwnerByIndex(&_ERC721Enumerable.CallOpts, owner, index)
  2855  }
  2856  
  2857  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  2858  //
  2859  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
  2860  func (_ERC721Enumerable *ERC721EnumerableCallerSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) {
  2861  	return _ERC721Enumerable.Contract.TokenOfOwnerByIndex(&_ERC721Enumerable.CallOpts, owner, index)
  2862  }
  2863  
  2864  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  2865  //
  2866  // Solidity: function totalSupply() view returns(uint256)
  2867  func (_ERC721Enumerable *ERC721EnumerableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  2868  	var out []interface{}
  2869  	err := _ERC721Enumerable.contract.Call(opts, &out, "totalSupply")
  2870  
  2871  	if err != nil {
  2872  		return *new(*big.Int), err
  2873  	}
  2874  
  2875  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  2876  
  2877  	return out0, err
  2878  
  2879  }
  2880  
  2881  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  2882  //
  2883  // Solidity: function totalSupply() view returns(uint256)
  2884  func (_ERC721Enumerable *ERC721EnumerableSession) TotalSupply() (*big.Int, error) {
  2885  	return _ERC721Enumerable.Contract.TotalSupply(&_ERC721Enumerable.CallOpts)
  2886  }
  2887  
  2888  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  2889  //
  2890  // Solidity: function totalSupply() view returns(uint256)
  2891  func (_ERC721Enumerable *ERC721EnumerableCallerSession) TotalSupply() (*big.Int, error) {
  2892  	return _ERC721Enumerable.Contract.TotalSupply(&_ERC721Enumerable.CallOpts)
  2893  }
  2894  
  2895  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  2896  //
  2897  // Solidity: function approve(address to, uint256 tokenId) returns()
  2898  func (_ERC721Enumerable *ERC721EnumerableTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2899  	return _ERC721Enumerable.contract.Transact(opts, "approve", to, tokenId)
  2900  }
  2901  
  2902  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  2903  //
  2904  // Solidity: function approve(address to, uint256 tokenId) returns()
  2905  func (_ERC721Enumerable *ERC721EnumerableSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2906  	return _ERC721Enumerable.Contract.Approve(&_ERC721Enumerable.TransactOpts, to, tokenId)
  2907  }
  2908  
  2909  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  2910  //
  2911  // Solidity: function approve(address to, uint256 tokenId) returns()
  2912  func (_ERC721Enumerable *ERC721EnumerableTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2913  	return _ERC721Enumerable.Contract.Approve(&_ERC721Enumerable.TransactOpts, to, tokenId)
  2914  }
  2915  
  2916  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  2917  //
  2918  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  2919  func (_ERC721Enumerable *ERC721EnumerableTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2920  	return _ERC721Enumerable.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  2921  }
  2922  
  2923  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  2924  //
  2925  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  2926  func (_ERC721Enumerable *ERC721EnumerableSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2927  	return _ERC721Enumerable.Contract.SafeTransferFrom(&_ERC721Enumerable.TransactOpts, from, to, tokenId)
  2928  }
  2929  
  2930  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  2931  //
  2932  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  2933  func (_ERC721Enumerable *ERC721EnumerableTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2934  	return _ERC721Enumerable.Contract.SafeTransferFrom(&_ERC721Enumerable.TransactOpts, from, to, tokenId)
  2935  }
  2936  
  2937  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  2938  //
  2939  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  2940  func (_ERC721Enumerable *ERC721EnumerableTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  2941  	return _ERC721Enumerable.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
  2942  }
  2943  
  2944  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  2945  //
  2946  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  2947  func (_ERC721Enumerable *ERC721EnumerableSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  2948  	return _ERC721Enumerable.Contract.SafeTransferFrom0(&_ERC721Enumerable.TransactOpts, from, to, tokenId, _data)
  2949  }
  2950  
  2951  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  2952  //
  2953  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  2954  func (_ERC721Enumerable *ERC721EnumerableTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  2955  	return _ERC721Enumerable.Contract.SafeTransferFrom0(&_ERC721Enumerable.TransactOpts, from, to, tokenId, _data)
  2956  }
  2957  
  2958  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  2959  //
  2960  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  2961  func (_ERC721Enumerable *ERC721EnumerableTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
  2962  	return _ERC721Enumerable.contract.Transact(opts, "setApprovalForAll", to, approved)
  2963  }
  2964  
  2965  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  2966  //
  2967  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  2968  func (_ERC721Enumerable *ERC721EnumerableSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  2969  	return _ERC721Enumerable.Contract.SetApprovalForAll(&_ERC721Enumerable.TransactOpts, to, approved)
  2970  }
  2971  
  2972  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  2973  //
  2974  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  2975  func (_ERC721Enumerable *ERC721EnumerableTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  2976  	return _ERC721Enumerable.Contract.SetApprovalForAll(&_ERC721Enumerable.TransactOpts, to, approved)
  2977  }
  2978  
  2979  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  2980  //
  2981  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  2982  func (_ERC721Enumerable *ERC721EnumerableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2983  	return _ERC721Enumerable.contract.Transact(opts, "transferFrom", from, to, tokenId)
  2984  }
  2985  
  2986  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  2987  //
  2988  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  2989  func (_ERC721Enumerable *ERC721EnumerableSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2990  	return _ERC721Enumerable.Contract.TransferFrom(&_ERC721Enumerable.TransactOpts, from, to, tokenId)
  2991  }
  2992  
  2993  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  2994  //
  2995  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  2996  func (_ERC721Enumerable *ERC721EnumerableTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2997  	return _ERC721Enumerable.Contract.TransferFrom(&_ERC721Enumerable.TransactOpts, from, to, tokenId)
  2998  }
  2999  
  3000  // ERC721EnumerableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721Enumerable contract.
  3001  type ERC721EnumerableApprovalIterator struct {
  3002  	Event *ERC721EnumerableApproval // Event containing the contract specifics and raw log
  3003  
  3004  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3005  	event    string              // Event name to use for unpacking event data
  3006  
  3007  	logs chan types.Log      // Log channel receiving the found contract events
  3008  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  3009  	done bool                // Whether the subscription completed delivering logs
  3010  	fail error               // Occurred error to stop iteration
  3011  }
  3012  
  3013  // Next advances the iterator to the subsequent event, returning whether there
  3014  // are any more events found. In case of a retrieval or parsing error, false is
  3015  // returned and Error() can be queried for the exact failure.
  3016  func (it *ERC721EnumerableApprovalIterator) Next() bool {
  3017  	// If the iterator failed, stop iterating
  3018  	if it.fail != nil {
  3019  		return false
  3020  	}
  3021  	// If the iterator completed, deliver directly whatever's available
  3022  	if it.done {
  3023  		select {
  3024  		case log := <-it.logs:
  3025  			it.Event = new(ERC721EnumerableApproval)
  3026  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3027  				it.fail = err
  3028  				return false
  3029  			}
  3030  			it.Event.Raw = log
  3031  			return true
  3032  
  3033  		default:
  3034  			return false
  3035  		}
  3036  	}
  3037  	// Iterator still in progress, wait for either a data or an error event
  3038  	select {
  3039  	case log := <-it.logs:
  3040  		it.Event = new(ERC721EnumerableApproval)
  3041  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3042  			it.fail = err
  3043  			return false
  3044  		}
  3045  		it.Event.Raw = log
  3046  		return true
  3047  
  3048  	case err := <-it.sub.Err():
  3049  		it.done = true
  3050  		it.fail = err
  3051  		return it.Next()
  3052  	}
  3053  }
  3054  
  3055  // Error returns any retrieval or parsing error occurred during filtering.
  3056  func (it *ERC721EnumerableApprovalIterator) Error() error {
  3057  	return it.fail
  3058  }
  3059  
  3060  // Close terminates the iteration process, releasing any pending underlying
  3061  // resources.
  3062  func (it *ERC721EnumerableApprovalIterator) Close() error {
  3063  	it.sub.Unsubscribe()
  3064  	return nil
  3065  }
  3066  
  3067  // ERC721EnumerableApproval represents a Approval event raised by the ERC721Enumerable contract.
  3068  type ERC721EnumerableApproval struct {
  3069  	Owner    common.Address
  3070  	Approved common.Address
  3071  	TokenId  *big.Int
  3072  	Raw      types.Log // Blockchain specific contextual infos
  3073  }
  3074  
  3075  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3076  //
  3077  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  3078  func (_ERC721Enumerable *ERC721EnumerableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721EnumerableApprovalIterator, error) {
  3079  
  3080  	var ownerRule []interface{}
  3081  	for _, ownerItem := range owner {
  3082  		ownerRule = append(ownerRule, ownerItem)
  3083  	}
  3084  	var approvedRule []interface{}
  3085  	for _, approvedItem := range approved {
  3086  		approvedRule = append(approvedRule, approvedItem)
  3087  	}
  3088  	var tokenIdRule []interface{}
  3089  	for _, tokenIdItem := range tokenId {
  3090  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  3091  	}
  3092  
  3093  	logs, sub, err := _ERC721Enumerable.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  3094  	if err != nil {
  3095  		return nil, err
  3096  	}
  3097  	return &ERC721EnumerableApprovalIterator{contract: _ERC721Enumerable.contract, event: "Approval", logs: logs, sub: sub}, nil
  3098  }
  3099  
  3100  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3101  //
  3102  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  3103  func (_ERC721Enumerable *ERC721EnumerableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721EnumerableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  3104  
  3105  	var ownerRule []interface{}
  3106  	for _, ownerItem := range owner {
  3107  		ownerRule = append(ownerRule, ownerItem)
  3108  	}
  3109  	var approvedRule []interface{}
  3110  	for _, approvedItem := range approved {
  3111  		approvedRule = append(approvedRule, approvedItem)
  3112  	}
  3113  	var tokenIdRule []interface{}
  3114  	for _, tokenIdItem := range tokenId {
  3115  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  3116  	}
  3117  
  3118  	logs, sub, err := _ERC721Enumerable.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  3119  	if err != nil {
  3120  		return nil, err
  3121  	}
  3122  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3123  		defer sub.Unsubscribe()
  3124  		for {
  3125  			select {
  3126  			case log := <-logs:
  3127  				// New log arrived, parse the event and forward to the user
  3128  				event := new(ERC721EnumerableApproval)
  3129  				if err := _ERC721Enumerable.contract.UnpackLog(event, "Approval", log); err != nil {
  3130  					return err
  3131  				}
  3132  				event.Raw = log
  3133  
  3134  				select {
  3135  				case sink <- event:
  3136  				case err := <-sub.Err():
  3137  					return err
  3138  				case <-quit:
  3139  					return nil
  3140  				}
  3141  			case err := <-sub.Err():
  3142  				return err
  3143  			case <-quit:
  3144  				return nil
  3145  			}
  3146  		}
  3147  	}), nil
  3148  }
  3149  
  3150  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3151  //
  3152  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  3153  func (_ERC721Enumerable *ERC721EnumerableFilterer) ParseApproval(log types.Log) (*ERC721EnumerableApproval, error) {
  3154  	event := new(ERC721EnumerableApproval)
  3155  	if err := _ERC721Enumerable.contract.UnpackLog(event, "Approval", log); err != nil {
  3156  		return nil, err
  3157  	}
  3158  	return event, nil
  3159  }
  3160  
  3161  // ERC721EnumerableApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721Enumerable contract.
  3162  type ERC721EnumerableApprovalForAllIterator struct {
  3163  	Event *ERC721EnumerableApprovalForAll // Event containing the contract specifics and raw log
  3164  
  3165  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3166  	event    string              // Event name to use for unpacking event data
  3167  
  3168  	logs chan types.Log      // Log channel receiving the found contract events
  3169  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  3170  	done bool                // Whether the subscription completed delivering logs
  3171  	fail error               // Occurred error to stop iteration
  3172  }
  3173  
  3174  // Next advances the iterator to the subsequent event, returning whether there
  3175  // are any more events found. In case of a retrieval or parsing error, false is
  3176  // returned and Error() can be queried for the exact failure.
  3177  func (it *ERC721EnumerableApprovalForAllIterator) Next() bool {
  3178  	// If the iterator failed, stop iterating
  3179  	if it.fail != nil {
  3180  		return false
  3181  	}
  3182  	// If the iterator completed, deliver directly whatever's available
  3183  	if it.done {
  3184  		select {
  3185  		case log := <-it.logs:
  3186  			it.Event = new(ERC721EnumerableApprovalForAll)
  3187  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3188  				it.fail = err
  3189  				return false
  3190  			}
  3191  			it.Event.Raw = log
  3192  			return true
  3193  
  3194  		default:
  3195  			return false
  3196  		}
  3197  	}
  3198  	// Iterator still in progress, wait for either a data or an error event
  3199  	select {
  3200  	case log := <-it.logs:
  3201  		it.Event = new(ERC721EnumerableApprovalForAll)
  3202  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3203  			it.fail = err
  3204  			return false
  3205  		}
  3206  		it.Event.Raw = log
  3207  		return true
  3208  
  3209  	case err := <-it.sub.Err():
  3210  		it.done = true
  3211  		it.fail = err
  3212  		return it.Next()
  3213  	}
  3214  }
  3215  
  3216  // Error returns any retrieval or parsing error occurred during filtering.
  3217  func (it *ERC721EnumerableApprovalForAllIterator) Error() error {
  3218  	return it.fail
  3219  }
  3220  
  3221  // Close terminates the iteration process, releasing any pending underlying
  3222  // resources.
  3223  func (it *ERC721EnumerableApprovalForAllIterator) Close() error {
  3224  	it.sub.Unsubscribe()
  3225  	return nil
  3226  }
  3227  
  3228  // ERC721EnumerableApprovalForAll represents a ApprovalForAll event raised by the ERC721Enumerable contract.
  3229  type ERC721EnumerableApprovalForAll struct {
  3230  	Owner    common.Address
  3231  	Operator common.Address
  3232  	Approved bool
  3233  	Raw      types.Log // Blockchain specific contextual infos
  3234  }
  3235  
  3236  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  3237  //
  3238  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  3239  func (_ERC721Enumerable *ERC721EnumerableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721EnumerableApprovalForAllIterator, error) {
  3240  
  3241  	var ownerRule []interface{}
  3242  	for _, ownerItem := range owner {
  3243  		ownerRule = append(ownerRule, ownerItem)
  3244  	}
  3245  	var operatorRule []interface{}
  3246  	for _, operatorItem := range operator {
  3247  		operatorRule = append(operatorRule, operatorItem)
  3248  	}
  3249  
  3250  	logs, sub, err := _ERC721Enumerable.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  3251  	if err != nil {
  3252  		return nil, err
  3253  	}
  3254  	return &ERC721EnumerableApprovalForAllIterator{contract: _ERC721Enumerable.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  3255  }
  3256  
  3257  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  3258  //
  3259  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  3260  func (_ERC721Enumerable *ERC721EnumerableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721EnumerableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  3261  
  3262  	var ownerRule []interface{}
  3263  	for _, ownerItem := range owner {
  3264  		ownerRule = append(ownerRule, ownerItem)
  3265  	}
  3266  	var operatorRule []interface{}
  3267  	for _, operatorItem := range operator {
  3268  		operatorRule = append(operatorRule, operatorItem)
  3269  	}
  3270  
  3271  	logs, sub, err := _ERC721Enumerable.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  3272  	if err != nil {
  3273  		return nil, err
  3274  	}
  3275  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3276  		defer sub.Unsubscribe()
  3277  		for {
  3278  			select {
  3279  			case log := <-logs:
  3280  				// New log arrived, parse the event and forward to the user
  3281  				event := new(ERC721EnumerableApprovalForAll)
  3282  				if err := _ERC721Enumerable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  3283  					return err
  3284  				}
  3285  				event.Raw = log
  3286  
  3287  				select {
  3288  				case sink <- event:
  3289  				case err := <-sub.Err():
  3290  					return err
  3291  				case <-quit:
  3292  					return nil
  3293  				}
  3294  			case err := <-sub.Err():
  3295  				return err
  3296  			case <-quit:
  3297  				return nil
  3298  			}
  3299  		}
  3300  	}), nil
  3301  }
  3302  
  3303  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  3304  //
  3305  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  3306  func (_ERC721Enumerable *ERC721EnumerableFilterer) ParseApprovalForAll(log types.Log) (*ERC721EnumerableApprovalForAll, error) {
  3307  	event := new(ERC721EnumerableApprovalForAll)
  3308  	if err := _ERC721Enumerable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  3309  		return nil, err
  3310  	}
  3311  	return event, nil
  3312  }
  3313  
  3314  // ERC721EnumerableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721Enumerable contract.
  3315  type ERC721EnumerableTransferIterator struct {
  3316  	Event *ERC721EnumerableTransfer // Event containing the contract specifics and raw log
  3317  
  3318  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3319  	event    string              // Event name to use for unpacking event data
  3320  
  3321  	logs chan types.Log      // Log channel receiving the found contract events
  3322  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  3323  	done bool                // Whether the subscription completed delivering logs
  3324  	fail error               // Occurred error to stop iteration
  3325  }
  3326  
  3327  // Next advances the iterator to the subsequent event, returning whether there
  3328  // are any more events found. In case of a retrieval or parsing error, false is
  3329  // returned and Error() can be queried for the exact failure.
  3330  func (it *ERC721EnumerableTransferIterator) Next() bool {
  3331  	// If the iterator failed, stop iterating
  3332  	if it.fail != nil {
  3333  		return false
  3334  	}
  3335  	// If the iterator completed, deliver directly whatever's available
  3336  	if it.done {
  3337  		select {
  3338  		case log := <-it.logs:
  3339  			it.Event = new(ERC721EnumerableTransfer)
  3340  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3341  				it.fail = err
  3342  				return false
  3343  			}
  3344  			it.Event.Raw = log
  3345  			return true
  3346  
  3347  		default:
  3348  			return false
  3349  		}
  3350  	}
  3351  	// Iterator still in progress, wait for either a data or an error event
  3352  	select {
  3353  	case log := <-it.logs:
  3354  		it.Event = new(ERC721EnumerableTransfer)
  3355  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3356  			it.fail = err
  3357  			return false
  3358  		}
  3359  		it.Event.Raw = log
  3360  		return true
  3361  
  3362  	case err := <-it.sub.Err():
  3363  		it.done = true
  3364  		it.fail = err
  3365  		return it.Next()
  3366  	}
  3367  }
  3368  
  3369  // Error returns any retrieval or parsing error occurred during filtering.
  3370  func (it *ERC721EnumerableTransferIterator) Error() error {
  3371  	return it.fail
  3372  }
  3373  
  3374  // Close terminates the iteration process, releasing any pending underlying
  3375  // resources.
  3376  func (it *ERC721EnumerableTransferIterator) Close() error {
  3377  	it.sub.Unsubscribe()
  3378  	return nil
  3379  }
  3380  
  3381  // ERC721EnumerableTransfer represents a Transfer event raised by the ERC721Enumerable contract.
  3382  type ERC721EnumerableTransfer struct {
  3383  	From    common.Address
  3384  	To      common.Address
  3385  	TokenId *big.Int
  3386  	Raw     types.Log // Blockchain specific contextual infos
  3387  }
  3388  
  3389  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3390  //
  3391  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  3392  func (_ERC721Enumerable *ERC721EnumerableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721EnumerableTransferIterator, error) {
  3393  
  3394  	var fromRule []interface{}
  3395  	for _, fromItem := range from {
  3396  		fromRule = append(fromRule, fromItem)
  3397  	}
  3398  	var toRule []interface{}
  3399  	for _, toItem := range to {
  3400  		toRule = append(toRule, toItem)
  3401  	}
  3402  	var tokenIdRule []interface{}
  3403  	for _, tokenIdItem := range tokenId {
  3404  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  3405  	}
  3406  
  3407  	logs, sub, err := _ERC721Enumerable.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  3408  	if err != nil {
  3409  		return nil, err
  3410  	}
  3411  	return &ERC721EnumerableTransferIterator{contract: _ERC721Enumerable.contract, event: "Transfer", logs: logs, sub: sub}, nil
  3412  }
  3413  
  3414  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3415  //
  3416  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  3417  func (_ERC721Enumerable *ERC721EnumerableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721EnumerableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  3418  
  3419  	var fromRule []interface{}
  3420  	for _, fromItem := range from {
  3421  		fromRule = append(fromRule, fromItem)
  3422  	}
  3423  	var toRule []interface{}
  3424  	for _, toItem := range to {
  3425  		toRule = append(toRule, toItem)
  3426  	}
  3427  	var tokenIdRule []interface{}
  3428  	for _, tokenIdItem := range tokenId {
  3429  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  3430  	}
  3431  
  3432  	logs, sub, err := _ERC721Enumerable.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  3433  	if err != nil {
  3434  		return nil, err
  3435  	}
  3436  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3437  		defer sub.Unsubscribe()
  3438  		for {
  3439  			select {
  3440  			case log := <-logs:
  3441  				// New log arrived, parse the event and forward to the user
  3442  				event := new(ERC721EnumerableTransfer)
  3443  				if err := _ERC721Enumerable.contract.UnpackLog(event, "Transfer", log); err != nil {
  3444  					return err
  3445  				}
  3446  				event.Raw = log
  3447  
  3448  				select {
  3449  				case sink <- event:
  3450  				case err := <-sub.Err():
  3451  					return err
  3452  				case <-quit:
  3453  					return nil
  3454  				}
  3455  			case err := <-sub.Err():
  3456  				return err
  3457  			case <-quit:
  3458  				return nil
  3459  			}
  3460  		}
  3461  	}), nil
  3462  }
  3463  
  3464  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3465  //
  3466  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  3467  func (_ERC721Enumerable *ERC721EnumerableFilterer) ParseTransfer(log types.Log) (*ERC721EnumerableTransfer, error) {
  3468  	event := new(ERC721EnumerableTransfer)
  3469  	if err := _ERC721Enumerable.contract.UnpackLog(event, "Transfer", log); err != nil {
  3470  		return nil, err
  3471  	}
  3472  	return event, nil
  3473  }
  3474  
  3475  // ERC721FullMetaData contains all meta data concerning the ERC721Full contract.
  3476  var ERC721FullMetaData = &bind.MetaData{
  3477  	ABI: "[{\"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\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"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\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"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\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"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\"}]",
  3478  	Sigs: map[string]string{
  3479  		"095ea7b3": "approve(address,uint256)",
  3480  		"70a08231": "balanceOf(address)",
  3481  		"081812fc": "getApproved(uint256)",
  3482  		"e985e9c5": "isApprovedForAll(address,address)",
  3483  		"06fdde03": "name()",
  3484  		"6352211e": "ownerOf(uint256)",
  3485  		"42842e0e": "safeTransferFrom(address,address,uint256)",
  3486  		"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  3487  		"a22cb465": "setApprovalForAll(address,bool)",
  3488  		"01ffc9a7": "supportsInterface(bytes4)",
  3489  		"95d89b41": "symbol()",
  3490  		"4f6ccce7": "tokenByIndex(uint256)",
  3491  		"2f745c59": "tokenOfOwnerByIndex(address,uint256)",
  3492  		"c87b56dd": "tokenURI(uint256)",
  3493  		"18160ddd": "totalSupply()",
  3494  		"23b872dd": "transferFrom(address,address,uint256)",
  3495  	},
  3496  	Bin: "0x60806040523480156200001157600080fd5b506040516200166e3803806200166e833981018060405260408110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b820160208101848111156200006457600080fd5b81516401000000008111828201871017156200007f57600080fd5b505092919060200180516401000000008111156200009c57600080fd5b82016020810184811115620000b057600080fd5b8151640100000000811182820187101715620000cb57600080fd5b50509291905050508181620000ed6301ffc9a760e01b6200016b60201b60201c565b620001056380ac58cd60e01b6200016b60201b60201c565b6200011d63780e9d6360e01b6200016b60201b60201c565b8151620001329060099060208501906200023a565b5080516200014890600a9060208401906200023a565b5062000161635b5e139f60e01b6200016b60201b60201c565b50505050620002df565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620001fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200027d57805160ff1916838001178555620002ad565b82800160010185558215620002ad579182015b82811115620002ad57825182559160200191906001019062000290565b50620002bb929150620002bf565b5090565b620002dc91905b80821115620002bb5760008155600101620002c6565b90565b61137f80620002ef6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80634f6ccce711610097578063a22cb46511610066578063a22cb4651461033e578063b88d4fde1461036c578063c87b56dd14610432578063e985e9c51461044f57610100565b80634f6ccce7146102d65780636352211e146102f357806370a082311461031057806395d89b411461033657610100565b806318160ddd116100d357806318160ddd1461022457806323b872dd1461023e5780632f745c591461027457806342842e0e146102a057610100565b806301ffc9a71461010557806306fdde0314610140578063081812fc146101bd578063095ea7b3146101f6575b600080fd5b61012c6004803603602081101561011b57600080fd5b50356001600160e01b03191661047d565b604080519115158252519081900360200190f35b61014861049c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018257818101518382015260200161016a565b50505050905090810190601f1680156101af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360208110156101d357600080fd5b5035610533565b604080516001600160a01b039092168252519081900360200190f35b6102226004803603604081101561020c57600080fd5b506001600160a01b038135169060200135610598565b005b61022c6106af565b60408051918252519081900360200190f35b6102226004803603606081101561025457600080fd5b506001600160a01b038135811691602081013590911690604001356106b5565b61022c6004803603604081101561028a57600080fd5b506001600160a01b03813516906020013561070d565b610222600480360360608110156102b657600080fd5b506001600160a01b0381358116916020810135909116906040013561078f565b61022c600480360360208110156102ec57600080fd5b50356107aa565b6101da6004803603602081101561030957600080fd5b5035610813565b61022c6004803603602081101561032657600080fd5b50356001600160a01b0316610870565b6101486108db565b6102226004803603604081101561035457600080fd5b506001600160a01b038135169060200135151561093c565b6102226004803603608081101561038257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103bd57600080fd5b8201836020820111156103cf57600080fd5b803590602001918460018302840111640100000000831117156103f157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a0b945050505050565b6101486004803603602081101561044857600080fd5b5035610a66565b61012c6004803603604081101561046557600080fd5b506001600160a01b0381358116916020013516610b4e565b6001600160e01b03191660009081526020819052604090205460ff1690565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105285780601f106104fd57610100808354040283529160200191610528565b820191906000526020600020905b81548152906001019060200180831161050b57829003601f168201915b505050505090505b90565b600061053e82610b7c565b61057c57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611252602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105a382610813565b9050806001600160a01b0316836001600160a01b031614156105f957604051600160e51b62461bcd0281526004018080602001828103825260218152602001806112d66021913960400191505060405180910390fd5b336001600160a01b038216148061061557506106158133610b4e565b61065357604051600160e51b62461bcd0281526004018080602001828103825260388152602001806111c76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60075490565b6106bf3382610b99565b6106fd57604051600160e51b62461bcd0281526004018080602001828103825260318152602001806112f76031913960400191505060405180910390fd5b610708838383610c40565b505050565b600061071883610870565b821061075857604051600160e51b62461bcd02815260040180806020018281038252602b81526020018061111a602b913960400191505060405180910390fd5b6001600160a01b038316600090815260056020526040902080548390811061077c57fe5b9060005260206000200154905092915050565b61070883838360405180602001604052806000815250610a0b565b60006107b46106af565b82106107f457604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611328602c913960400191505060405180910390fd5b6007828154811061080157fe5b90600052602060002001549050919050565b6000818152600160205260408120546001600160a01b03168061086a57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806112296029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166108ba57604051600160e51b62461bcd02815260040180806020018281038252602a8152602001806111ff602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061086a90610c5f565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105285780601f106104fd57610100808354040283529160200191610528565b6001600160a01b03821633141561099d5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b610a168484846106b5565b610a2284848484610c63565b610a6057604051600160e51b62461bcd0281526004018080602001828103825260328152602001806111456032913960400191505060405180910390fd5b50505050565b6060610a7182610b7c565b610aaf57604051600160e51b62461bcd02815260040180806020018281038252602f8152602001806112a7602f913960400191505060405180910390fd5b6000828152600b602090815260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610b425780601f10610b1757610100808354040283529160200191610b42565b820191906000526020600020905b815481529060010190602001808311610b2557829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610ba482610b7c565b610be257604051600160e51b62461bcd02815260040180806020018281038252602c81526020018061119b602c913960400191505060405180910390fd5b6000610bed83610813565b9050806001600160a01b0316846001600160a01b03161480610c285750836001600160a01b0316610c1d84610533565b6001600160a01b0316145b80610c385750610c388185610b4e565b949350505050565b610c4b838383610d9c565b610c558382610ee6565b6107088282610fdb565b5490565b6000610c77846001600160a01b0316611019565b610c8357506001610c38565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610d00578181015183820152602001610ce8565b50505050905090810190601f168015610d2d5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d4f57600080fd5b505af1158015610d63573d6000803e3d6000fd5b505050506040513d6020811015610d7957600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b826001600160a01b0316610daf82610813565b6001600160a01b031614610df757604051600160e51b62461bcd02815260040180806020018281038252602981526020018061127e6029913960400191505060405180910390fd5b6001600160a01b038216610e3f57604051600160e51b62461bcd0281526004018080602001828103825260248152602001806111776024913960400191505060405180910390fd5b610e488161101f565b6001600160a01b0383166000908152600360205260409020610e699061105c565b6001600160a01b0382166000908152600360205260409020610e8a90611073565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216600090815260056020526040812054610f1090600163ffffffff61107c16565b600083815260066020526040902054909150808214610fab576001600160a01b0384166000908152600560205260408120805484908110610f4d57fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b031681526020019081526020016000208381548110610f8b57fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490610fd49060001983016110dc565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b3b151590565b6000818152600260205260409020546001600160a01b03161561105957600081815260026020526040902080546001600160a01b03191690555b50565b805461106f90600163ffffffff61107c16565b9055565b80546001019055565b6000828211156110d65760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b8154818355818111156107085760008381526020902061070891810190830161053091905b808211156111155760008155600101611101565b509056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a165627a7a72305820e0a7c5088bc979bfe17da327dbe7e4a99d0954d16ce72a5902286fea461b37370029",
  3497  }
  3498  
  3499  // ERC721FullABI is the input ABI used to generate the binding from.
  3500  // Deprecated: Use ERC721FullMetaData.ABI instead.
  3501  var ERC721FullABI = ERC721FullMetaData.ABI
  3502  
  3503  // ERC721FullBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  3504  const ERC721FullBinRuntime = `608060405234801561001057600080fd5b50600436106101005760003560e01c80634f6ccce711610097578063a22cb46511610066578063a22cb4651461033e578063b88d4fde1461036c578063c87b56dd14610432578063e985e9c51461044f57610100565b80634f6ccce7146102d65780636352211e146102f357806370a082311461031057806395d89b411461033657610100565b806318160ddd116100d357806318160ddd1461022457806323b872dd1461023e5780632f745c591461027457806342842e0e146102a057610100565b806301ffc9a71461010557806306fdde0314610140578063081812fc146101bd578063095ea7b3146101f6575b600080fd5b61012c6004803603602081101561011b57600080fd5b50356001600160e01b03191661047d565b604080519115158252519081900360200190f35b61014861049c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018257818101518382015260200161016a565b50505050905090810190601f1680156101af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360208110156101d357600080fd5b5035610533565b604080516001600160a01b039092168252519081900360200190f35b6102226004803603604081101561020c57600080fd5b506001600160a01b038135169060200135610598565b005b61022c6106af565b60408051918252519081900360200190f35b6102226004803603606081101561025457600080fd5b506001600160a01b038135811691602081013590911690604001356106b5565b61022c6004803603604081101561028a57600080fd5b506001600160a01b03813516906020013561070d565b610222600480360360608110156102b657600080fd5b506001600160a01b0381358116916020810135909116906040013561078f565b61022c600480360360208110156102ec57600080fd5b50356107aa565b6101da6004803603602081101561030957600080fd5b5035610813565b61022c6004803603602081101561032657600080fd5b50356001600160a01b0316610870565b6101486108db565b6102226004803603604081101561035457600080fd5b506001600160a01b038135169060200135151561093c565b6102226004803603608081101561038257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103bd57600080fd5b8201836020820111156103cf57600080fd5b803590602001918460018302840111640100000000831117156103f157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a0b945050505050565b6101486004803603602081101561044857600080fd5b5035610a66565b61012c6004803603604081101561046557600080fd5b506001600160a01b0381358116916020013516610b4e565b6001600160e01b03191660009081526020819052604090205460ff1690565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105285780601f106104fd57610100808354040283529160200191610528565b820191906000526020600020905b81548152906001019060200180831161050b57829003601f168201915b505050505090505b90565b600061053e82610b7c565b61057c57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611252602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105a382610813565b9050806001600160a01b0316836001600160a01b031614156105f957604051600160e51b62461bcd0281526004018080602001828103825260218152602001806112d66021913960400191505060405180910390fd5b336001600160a01b038216148061061557506106158133610b4e565b61065357604051600160e51b62461bcd0281526004018080602001828103825260388152602001806111c76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60075490565b6106bf3382610b99565b6106fd57604051600160e51b62461bcd0281526004018080602001828103825260318152602001806112f76031913960400191505060405180910390fd5b610708838383610c40565b505050565b600061071883610870565b821061075857604051600160e51b62461bcd02815260040180806020018281038252602b81526020018061111a602b913960400191505060405180910390fd5b6001600160a01b038316600090815260056020526040902080548390811061077c57fe5b9060005260206000200154905092915050565b61070883838360405180602001604052806000815250610a0b565b60006107b46106af565b82106107f457604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611328602c913960400191505060405180910390fd5b6007828154811061080157fe5b90600052602060002001549050919050565b6000818152600160205260408120546001600160a01b03168061086a57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806112296029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166108ba57604051600160e51b62461bcd02815260040180806020018281038252602a8152602001806111ff602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061086a90610c5f565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105285780601f106104fd57610100808354040283529160200191610528565b6001600160a01b03821633141561099d5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b610a168484846106b5565b610a2284848484610c63565b610a6057604051600160e51b62461bcd0281526004018080602001828103825260328152602001806111456032913960400191505060405180910390fd5b50505050565b6060610a7182610b7c565b610aaf57604051600160e51b62461bcd02815260040180806020018281038252602f8152602001806112a7602f913960400191505060405180910390fd5b6000828152600b602090815260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610b425780601f10610b1757610100808354040283529160200191610b42565b820191906000526020600020905b815481529060010190602001808311610b2557829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610ba482610b7c565b610be257604051600160e51b62461bcd02815260040180806020018281038252602c81526020018061119b602c913960400191505060405180910390fd5b6000610bed83610813565b9050806001600160a01b0316846001600160a01b03161480610c285750836001600160a01b0316610c1d84610533565b6001600160a01b0316145b80610c385750610c388185610b4e565b949350505050565b610c4b838383610d9c565b610c558382610ee6565b6107088282610fdb565b5490565b6000610c77846001600160a01b0316611019565b610c8357506001610c38565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610d00578181015183820152602001610ce8565b50505050905090810190601f168015610d2d5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d4f57600080fd5b505af1158015610d63573d6000803e3d6000fd5b505050506040513d6020811015610d7957600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b826001600160a01b0316610daf82610813565b6001600160a01b031614610df757604051600160e51b62461bcd02815260040180806020018281038252602981526020018061127e6029913960400191505060405180910390fd5b6001600160a01b038216610e3f57604051600160e51b62461bcd0281526004018080602001828103825260248152602001806111776024913960400191505060405180910390fd5b610e488161101f565b6001600160a01b0383166000908152600360205260409020610e699061105c565b6001600160a01b0382166000908152600360205260409020610e8a90611073565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216600090815260056020526040812054610f1090600163ffffffff61107c16565b600083815260066020526040902054909150808214610fab576001600160a01b0384166000908152600560205260408120805484908110610f4d57fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b031681526020019081526020016000208381548110610f8b57fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490610fd49060001983016110dc565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b3b151590565b6000818152600260205260409020546001600160a01b03161561105957600081815260026020526040902080546001600160a01b03191690555b50565b805461106f90600163ffffffff61107c16565b9055565b80546001019055565b6000828211156110d65760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b8154818355818111156107085760008381526020902061070891810190830161053091905b808211156111155760008155600101611101565b509056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a165627a7a72305820e0a7c5088bc979bfe17da327dbe7e4a99d0954d16ce72a5902286fea461b37370029`
  3505  
  3506  // ERC721FullFuncSigs maps the 4-byte function signature to its string representation.
  3507  // Deprecated: Use ERC721FullMetaData.Sigs instead.
  3508  var ERC721FullFuncSigs = ERC721FullMetaData.Sigs
  3509  
  3510  // ERC721FullBin is the compiled bytecode used for deploying new contracts.
  3511  // Deprecated: Use ERC721FullMetaData.Bin instead.
  3512  var ERC721FullBin = ERC721FullMetaData.Bin
  3513  
  3514  // DeployERC721Full deploys a new Klaytn contract, binding an instance of ERC721Full to it.
  3515  func DeployERC721Full(auth *bind.TransactOpts, backend bind.ContractBackend, name string, symbol string) (common.Address, *types.Transaction, *ERC721Full, error) {
  3516  	parsed, err := ERC721FullMetaData.GetAbi()
  3517  	if err != nil {
  3518  		return common.Address{}, nil, nil, err
  3519  	}
  3520  	if parsed == nil {
  3521  		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
  3522  	}
  3523  
  3524  	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC721FullBin), backend, name, symbol)
  3525  	if err != nil {
  3526  		return common.Address{}, nil, nil, err
  3527  	}
  3528  	return address, tx, &ERC721Full{ERC721FullCaller: ERC721FullCaller{contract: contract}, ERC721FullTransactor: ERC721FullTransactor{contract: contract}, ERC721FullFilterer: ERC721FullFilterer{contract: contract}}, nil
  3529  }
  3530  
  3531  // ERC721Full is an auto generated Go binding around a Klaytn contract.
  3532  type ERC721Full struct {
  3533  	ERC721FullCaller     // Read-only binding to the contract
  3534  	ERC721FullTransactor // Write-only binding to the contract
  3535  	ERC721FullFilterer   // Log filterer for contract events
  3536  }
  3537  
  3538  // ERC721FullCaller is an auto generated read-only Go binding around a Klaytn contract.
  3539  type ERC721FullCaller struct {
  3540  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3541  }
  3542  
  3543  // ERC721FullTransactor is an auto generated write-only Go binding around a Klaytn contract.
  3544  type ERC721FullTransactor struct {
  3545  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3546  }
  3547  
  3548  // ERC721FullFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  3549  type ERC721FullFilterer struct {
  3550  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3551  }
  3552  
  3553  // ERC721FullSession is an auto generated Go binding around a Klaytn contract,
  3554  // with pre-set call and transact options.
  3555  type ERC721FullSession struct {
  3556  	Contract     *ERC721Full       // Generic contract binding to set the session for
  3557  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  3558  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  3559  }
  3560  
  3561  // ERC721FullCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  3562  // with pre-set call options.
  3563  type ERC721FullCallerSession struct {
  3564  	Contract *ERC721FullCaller // Generic contract caller binding to set the session for
  3565  	CallOpts bind.CallOpts     // Call options to use throughout this session
  3566  }
  3567  
  3568  // ERC721FullTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  3569  // with pre-set transact options.
  3570  type ERC721FullTransactorSession struct {
  3571  	Contract     *ERC721FullTransactor // Generic contract transactor binding to set the session for
  3572  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
  3573  }
  3574  
  3575  // ERC721FullRaw is an auto generated low-level Go binding around a Klaytn contract.
  3576  type ERC721FullRaw struct {
  3577  	Contract *ERC721Full // Generic contract binding to access the raw methods on
  3578  }
  3579  
  3580  // ERC721FullCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  3581  type ERC721FullCallerRaw struct {
  3582  	Contract *ERC721FullCaller // Generic read-only contract binding to access the raw methods on
  3583  }
  3584  
  3585  // ERC721FullTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  3586  type ERC721FullTransactorRaw struct {
  3587  	Contract *ERC721FullTransactor // Generic write-only contract binding to access the raw methods on
  3588  }
  3589  
  3590  // NewERC721Full creates a new instance of ERC721Full, bound to a specific deployed contract.
  3591  func NewERC721Full(address common.Address, backend bind.ContractBackend) (*ERC721Full, error) {
  3592  	contract, err := bindERC721Full(address, backend, backend, backend)
  3593  	if err != nil {
  3594  		return nil, err
  3595  	}
  3596  	return &ERC721Full{ERC721FullCaller: ERC721FullCaller{contract: contract}, ERC721FullTransactor: ERC721FullTransactor{contract: contract}, ERC721FullFilterer: ERC721FullFilterer{contract: contract}}, nil
  3597  }
  3598  
  3599  // NewERC721FullCaller creates a new read-only instance of ERC721Full, bound to a specific deployed contract.
  3600  func NewERC721FullCaller(address common.Address, caller bind.ContractCaller) (*ERC721FullCaller, error) {
  3601  	contract, err := bindERC721Full(address, caller, nil, nil)
  3602  	if err != nil {
  3603  		return nil, err
  3604  	}
  3605  	return &ERC721FullCaller{contract: contract}, nil
  3606  }
  3607  
  3608  // NewERC721FullTransactor creates a new write-only instance of ERC721Full, bound to a specific deployed contract.
  3609  func NewERC721FullTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721FullTransactor, error) {
  3610  	contract, err := bindERC721Full(address, nil, transactor, nil)
  3611  	if err != nil {
  3612  		return nil, err
  3613  	}
  3614  	return &ERC721FullTransactor{contract: contract}, nil
  3615  }
  3616  
  3617  // NewERC721FullFilterer creates a new log filterer instance of ERC721Full, bound to a specific deployed contract.
  3618  func NewERC721FullFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721FullFilterer, error) {
  3619  	contract, err := bindERC721Full(address, nil, nil, filterer)
  3620  	if err != nil {
  3621  		return nil, err
  3622  	}
  3623  	return &ERC721FullFilterer{contract: contract}, nil
  3624  }
  3625  
  3626  // bindERC721Full binds a generic wrapper to an already deployed contract.
  3627  func bindERC721Full(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  3628  	parsed, err := ERC721FullMetaData.GetAbi()
  3629  	if err != nil {
  3630  		return nil, err
  3631  	}
  3632  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
  3633  }
  3634  
  3635  // Call invokes the (constant) contract method with params as input values and
  3636  // sets the output to result. The result type might be a single field for simple
  3637  // returns, a slice of interfaces for anonymous returns and a struct for named
  3638  // returns.
  3639  func (_ERC721Full *ERC721FullRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  3640  	return _ERC721Full.Contract.ERC721FullCaller.contract.Call(opts, result, method, params...)
  3641  }
  3642  
  3643  // Transfer initiates a plain transaction to move funds to the contract, calling
  3644  // its default method if one is available.
  3645  func (_ERC721Full *ERC721FullRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  3646  	return _ERC721Full.Contract.ERC721FullTransactor.contract.Transfer(opts)
  3647  }
  3648  
  3649  // Transact invokes the (paid) contract method with params as input values.
  3650  func (_ERC721Full *ERC721FullRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  3651  	return _ERC721Full.Contract.ERC721FullTransactor.contract.Transact(opts, method, params...)
  3652  }
  3653  
  3654  // Call invokes the (constant) contract method with params as input values and
  3655  // sets the output to result. The result type might be a single field for simple
  3656  // returns, a slice of interfaces for anonymous returns and a struct for named
  3657  // returns.
  3658  func (_ERC721Full *ERC721FullCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  3659  	return _ERC721Full.Contract.contract.Call(opts, result, method, params...)
  3660  }
  3661  
  3662  // Transfer initiates a plain transaction to move funds to the contract, calling
  3663  // its default method if one is available.
  3664  func (_ERC721Full *ERC721FullTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  3665  	return _ERC721Full.Contract.contract.Transfer(opts)
  3666  }
  3667  
  3668  // Transact invokes the (paid) contract method with params as input values.
  3669  func (_ERC721Full *ERC721FullTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  3670  	return _ERC721Full.Contract.contract.Transact(opts, method, params...)
  3671  }
  3672  
  3673  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3674  //
  3675  // Solidity: function balanceOf(address owner) view returns(uint256)
  3676  func (_ERC721Full *ERC721FullCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  3677  	var out []interface{}
  3678  	err := _ERC721Full.contract.Call(opts, &out, "balanceOf", owner)
  3679  
  3680  	if err != nil {
  3681  		return *new(*big.Int), err
  3682  	}
  3683  
  3684  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  3685  
  3686  	return out0, err
  3687  
  3688  }
  3689  
  3690  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3691  //
  3692  // Solidity: function balanceOf(address owner) view returns(uint256)
  3693  func (_ERC721Full *ERC721FullSession) BalanceOf(owner common.Address) (*big.Int, error) {
  3694  	return _ERC721Full.Contract.BalanceOf(&_ERC721Full.CallOpts, owner)
  3695  }
  3696  
  3697  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3698  //
  3699  // Solidity: function balanceOf(address owner) view returns(uint256)
  3700  func (_ERC721Full *ERC721FullCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  3701  	return _ERC721Full.Contract.BalanceOf(&_ERC721Full.CallOpts, owner)
  3702  }
  3703  
  3704  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  3705  //
  3706  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  3707  func (_ERC721Full *ERC721FullCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  3708  	var out []interface{}
  3709  	err := _ERC721Full.contract.Call(opts, &out, "getApproved", tokenId)
  3710  
  3711  	if err != nil {
  3712  		return *new(common.Address), err
  3713  	}
  3714  
  3715  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  3716  
  3717  	return out0, err
  3718  
  3719  }
  3720  
  3721  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  3722  //
  3723  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  3724  func (_ERC721Full *ERC721FullSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  3725  	return _ERC721Full.Contract.GetApproved(&_ERC721Full.CallOpts, tokenId)
  3726  }
  3727  
  3728  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  3729  //
  3730  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  3731  func (_ERC721Full *ERC721FullCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  3732  	return _ERC721Full.Contract.GetApproved(&_ERC721Full.CallOpts, tokenId)
  3733  }
  3734  
  3735  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  3736  //
  3737  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  3738  func (_ERC721Full *ERC721FullCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  3739  	var out []interface{}
  3740  	err := _ERC721Full.contract.Call(opts, &out, "isApprovedForAll", owner, operator)
  3741  
  3742  	if err != nil {
  3743  		return *new(bool), err
  3744  	}
  3745  
  3746  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  3747  
  3748  	return out0, err
  3749  
  3750  }
  3751  
  3752  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  3753  //
  3754  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  3755  func (_ERC721Full *ERC721FullSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  3756  	return _ERC721Full.Contract.IsApprovedForAll(&_ERC721Full.CallOpts, owner, operator)
  3757  }
  3758  
  3759  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  3760  //
  3761  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  3762  func (_ERC721Full *ERC721FullCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  3763  	return _ERC721Full.Contract.IsApprovedForAll(&_ERC721Full.CallOpts, owner, operator)
  3764  }
  3765  
  3766  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  3767  //
  3768  // Solidity: function name() view returns(string)
  3769  func (_ERC721Full *ERC721FullCaller) Name(opts *bind.CallOpts) (string, error) {
  3770  	var out []interface{}
  3771  	err := _ERC721Full.contract.Call(opts, &out, "name")
  3772  
  3773  	if err != nil {
  3774  		return *new(string), err
  3775  	}
  3776  
  3777  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  3778  
  3779  	return out0, err
  3780  
  3781  }
  3782  
  3783  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  3784  //
  3785  // Solidity: function name() view returns(string)
  3786  func (_ERC721Full *ERC721FullSession) Name() (string, error) {
  3787  	return _ERC721Full.Contract.Name(&_ERC721Full.CallOpts)
  3788  }
  3789  
  3790  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  3791  //
  3792  // Solidity: function name() view returns(string)
  3793  func (_ERC721Full *ERC721FullCallerSession) Name() (string, error) {
  3794  	return _ERC721Full.Contract.Name(&_ERC721Full.CallOpts)
  3795  }
  3796  
  3797  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  3798  //
  3799  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  3800  func (_ERC721Full *ERC721FullCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  3801  	var out []interface{}
  3802  	err := _ERC721Full.contract.Call(opts, &out, "ownerOf", tokenId)
  3803  
  3804  	if err != nil {
  3805  		return *new(common.Address), err
  3806  	}
  3807  
  3808  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  3809  
  3810  	return out0, err
  3811  
  3812  }
  3813  
  3814  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  3815  //
  3816  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  3817  func (_ERC721Full *ERC721FullSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  3818  	return _ERC721Full.Contract.OwnerOf(&_ERC721Full.CallOpts, tokenId)
  3819  }
  3820  
  3821  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  3822  //
  3823  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  3824  func (_ERC721Full *ERC721FullCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  3825  	return _ERC721Full.Contract.OwnerOf(&_ERC721Full.CallOpts, tokenId)
  3826  }
  3827  
  3828  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  3829  //
  3830  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  3831  func (_ERC721Full *ERC721FullCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  3832  	var out []interface{}
  3833  	err := _ERC721Full.contract.Call(opts, &out, "supportsInterface", interfaceId)
  3834  
  3835  	if err != nil {
  3836  		return *new(bool), err
  3837  	}
  3838  
  3839  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  3840  
  3841  	return out0, err
  3842  
  3843  }
  3844  
  3845  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  3846  //
  3847  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  3848  func (_ERC721Full *ERC721FullSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  3849  	return _ERC721Full.Contract.SupportsInterface(&_ERC721Full.CallOpts, interfaceId)
  3850  }
  3851  
  3852  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  3853  //
  3854  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  3855  func (_ERC721Full *ERC721FullCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  3856  	return _ERC721Full.Contract.SupportsInterface(&_ERC721Full.CallOpts, interfaceId)
  3857  }
  3858  
  3859  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  3860  //
  3861  // Solidity: function symbol() view returns(string)
  3862  func (_ERC721Full *ERC721FullCaller) Symbol(opts *bind.CallOpts) (string, error) {
  3863  	var out []interface{}
  3864  	err := _ERC721Full.contract.Call(opts, &out, "symbol")
  3865  
  3866  	if err != nil {
  3867  		return *new(string), err
  3868  	}
  3869  
  3870  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  3871  
  3872  	return out0, err
  3873  
  3874  }
  3875  
  3876  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  3877  //
  3878  // Solidity: function symbol() view returns(string)
  3879  func (_ERC721Full *ERC721FullSession) Symbol() (string, error) {
  3880  	return _ERC721Full.Contract.Symbol(&_ERC721Full.CallOpts)
  3881  }
  3882  
  3883  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  3884  //
  3885  // Solidity: function symbol() view returns(string)
  3886  func (_ERC721Full *ERC721FullCallerSession) Symbol() (string, error) {
  3887  	return _ERC721Full.Contract.Symbol(&_ERC721Full.CallOpts)
  3888  }
  3889  
  3890  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  3891  //
  3892  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  3893  func (_ERC721Full *ERC721FullCaller) TokenByIndex(opts *bind.CallOpts, index *big.Int) (*big.Int, error) {
  3894  	var out []interface{}
  3895  	err := _ERC721Full.contract.Call(opts, &out, "tokenByIndex", index)
  3896  
  3897  	if err != nil {
  3898  		return *new(*big.Int), err
  3899  	}
  3900  
  3901  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  3902  
  3903  	return out0, err
  3904  
  3905  }
  3906  
  3907  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  3908  //
  3909  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  3910  func (_ERC721Full *ERC721FullSession) TokenByIndex(index *big.Int) (*big.Int, error) {
  3911  	return _ERC721Full.Contract.TokenByIndex(&_ERC721Full.CallOpts, index)
  3912  }
  3913  
  3914  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  3915  //
  3916  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  3917  func (_ERC721Full *ERC721FullCallerSession) TokenByIndex(index *big.Int) (*big.Int, error) {
  3918  	return _ERC721Full.Contract.TokenByIndex(&_ERC721Full.CallOpts, index)
  3919  }
  3920  
  3921  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  3922  //
  3923  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
  3924  func (_ERC721Full *ERC721FullCaller) TokenOfOwnerByIndex(opts *bind.CallOpts, owner common.Address, index *big.Int) (*big.Int, error) {
  3925  	var out []interface{}
  3926  	err := _ERC721Full.contract.Call(opts, &out, "tokenOfOwnerByIndex", owner, index)
  3927  
  3928  	if err != nil {
  3929  		return *new(*big.Int), err
  3930  	}
  3931  
  3932  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  3933  
  3934  	return out0, err
  3935  
  3936  }
  3937  
  3938  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  3939  //
  3940  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
  3941  func (_ERC721Full *ERC721FullSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) {
  3942  	return _ERC721Full.Contract.TokenOfOwnerByIndex(&_ERC721Full.CallOpts, owner, index)
  3943  }
  3944  
  3945  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  3946  //
  3947  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
  3948  func (_ERC721Full *ERC721FullCallerSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) {
  3949  	return _ERC721Full.Contract.TokenOfOwnerByIndex(&_ERC721Full.CallOpts, owner, index)
  3950  }
  3951  
  3952  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  3953  //
  3954  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  3955  func (_ERC721Full *ERC721FullCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) {
  3956  	var out []interface{}
  3957  	err := _ERC721Full.contract.Call(opts, &out, "tokenURI", tokenId)
  3958  
  3959  	if err != nil {
  3960  		return *new(string), err
  3961  	}
  3962  
  3963  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  3964  
  3965  	return out0, err
  3966  
  3967  }
  3968  
  3969  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  3970  //
  3971  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  3972  func (_ERC721Full *ERC721FullSession) TokenURI(tokenId *big.Int) (string, error) {
  3973  	return _ERC721Full.Contract.TokenURI(&_ERC721Full.CallOpts, tokenId)
  3974  }
  3975  
  3976  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  3977  //
  3978  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  3979  func (_ERC721Full *ERC721FullCallerSession) TokenURI(tokenId *big.Int) (string, error) {
  3980  	return _ERC721Full.Contract.TokenURI(&_ERC721Full.CallOpts, tokenId)
  3981  }
  3982  
  3983  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3984  //
  3985  // Solidity: function totalSupply() view returns(uint256)
  3986  func (_ERC721Full *ERC721FullCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  3987  	var out []interface{}
  3988  	err := _ERC721Full.contract.Call(opts, &out, "totalSupply")
  3989  
  3990  	if err != nil {
  3991  		return *new(*big.Int), err
  3992  	}
  3993  
  3994  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  3995  
  3996  	return out0, err
  3997  
  3998  }
  3999  
  4000  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  4001  //
  4002  // Solidity: function totalSupply() view returns(uint256)
  4003  func (_ERC721Full *ERC721FullSession) TotalSupply() (*big.Int, error) {
  4004  	return _ERC721Full.Contract.TotalSupply(&_ERC721Full.CallOpts)
  4005  }
  4006  
  4007  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  4008  //
  4009  // Solidity: function totalSupply() view returns(uint256)
  4010  func (_ERC721Full *ERC721FullCallerSession) TotalSupply() (*big.Int, error) {
  4011  	return _ERC721Full.Contract.TotalSupply(&_ERC721Full.CallOpts)
  4012  }
  4013  
  4014  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  4015  //
  4016  // Solidity: function approve(address to, uint256 tokenId) returns()
  4017  func (_ERC721Full *ERC721FullTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4018  	return _ERC721Full.contract.Transact(opts, "approve", to, tokenId)
  4019  }
  4020  
  4021  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  4022  //
  4023  // Solidity: function approve(address to, uint256 tokenId) returns()
  4024  func (_ERC721Full *ERC721FullSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4025  	return _ERC721Full.Contract.Approve(&_ERC721Full.TransactOpts, to, tokenId)
  4026  }
  4027  
  4028  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  4029  //
  4030  // Solidity: function approve(address to, uint256 tokenId) returns()
  4031  func (_ERC721Full *ERC721FullTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4032  	return _ERC721Full.Contract.Approve(&_ERC721Full.TransactOpts, to, tokenId)
  4033  }
  4034  
  4035  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  4036  //
  4037  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  4038  func (_ERC721Full *ERC721FullTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4039  	return _ERC721Full.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  4040  }
  4041  
  4042  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  4043  //
  4044  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  4045  func (_ERC721Full *ERC721FullSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4046  	return _ERC721Full.Contract.SafeTransferFrom(&_ERC721Full.TransactOpts, from, to, tokenId)
  4047  }
  4048  
  4049  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  4050  //
  4051  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  4052  func (_ERC721Full *ERC721FullTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4053  	return _ERC721Full.Contract.SafeTransferFrom(&_ERC721Full.TransactOpts, from, to, tokenId)
  4054  }
  4055  
  4056  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  4057  //
  4058  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  4059  func (_ERC721Full *ERC721FullTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  4060  	return _ERC721Full.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
  4061  }
  4062  
  4063  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  4064  //
  4065  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  4066  func (_ERC721Full *ERC721FullSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  4067  	return _ERC721Full.Contract.SafeTransferFrom0(&_ERC721Full.TransactOpts, from, to, tokenId, _data)
  4068  }
  4069  
  4070  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  4071  //
  4072  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  4073  func (_ERC721Full *ERC721FullTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  4074  	return _ERC721Full.Contract.SafeTransferFrom0(&_ERC721Full.TransactOpts, from, to, tokenId, _data)
  4075  }
  4076  
  4077  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  4078  //
  4079  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  4080  func (_ERC721Full *ERC721FullTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
  4081  	return _ERC721Full.contract.Transact(opts, "setApprovalForAll", to, approved)
  4082  }
  4083  
  4084  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  4085  //
  4086  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  4087  func (_ERC721Full *ERC721FullSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  4088  	return _ERC721Full.Contract.SetApprovalForAll(&_ERC721Full.TransactOpts, to, approved)
  4089  }
  4090  
  4091  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  4092  //
  4093  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  4094  func (_ERC721Full *ERC721FullTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  4095  	return _ERC721Full.Contract.SetApprovalForAll(&_ERC721Full.TransactOpts, to, approved)
  4096  }
  4097  
  4098  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  4099  //
  4100  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  4101  func (_ERC721Full *ERC721FullTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4102  	return _ERC721Full.contract.Transact(opts, "transferFrom", from, to, tokenId)
  4103  }
  4104  
  4105  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  4106  //
  4107  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  4108  func (_ERC721Full *ERC721FullSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4109  	return _ERC721Full.Contract.TransferFrom(&_ERC721Full.TransactOpts, from, to, tokenId)
  4110  }
  4111  
  4112  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  4113  //
  4114  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  4115  func (_ERC721Full *ERC721FullTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4116  	return _ERC721Full.Contract.TransferFrom(&_ERC721Full.TransactOpts, from, to, tokenId)
  4117  }
  4118  
  4119  // ERC721FullApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721Full contract.
  4120  type ERC721FullApprovalIterator struct {
  4121  	Event *ERC721FullApproval // Event containing the contract specifics and raw log
  4122  
  4123  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4124  	event    string              // Event name to use for unpacking event data
  4125  
  4126  	logs chan types.Log      // Log channel receiving the found contract events
  4127  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  4128  	done bool                // Whether the subscription completed delivering logs
  4129  	fail error               // Occurred error to stop iteration
  4130  }
  4131  
  4132  // Next advances the iterator to the subsequent event, returning whether there
  4133  // are any more events found. In case of a retrieval or parsing error, false is
  4134  // returned and Error() can be queried for the exact failure.
  4135  func (it *ERC721FullApprovalIterator) Next() bool {
  4136  	// If the iterator failed, stop iterating
  4137  	if it.fail != nil {
  4138  		return false
  4139  	}
  4140  	// If the iterator completed, deliver directly whatever's available
  4141  	if it.done {
  4142  		select {
  4143  		case log := <-it.logs:
  4144  			it.Event = new(ERC721FullApproval)
  4145  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4146  				it.fail = err
  4147  				return false
  4148  			}
  4149  			it.Event.Raw = log
  4150  			return true
  4151  
  4152  		default:
  4153  			return false
  4154  		}
  4155  	}
  4156  	// Iterator still in progress, wait for either a data or an error event
  4157  	select {
  4158  	case log := <-it.logs:
  4159  		it.Event = new(ERC721FullApproval)
  4160  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4161  			it.fail = err
  4162  			return false
  4163  		}
  4164  		it.Event.Raw = log
  4165  		return true
  4166  
  4167  	case err := <-it.sub.Err():
  4168  		it.done = true
  4169  		it.fail = err
  4170  		return it.Next()
  4171  	}
  4172  }
  4173  
  4174  // Error returns any retrieval or parsing error occurred during filtering.
  4175  func (it *ERC721FullApprovalIterator) Error() error {
  4176  	return it.fail
  4177  }
  4178  
  4179  // Close terminates the iteration process, releasing any pending underlying
  4180  // resources.
  4181  func (it *ERC721FullApprovalIterator) Close() error {
  4182  	it.sub.Unsubscribe()
  4183  	return nil
  4184  }
  4185  
  4186  // ERC721FullApproval represents a Approval event raised by the ERC721Full contract.
  4187  type ERC721FullApproval struct {
  4188  	Owner    common.Address
  4189  	Approved common.Address
  4190  	TokenId  *big.Int
  4191  	Raw      types.Log // Blockchain specific contextual infos
  4192  }
  4193  
  4194  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  4195  //
  4196  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  4197  func (_ERC721Full *ERC721FullFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721FullApprovalIterator, error) {
  4198  
  4199  	var ownerRule []interface{}
  4200  	for _, ownerItem := range owner {
  4201  		ownerRule = append(ownerRule, ownerItem)
  4202  	}
  4203  	var approvedRule []interface{}
  4204  	for _, approvedItem := range approved {
  4205  		approvedRule = append(approvedRule, approvedItem)
  4206  	}
  4207  	var tokenIdRule []interface{}
  4208  	for _, tokenIdItem := range tokenId {
  4209  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  4210  	}
  4211  
  4212  	logs, sub, err := _ERC721Full.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  4213  	if err != nil {
  4214  		return nil, err
  4215  	}
  4216  	return &ERC721FullApprovalIterator{contract: _ERC721Full.contract, event: "Approval", logs: logs, sub: sub}, nil
  4217  }
  4218  
  4219  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  4220  //
  4221  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  4222  func (_ERC721Full *ERC721FullFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721FullApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  4223  
  4224  	var ownerRule []interface{}
  4225  	for _, ownerItem := range owner {
  4226  		ownerRule = append(ownerRule, ownerItem)
  4227  	}
  4228  	var approvedRule []interface{}
  4229  	for _, approvedItem := range approved {
  4230  		approvedRule = append(approvedRule, approvedItem)
  4231  	}
  4232  	var tokenIdRule []interface{}
  4233  	for _, tokenIdItem := range tokenId {
  4234  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  4235  	}
  4236  
  4237  	logs, sub, err := _ERC721Full.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  4238  	if err != nil {
  4239  		return nil, err
  4240  	}
  4241  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4242  		defer sub.Unsubscribe()
  4243  		for {
  4244  			select {
  4245  			case log := <-logs:
  4246  				// New log arrived, parse the event and forward to the user
  4247  				event := new(ERC721FullApproval)
  4248  				if err := _ERC721Full.contract.UnpackLog(event, "Approval", log); err != nil {
  4249  					return err
  4250  				}
  4251  				event.Raw = log
  4252  
  4253  				select {
  4254  				case sink <- event:
  4255  				case err := <-sub.Err():
  4256  					return err
  4257  				case <-quit:
  4258  					return nil
  4259  				}
  4260  			case err := <-sub.Err():
  4261  				return err
  4262  			case <-quit:
  4263  				return nil
  4264  			}
  4265  		}
  4266  	}), nil
  4267  }
  4268  
  4269  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  4270  //
  4271  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  4272  func (_ERC721Full *ERC721FullFilterer) ParseApproval(log types.Log) (*ERC721FullApproval, error) {
  4273  	event := new(ERC721FullApproval)
  4274  	if err := _ERC721Full.contract.UnpackLog(event, "Approval", log); err != nil {
  4275  		return nil, err
  4276  	}
  4277  	return event, nil
  4278  }
  4279  
  4280  // ERC721FullApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721Full contract.
  4281  type ERC721FullApprovalForAllIterator struct {
  4282  	Event *ERC721FullApprovalForAll // Event containing the contract specifics and raw log
  4283  
  4284  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4285  	event    string              // Event name to use for unpacking event data
  4286  
  4287  	logs chan types.Log      // Log channel receiving the found contract events
  4288  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  4289  	done bool                // Whether the subscription completed delivering logs
  4290  	fail error               // Occurred error to stop iteration
  4291  }
  4292  
  4293  // Next advances the iterator to the subsequent event, returning whether there
  4294  // are any more events found. In case of a retrieval or parsing error, false is
  4295  // returned and Error() can be queried for the exact failure.
  4296  func (it *ERC721FullApprovalForAllIterator) Next() bool {
  4297  	// If the iterator failed, stop iterating
  4298  	if it.fail != nil {
  4299  		return false
  4300  	}
  4301  	// If the iterator completed, deliver directly whatever's available
  4302  	if it.done {
  4303  		select {
  4304  		case log := <-it.logs:
  4305  			it.Event = new(ERC721FullApprovalForAll)
  4306  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4307  				it.fail = err
  4308  				return false
  4309  			}
  4310  			it.Event.Raw = log
  4311  			return true
  4312  
  4313  		default:
  4314  			return false
  4315  		}
  4316  	}
  4317  	// Iterator still in progress, wait for either a data or an error event
  4318  	select {
  4319  	case log := <-it.logs:
  4320  		it.Event = new(ERC721FullApprovalForAll)
  4321  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4322  			it.fail = err
  4323  			return false
  4324  		}
  4325  		it.Event.Raw = log
  4326  		return true
  4327  
  4328  	case err := <-it.sub.Err():
  4329  		it.done = true
  4330  		it.fail = err
  4331  		return it.Next()
  4332  	}
  4333  }
  4334  
  4335  // Error returns any retrieval or parsing error occurred during filtering.
  4336  func (it *ERC721FullApprovalForAllIterator) Error() error {
  4337  	return it.fail
  4338  }
  4339  
  4340  // Close terminates the iteration process, releasing any pending underlying
  4341  // resources.
  4342  func (it *ERC721FullApprovalForAllIterator) Close() error {
  4343  	it.sub.Unsubscribe()
  4344  	return nil
  4345  }
  4346  
  4347  // ERC721FullApprovalForAll represents a ApprovalForAll event raised by the ERC721Full contract.
  4348  type ERC721FullApprovalForAll struct {
  4349  	Owner    common.Address
  4350  	Operator common.Address
  4351  	Approved bool
  4352  	Raw      types.Log // Blockchain specific contextual infos
  4353  }
  4354  
  4355  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  4356  //
  4357  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  4358  func (_ERC721Full *ERC721FullFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721FullApprovalForAllIterator, error) {
  4359  
  4360  	var ownerRule []interface{}
  4361  	for _, ownerItem := range owner {
  4362  		ownerRule = append(ownerRule, ownerItem)
  4363  	}
  4364  	var operatorRule []interface{}
  4365  	for _, operatorItem := range operator {
  4366  		operatorRule = append(operatorRule, operatorItem)
  4367  	}
  4368  
  4369  	logs, sub, err := _ERC721Full.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  4370  	if err != nil {
  4371  		return nil, err
  4372  	}
  4373  	return &ERC721FullApprovalForAllIterator{contract: _ERC721Full.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  4374  }
  4375  
  4376  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  4377  //
  4378  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  4379  func (_ERC721Full *ERC721FullFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721FullApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  4380  
  4381  	var ownerRule []interface{}
  4382  	for _, ownerItem := range owner {
  4383  		ownerRule = append(ownerRule, ownerItem)
  4384  	}
  4385  	var operatorRule []interface{}
  4386  	for _, operatorItem := range operator {
  4387  		operatorRule = append(operatorRule, operatorItem)
  4388  	}
  4389  
  4390  	logs, sub, err := _ERC721Full.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  4391  	if err != nil {
  4392  		return nil, err
  4393  	}
  4394  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4395  		defer sub.Unsubscribe()
  4396  		for {
  4397  			select {
  4398  			case log := <-logs:
  4399  				// New log arrived, parse the event and forward to the user
  4400  				event := new(ERC721FullApprovalForAll)
  4401  				if err := _ERC721Full.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  4402  					return err
  4403  				}
  4404  				event.Raw = log
  4405  
  4406  				select {
  4407  				case sink <- event:
  4408  				case err := <-sub.Err():
  4409  					return err
  4410  				case <-quit:
  4411  					return nil
  4412  				}
  4413  			case err := <-sub.Err():
  4414  				return err
  4415  			case <-quit:
  4416  				return nil
  4417  			}
  4418  		}
  4419  	}), nil
  4420  }
  4421  
  4422  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  4423  //
  4424  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  4425  func (_ERC721Full *ERC721FullFilterer) ParseApprovalForAll(log types.Log) (*ERC721FullApprovalForAll, error) {
  4426  	event := new(ERC721FullApprovalForAll)
  4427  	if err := _ERC721Full.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  4428  		return nil, err
  4429  	}
  4430  	return event, nil
  4431  }
  4432  
  4433  // ERC721FullTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721Full contract.
  4434  type ERC721FullTransferIterator struct {
  4435  	Event *ERC721FullTransfer // Event containing the contract specifics and raw log
  4436  
  4437  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4438  	event    string              // Event name to use for unpacking event data
  4439  
  4440  	logs chan types.Log      // Log channel receiving the found contract events
  4441  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  4442  	done bool                // Whether the subscription completed delivering logs
  4443  	fail error               // Occurred error to stop iteration
  4444  }
  4445  
  4446  // Next advances the iterator to the subsequent event, returning whether there
  4447  // are any more events found. In case of a retrieval or parsing error, false is
  4448  // returned and Error() can be queried for the exact failure.
  4449  func (it *ERC721FullTransferIterator) Next() bool {
  4450  	// If the iterator failed, stop iterating
  4451  	if it.fail != nil {
  4452  		return false
  4453  	}
  4454  	// If the iterator completed, deliver directly whatever's available
  4455  	if it.done {
  4456  		select {
  4457  		case log := <-it.logs:
  4458  			it.Event = new(ERC721FullTransfer)
  4459  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4460  				it.fail = err
  4461  				return false
  4462  			}
  4463  			it.Event.Raw = log
  4464  			return true
  4465  
  4466  		default:
  4467  			return false
  4468  		}
  4469  	}
  4470  	// Iterator still in progress, wait for either a data or an error event
  4471  	select {
  4472  	case log := <-it.logs:
  4473  		it.Event = new(ERC721FullTransfer)
  4474  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4475  			it.fail = err
  4476  			return false
  4477  		}
  4478  		it.Event.Raw = log
  4479  		return true
  4480  
  4481  	case err := <-it.sub.Err():
  4482  		it.done = true
  4483  		it.fail = err
  4484  		return it.Next()
  4485  	}
  4486  }
  4487  
  4488  // Error returns any retrieval or parsing error occurred during filtering.
  4489  func (it *ERC721FullTransferIterator) Error() error {
  4490  	return it.fail
  4491  }
  4492  
  4493  // Close terminates the iteration process, releasing any pending underlying
  4494  // resources.
  4495  func (it *ERC721FullTransferIterator) Close() error {
  4496  	it.sub.Unsubscribe()
  4497  	return nil
  4498  }
  4499  
  4500  // ERC721FullTransfer represents a Transfer event raised by the ERC721Full contract.
  4501  type ERC721FullTransfer struct {
  4502  	From    common.Address
  4503  	To      common.Address
  4504  	TokenId *big.Int
  4505  	Raw     types.Log // Blockchain specific contextual infos
  4506  }
  4507  
  4508  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4509  //
  4510  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  4511  func (_ERC721Full *ERC721FullFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721FullTransferIterator, error) {
  4512  
  4513  	var fromRule []interface{}
  4514  	for _, fromItem := range from {
  4515  		fromRule = append(fromRule, fromItem)
  4516  	}
  4517  	var toRule []interface{}
  4518  	for _, toItem := range to {
  4519  		toRule = append(toRule, toItem)
  4520  	}
  4521  	var tokenIdRule []interface{}
  4522  	for _, tokenIdItem := range tokenId {
  4523  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  4524  	}
  4525  
  4526  	logs, sub, err := _ERC721Full.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  4527  	if err != nil {
  4528  		return nil, err
  4529  	}
  4530  	return &ERC721FullTransferIterator{contract: _ERC721Full.contract, event: "Transfer", logs: logs, sub: sub}, nil
  4531  }
  4532  
  4533  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4534  //
  4535  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  4536  func (_ERC721Full *ERC721FullFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721FullTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  4537  
  4538  	var fromRule []interface{}
  4539  	for _, fromItem := range from {
  4540  		fromRule = append(fromRule, fromItem)
  4541  	}
  4542  	var toRule []interface{}
  4543  	for _, toItem := range to {
  4544  		toRule = append(toRule, toItem)
  4545  	}
  4546  	var tokenIdRule []interface{}
  4547  	for _, tokenIdItem := range tokenId {
  4548  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  4549  	}
  4550  
  4551  	logs, sub, err := _ERC721Full.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  4552  	if err != nil {
  4553  		return nil, err
  4554  	}
  4555  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4556  		defer sub.Unsubscribe()
  4557  		for {
  4558  			select {
  4559  			case log := <-logs:
  4560  				// New log arrived, parse the event and forward to the user
  4561  				event := new(ERC721FullTransfer)
  4562  				if err := _ERC721Full.contract.UnpackLog(event, "Transfer", log); err != nil {
  4563  					return err
  4564  				}
  4565  				event.Raw = log
  4566  
  4567  				select {
  4568  				case sink <- event:
  4569  				case err := <-sub.Err():
  4570  					return err
  4571  				case <-quit:
  4572  					return nil
  4573  				}
  4574  			case err := <-sub.Err():
  4575  				return err
  4576  			case <-quit:
  4577  				return nil
  4578  			}
  4579  		}
  4580  	}), nil
  4581  }
  4582  
  4583  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4584  //
  4585  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  4586  func (_ERC721Full *ERC721FullFilterer) ParseTransfer(log types.Log) (*ERC721FullTransfer, error) {
  4587  	event := new(ERC721FullTransfer)
  4588  	if err := _ERC721Full.contract.UnpackLog(event, "Transfer", log); err != nil {
  4589  		return nil, err
  4590  	}
  4591  	return event, nil
  4592  }
  4593  
  4594  // ERC721MetadataMetaData contains all meta data concerning the ERC721Metadata contract.
  4595  var ERC721MetadataMetaData = &bind.MetaData{
  4596  	ABI: "[{\"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\"}]",
  4597  	Sigs: map[string]string{
  4598  		"095ea7b3": "approve(address,uint256)",
  4599  		"70a08231": "balanceOf(address)",
  4600  		"081812fc": "getApproved(uint256)",
  4601  		"e985e9c5": "isApprovedForAll(address,address)",
  4602  		"06fdde03": "name()",
  4603  		"6352211e": "ownerOf(uint256)",
  4604  		"42842e0e": "safeTransferFrom(address,address,uint256)",
  4605  		"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  4606  		"a22cb465": "setApprovalForAll(address,bool)",
  4607  		"01ffc9a7": "supportsInterface(bytes4)",
  4608  		"95d89b41": "symbol()",
  4609  		"c87b56dd": "tokenURI(uint256)",
  4610  		"23b872dd": "transferFrom(address,address,uint256)",
  4611  	},
  4612  	Bin: "0x60806040523480156200001157600080fd5b50604051620012f8380380620012f8833981018060405260408110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b820160208101848111156200006457600080fd5b81516401000000008111828201871017156200007f57600080fd5b505092919060200180516401000000008111156200009c57600080fd5b82016020810184811115620000b057600080fd5b8151640100000000811182820187101715620000cb57600080fd5b5050929190505050620000eb6301ffc9a760e01b6200014f60201b60201c565b620001036380ac58cd60e01b6200014f60201b60201c565b8151620001189060059060208501906200021e565b5080516200012e9060069060208401906200021e565b5062000147635b5e139f60e01b6200014f60201b60201c565b5050620002c3565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620001e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026157805160ff191683800117855562000291565b8280016001018555821562000291579182015b828111156200029157825182559160200191906001019062000274565b506200029f929150620002a3565b5090565b620002c091905b808211156200029f5760008155600101620002aa565b90565b61102580620002d36000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146102bc578063b88d4fde146102ea578063c87b56dd146103b0578063e985e9c5146103cd576100cf565b80636352211e1461025f57806370a082311461027c57806395d89b41146102b4576100cf565b806301ffc9a7146100d457806306fdde031461010f578063081812fc1461018c578063095ea7b3146101c557806323b872dd146101f357806342842e0e14610229575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103fb565b604080519115158252519081900360200190f35b61011761041a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610151578181015183820152602001610139565b50505050905090810190601f16801561017e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a9600480360360208110156101a257600080fd5b50356104b0565b604080516001600160a01b039092168252519081900360200190f35b6101f1600480360360408110156101db57600080fd5b506001600160a01b038135169060200135610515565b005b6101f16004803603606081101561020957600080fd5b506001600160a01b0381358116916020810135909116906040013561062c565b6101f16004803603606081101561023f57600080fd5b506001600160a01b03813581169160208101359091169060400135610684565b6101a96004803603602081101561027557600080fd5b503561069f565b6102a26004803603602081101561029257600080fd5b50356001600160a01b03166106fc565b60408051918252519081900360200190f35b610117610767565b6101f1600480360360408110156102d257600080fd5b506001600160a01b03813516906020013515156107c8565b6101f16004803603608081101561030057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184600183028401116401000000008311171561036f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610897945050505050565b610117600480360360208110156103c657600080fd5b50356108f2565b6100fb600480360360408110156103e357600080fd5b506001600160a01b03813581169160200135166109da565b6001600160e01b03191660009081526020819052604090205460ff1690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b820191906000526020600020905b81548152906001019060200180831161048957829003601f168201915b5050505050905090565b60006104bb82610a08565b6104f957604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610f24602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105208261069f565b9050806001600160a01b0316836001600160a01b0316141561057657604051600160e51b62461bcd028152600401808060200182810382526021815260200180610fa86021913960400191505060405180910390fd5b336001600160a01b0382161480610592575061059281336109da565b6105d057604051600160e51b62461bcd028152600401808060200182810382526038815260200180610e996038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6106363382610a25565b61067457604051600160e51b62461bcd028152600401808060200182810382526031815260200180610fc96031913960400191505060405180910390fd5b61067f838383610acc565b505050565b61067f83838360405180602001604052806000815250610897565b6000818152600160205260408120546001600160a01b0316806106f657604051600160e51b62461bcd028152600401808060200182810382526029815260200180610efb6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661074657604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610ed1602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106f690610c16565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b6001600160a01b0382163314156108295760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6108a284848461062c565b6108ae84848484610c1a565b6108ec57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e176032913960400191505060405180910390fd5b50505050565b60606108fd82610a08565b61093b57604051600160e51b62461bcd02815260040180806020018281038252602f815260200180610f79602f913960400191505060405180910390fd5b60008281526007602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156109ce5780601f106109a3576101008083540402835291602001916109ce565b820191906000526020600020905b8154815290600101906020018083116109b157829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610a3082610a08565b610a6e57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610e6d602c913960400191505060405180910390fd5b6000610a798361069f565b9050806001600160a01b0316846001600160a01b03161480610ab45750836001600160a01b0316610aa9846104b0565b6001600160a01b0316145b80610ac45750610ac481856109da565b949350505050565b826001600160a01b0316610adf8261069f565b6001600160a01b031614610b2757604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f506029913960400191505060405180910390fd5b6001600160a01b038216610b6f57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610e496024913960400191505060405180910390fd5b610b7881610d53565b6001600160a01b0383166000908152600360205260409020610b9990610d90565b6001600160a01b0382166000908152600360205260409020610bba90610da7565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b6000610c2e846001600160a01b0316610db0565b610c3a57506001610ac4565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610cb7578181015183820152602001610c9f565b50505050905090810190601f168015610ce45780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610d8d57600081815260026020526040902080546001600160a01b03191690555b50565b8054610da390600163ffffffff610db616565b9055565b80546001019055565b3b151590565b600082821115610e105760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a723058209631ba5ee0489ecf58b1ed6edf174b73a3e5afd9e09cd92d7c38448a275e41090029",
  4613  }
  4614  
  4615  // ERC721MetadataABI is the input ABI used to generate the binding from.
  4616  // Deprecated: Use ERC721MetadataMetaData.ABI instead.
  4617  var ERC721MetadataABI = ERC721MetadataMetaData.ABI
  4618  
  4619  // ERC721MetadataBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  4620  const ERC721MetadataBinRuntime = `608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146102bc578063b88d4fde146102ea578063c87b56dd146103b0578063e985e9c5146103cd576100cf565b80636352211e1461025f57806370a082311461027c57806395d89b41146102b4576100cf565b806301ffc9a7146100d457806306fdde031461010f578063081812fc1461018c578063095ea7b3146101c557806323b872dd146101f357806342842e0e14610229575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103fb565b604080519115158252519081900360200190f35b61011761041a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610151578181015183820152602001610139565b50505050905090810190601f16801561017e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a9600480360360208110156101a257600080fd5b50356104b0565b604080516001600160a01b039092168252519081900360200190f35b6101f1600480360360408110156101db57600080fd5b506001600160a01b038135169060200135610515565b005b6101f16004803603606081101561020957600080fd5b506001600160a01b0381358116916020810135909116906040013561062c565b6101f16004803603606081101561023f57600080fd5b506001600160a01b03813581169160208101359091169060400135610684565b6101a96004803603602081101561027557600080fd5b503561069f565b6102a26004803603602081101561029257600080fd5b50356001600160a01b03166106fc565b60408051918252519081900360200190f35b610117610767565b6101f1600480360360408110156102d257600080fd5b506001600160a01b03813516906020013515156107c8565b6101f16004803603608081101561030057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184600183028401116401000000008311171561036f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610897945050505050565b610117600480360360208110156103c657600080fd5b50356108f2565b6100fb600480360360408110156103e357600080fd5b506001600160a01b03813581169160200135166109da565b6001600160e01b03191660009081526020819052604090205460ff1690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b820191906000526020600020905b81548152906001019060200180831161048957829003601f168201915b5050505050905090565b60006104bb82610a08565b6104f957604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610f24602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105208261069f565b9050806001600160a01b0316836001600160a01b0316141561057657604051600160e51b62461bcd028152600401808060200182810382526021815260200180610fa86021913960400191505060405180910390fd5b336001600160a01b0382161480610592575061059281336109da565b6105d057604051600160e51b62461bcd028152600401808060200182810382526038815260200180610e996038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6106363382610a25565b61067457604051600160e51b62461bcd028152600401808060200182810382526031815260200180610fc96031913960400191505060405180910390fd5b61067f838383610acc565b505050565b61067f83838360405180602001604052806000815250610897565b6000818152600160205260408120546001600160a01b0316806106f657604051600160e51b62461bcd028152600401808060200182810382526029815260200180610efb6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661074657604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610ed1602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106f690610c16565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b6001600160a01b0382163314156108295760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6108a284848461062c565b6108ae84848484610c1a565b6108ec57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e176032913960400191505060405180910390fd5b50505050565b60606108fd82610a08565b61093b57604051600160e51b62461bcd02815260040180806020018281038252602f815260200180610f79602f913960400191505060405180910390fd5b60008281526007602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156109ce5780601f106109a3576101008083540402835291602001916109ce565b820191906000526020600020905b8154815290600101906020018083116109b157829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610a3082610a08565b610a6e57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610e6d602c913960400191505060405180910390fd5b6000610a798361069f565b9050806001600160a01b0316846001600160a01b03161480610ab45750836001600160a01b0316610aa9846104b0565b6001600160a01b0316145b80610ac45750610ac481856109da565b949350505050565b826001600160a01b0316610adf8261069f565b6001600160a01b031614610b2757604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f506029913960400191505060405180910390fd5b6001600160a01b038216610b6f57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610e496024913960400191505060405180910390fd5b610b7881610d53565b6001600160a01b0383166000908152600360205260409020610b9990610d90565b6001600160a01b0382166000908152600360205260409020610bba90610da7565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b6000610c2e846001600160a01b0316610db0565b610c3a57506001610ac4565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610cb7578181015183820152602001610c9f565b50505050905090810190601f168015610ce45780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610d8d57600081815260026020526040902080546001600160a01b03191690555b50565b8054610da390600163ffffffff610db616565b9055565b80546001019055565b3b151590565b600082821115610e105760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a723058209631ba5ee0489ecf58b1ed6edf174b73a3e5afd9e09cd92d7c38448a275e41090029`
  4621  
  4622  // ERC721MetadataFuncSigs maps the 4-byte function signature to its string representation.
  4623  // Deprecated: Use ERC721MetadataMetaData.Sigs instead.
  4624  var ERC721MetadataFuncSigs = ERC721MetadataMetaData.Sigs
  4625  
  4626  // ERC721MetadataBin is the compiled bytecode used for deploying new contracts.
  4627  // Deprecated: Use ERC721MetadataMetaData.Bin instead.
  4628  var ERC721MetadataBin = ERC721MetadataMetaData.Bin
  4629  
  4630  // DeployERC721Metadata deploys a new Klaytn contract, binding an instance of ERC721Metadata to it.
  4631  func DeployERC721Metadata(auth *bind.TransactOpts, backend bind.ContractBackend, name string, symbol string) (common.Address, *types.Transaction, *ERC721Metadata, error) {
  4632  	parsed, err := ERC721MetadataMetaData.GetAbi()
  4633  	if err != nil {
  4634  		return common.Address{}, nil, nil, err
  4635  	}
  4636  	if parsed == nil {
  4637  		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
  4638  	}
  4639  
  4640  	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC721MetadataBin), backend, name, symbol)
  4641  	if err != nil {
  4642  		return common.Address{}, nil, nil, err
  4643  	}
  4644  	return address, tx, &ERC721Metadata{ERC721MetadataCaller: ERC721MetadataCaller{contract: contract}, ERC721MetadataTransactor: ERC721MetadataTransactor{contract: contract}, ERC721MetadataFilterer: ERC721MetadataFilterer{contract: contract}}, nil
  4645  }
  4646  
  4647  // ERC721Metadata is an auto generated Go binding around a Klaytn contract.
  4648  type ERC721Metadata struct {
  4649  	ERC721MetadataCaller     // Read-only binding to the contract
  4650  	ERC721MetadataTransactor // Write-only binding to the contract
  4651  	ERC721MetadataFilterer   // Log filterer for contract events
  4652  }
  4653  
  4654  // ERC721MetadataCaller is an auto generated read-only Go binding around a Klaytn contract.
  4655  type ERC721MetadataCaller struct {
  4656  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4657  }
  4658  
  4659  // ERC721MetadataTransactor is an auto generated write-only Go binding around a Klaytn contract.
  4660  type ERC721MetadataTransactor struct {
  4661  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4662  }
  4663  
  4664  // ERC721MetadataFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  4665  type ERC721MetadataFilterer struct {
  4666  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4667  }
  4668  
  4669  // ERC721MetadataSession is an auto generated Go binding around a Klaytn contract,
  4670  // with pre-set call and transact options.
  4671  type ERC721MetadataSession struct {
  4672  	Contract     *ERC721Metadata   // Generic contract binding to set the session for
  4673  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  4674  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  4675  }
  4676  
  4677  // ERC721MetadataCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  4678  // with pre-set call options.
  4679  type ERC721MetadataCallerSession struct {
  4680  	Contract *ERC721MetadataCaller // Generic contract caller binding to set the session for
  4681  	CallOpts bind.CallOpts         // Call options to use throughout this session
  4682  }
  4683  
  4684  // ERC721MetadataTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  4685  // with pre-set transact options.
  4686  type ERC721MetadataTransactorSession struct {
  4687  	Contract     *ERC721MetadataTransactor // Generic contract transactor binding to set the session for
  4688  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
  4689  }
  4690  
  4691  // ERC721MetadataRaw is an auto generated low-level Go binding around a Klaytn contract.
  4692  type ERC721MetadataRaw struct {
  4693  	Contract *ERC721Metadata // Generic contract binding to access the raw methods on
  4694  }
  4695  
  4696  // ERC721MetadataCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  4697  type ERC721MetadataCallerRaw struct {
  4698  	Contract *ERC721MetadataCaller // Generic read-only contract binding to access the raw methods on
  4699  }
  4700  
  4701  // ERC721MetadataTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  4702  type ERC721MetadataTransactorRaw struct {
  4703  	Contract *ERC721MetadataTransactor // Generic write-only contract binding to access the raw methods on
  4704  }
  4705  
  4706  // NewERC721Metadata creates a new instance of ERC721Metadata, bound to a specific deployed contract.
  4707  func NewERC721Metadata(address common.Address, backend bind.ContractBackend) (*ERC721Metadata, error) {
  4708  	contract, err := bindERC721Metadata(address, backend, backend, backend)
  4709  	if err != nil {
  4710  		return nil, err
  4711  	}
  4712  	return &ERC721Metadata{ERC721MetadataCaller: ERC721MetadataCaller{contract: contract}, ERC721MetadataTransactor: ERC721MetadataTransactor{contract: contract}, ERC721MetadataFilterer: ERC721MetadataFilterer{contract: contract}}, nil
  4713  }
  4714  
  4715  // NewERC721MetadataCaller creates a new read-only instance of ERC721Metadata, bound to a specific deployed contract.
  4716  func NewERC721MetadataCaller(address common.Address, caller bind.ContractCaller) (*ERC721MetadataCaller, error) {
  4717  	contract, err := bindERC721Metadata(address, caller, nil, nil)
  4718  	if err != nil {
  4719  		return nil, err
  4720  	}
  4721  	return &ERC721MetadataCaller{contract: contract}, nil
  4722  }
  4723  
  4724  // NewERC721MetadataTransactor creates a new write-only instance of ERC721Metadata, bound to a specific deployed contract.
  4725  func NewERC721MetadataTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721MetadataTransactor, error) {
  4726  	contract, err := bindERC721Metadata(address, nil, transactor, nil)
  4727  	if err != nil {
  4728  		return nil, err
  4729  	}
  4730  	return &ERC721MetadataTransactor{contract: contract}, nil
  4731  }
  4732  
  4733  // NewERC721MetadataFilterer creates a new log filterer instance of ERC721Metadata, bound to a specific deployed contract.
  4734  func NewERC721MetadataFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721MetadataFilterer, error) {
  4735  	contract, err := bindERC721Metadata(address, nil, nil, filterer)
  4736  	if err != nil {
  4737  		return nil, err
  4738  	}
  4739  	return &ERC721MetadataFilterer{contract: contract}, nil
  4740  }
  4741  
  4742  // bindERC721Metadata binds a generic wrapper to an already deployed contract.
  4743  func bindERC721Metadata(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  4744  	parsed, err := ERC721MetadataMetaData.GetAbi()
  4745  	if err != nil {
  4746  		return nil, err
  4747  	}
  4748  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
  4749  }
  4750  
  4751  // Call invokes the (constant) contract method with params as input values and
  4752  // sets the output to result. The result type might be a single field for simple
  4753  // returns, a slice of interfaces for anonymous returns and a struct for named
  4754  // returns.
  4755  func (_ERC721Metadata *ERC721MetadataRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  4756  	return _ERC721Metadata.Contract.ERC721MetadataCaller.contract.Call(opts, result, method, params...)
  4757  }
  4758  
  4759  // Transfer initiates a plain transaction to move funds to the contract, calling
  4760  // its default method if one is available.
  4761  func (_ERC721Metadata *ERC721MetadataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4762  	return _ERC721Metadata.Contract.ERC721MetadataTransactor.contract.Transfer(opts)
  4763  }
  4764  
  4765  // Transact invokes the (paid) contract method with params as input values.
  4766  func (_ERC721Metadata *ERC721MetadataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4767  	return _ERC721Metadata.Contract.ERC721MetadataTransactor.contract.Transact(opts, method, params...)
  4768  }
  4769  
  4770  // Call invokes the (constant) contract method with params as input values and
  4771  // sets the output to result. The result type might be a single field for simple
  4772  // returns, a slice of interfaces for anonymous returns and a struct for named
  4773  // returns.
  4774  func (_ERC721Metadata *ERC721MetadataCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  4775  	return _ERC721Metadata.Contract.contract.Call(opts, result, method, params...)
  4776  }
  4777  
  4778  // Transfer initiates a plain transaction to move funds to the contract, calling
  4779  // its default method if one is available.
  4780  func (_ERC721Metadata *ERC721MetadataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4781  	return _ERC721Metadata.Contract.contract.Transfer(opts)
  4782  }
  4783  
  4784  // Transact invokes the (paid) contract method with params as input values.
  4785  func (_ERC721Metadata *ERC721MetadataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4786  	return _ERC721Metadata.Contract.contract.Transact(opts, method, params...)
  4787  }
  4788  
  4789  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  4790  //
  4791  // Solidity: function balanceOf(address owner) view returns(uint256)
  4792  func (_ERC721Metadata *ERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  4793  	var out []interface{}
  4794  	err := _ERC721Metadata.contract.Call(opts, &out, "balanceOf", owner)
  4795  
  4796  	if err != nil {
  4797  		return *new(*big.Int), err
  4798  	}
  4799  
  4800  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  4801  
  4802  	return out0, err
  4803  
  4804  }
  4805  
  4806  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  4807  //
  4808  // Solidity: function balanceOf(address owner) view returns(uint256)
  4809  func (_ERC721Metadata *ERC721MetadataSession) BalanceOf(owner common.Address) (*big.Int, error) {
  4810  	return _ERC721Metadata.Contract.BalanceOf(&_ERC721Metadata.CallOpts, owner)
  4811  }
  4812  
  4813  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  4814  //
  4815  // Solidity: function balanceOf(address owner) view returns(uint256)
  4816  func (_ERC721Metadata *ERC721MetadataCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  4817  	return _ERC721Metadata.Contract.BalanceOf(&_ERC721Metadata.CallOpts, owner)
  4818  }
  4819  
  4820  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  4821  //
  4822  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  4823  func (_ERC721Metadata *ERC721MetadataCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  4824  	var out []interface{}
  4825  	err := _ERC721Metadata.contract.Call(opts, &out, "getApproved", tokenId)
  4826  
  4827  	if err != nil {
  4828  		return *new(common.Address), err
  4829  	}
  4830  
  4831  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  4832  
  4833  	return out0, err
  4834  
  4835  }
  4836  
  4837  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  4838  //
  4839  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  4840  func (_ERC721Metadata *ERC721MetadataSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  4841  	return _ERC721Metadata.Contract.GetApproved(&_ERC721Metadata.CallOpts, tokenId)
  4842  }
  4843  
  4844  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  4845  //
  4846  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  4847  func (_ERC721Metadata *ERC721MetadataCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  4848  	return _ERC721Metadata.Contract.GetApproved(&_ERC721Metadata.CallOpts, tokenId)
  4849  }
  4850  
  4851  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  4852  //
  4853  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  4854  func (_ERC721Metadata *ERC721MetadataCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  4855  	var out []interface{}
  4856  	err := _ERC721Metadata.contract.Call(opts, &out, "isApprovedForAll", owner, operator)
  4857  
  4858  	if err != nil {
  4859  		return *new(bool), err
  4860  	}
  4861  
  4862  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  4863  
  4864  	return out0, err
  4865  
  4866  }
  4867  
  4868  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  4869  //
  4870  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  4871  func (_ERC721Metadata *ERC721MetadataSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  4872  	return _ERC721Metadata.Contract.IsApprovedForAll(&_ERC721Metadata.CallOpts, owner, operator)
  4873  }
  4874  
  4875  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  4876  //
  4877  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  4878  func (_ERC721Metadata *ERC721MetadataCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  4879  	return _ERC721Metadata.Contract.IsApprovedForAll(&_ERC721Metadata.CallOpts, owner, operator)
  4880  }
  4881  
  4882  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  4883  //
  4884  // Solidity: function name() view returns(string)
  4885  func (_ERC721Metadata *ERC721MetadataCaller) Name(opts *bind.CallOpts) (string, error) {
  4886  	var out []interface{}
  4887  	err := _ERC721Metadata.contract.Call(opts, &out, "name")
  4888  
  4889  	if err != nil {
  4890  		return *new(string), err
  4891  	}
  4892  
  4893  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  4894  
  4895  	return out0, err
  4896  
  4897  }
  4898  
  4899  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  4900  //
  4901  // Solidity: function name() view returns(string)
  4902  func (_ERC721Metadata *ERC721MetadataSession) Name() (string, error) {
  4903  	return _ERC721Metadata.Contract.Name(&_ERC721Metadata.CallOpts)
  4904  }
  4905  
  4906  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  4907  //
  4908  // Solidity: function name() view returns(string)
  4909  func (_ERC721Metadata *ERC721MetadataCallerSession) Name() (string, error) {
  4910  	return _ERC721Metadata.Contract.Name(&_ERC721Metadata.CallOpts)
  4911  }
  4912  
  4913  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  4914  //
  4915  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  4916  func (_ERC721Metadata *ERC721MetadataCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  4917  	var out []interface{}
  4918  	err := _ERC721Metadata.contract.Call(opts, &out, "ownerOf", tokenId)
  4919  
  4920  	if err != nil {
  4921  		return *new(common.Address), err
  4922  	}
  4923  
  4924  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  4925  
  4926  	return out0, err
  4927  
  4928  }
  4929  
  4930  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  4931  //
  4932  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  4933  func (_ERC721Metadata *ERC721MetadataSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  4934  	return _ERC721Metadata.Contract.OwnerOf(&_ERC721Metadata.CallOpts, tokenId)
  4935  }
  4936  
  4937  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  4938  //
  4939  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  4940  func (_ERC721Metadata *ERC721MetadataCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  4941  	return _ERC721Metadata.Contract.OwnerOf(&_ERC721Metadata.CallOpts, tokenId)
  4942  }
  4943  
  4944  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  4945  //
  4946  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  4947  func (_ERC721Metadata *ERC721MetadataCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  4948  	var out []interface{}
  4949  	err := _ERC721Metadata.contract.Call(opts, &out, "supportsInterface", interfaceId)
  4950  
  4951  	if err != nil {
  4952  		return *new(bool), err
  4953  	}
  4954  
  4955  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  4956  
  4957  	return out0, err
  4958  
  4959  }
  4960  
  4961  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  4962  //
  4963  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  4964  func (_ERC721Metadata *ERC721MetadataSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  4965  	return _ERC721Metadata.Contract.SupportsInterface(&_ERC721Metadata.CallOpts, interfaceId)
  4966  }
  4967  
  4968  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  4969  //
  4970  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  4971  func (_ERC721Metadata *ERC721MetadataCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  4972  	return _ERC721Metadata.Contract.SupportsInterface(&_ERC721Metadata.CallOpts, interfaceId)
  4973  }
  4974  
  4975  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  4976  //
  4977  // Solidity: function symbol() view returns(string)
  4978  func (_ERC721Metadata *ERC721MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) {
  4979  	var out []interface{}
  4980  	err := _ERC721Metadata.contract.Call(opts, &out, "symbol")
  4981  
  4982  	if err != nil {
  4983  		return *new(string), err
  4984  	}
  4985  
  4986  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  4987  
  4988  	return out0, err
  4989  
  4990  }
  4991  
  4992  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  4993  //
  4994  // Solidity: function symbol() view returns(string)
  4995  func (_ERC721Metadata *ERC721MetadataSession) Symbol() (string, error) {
  4996  	return _ERC721Metadata.Contract.Symbol(&_ERC721Metadata.CallOpts)
  4997  }
  4998  
  4999  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  5000  //
  5001  // Solidity: function symbol() view returns(string)
  5002  func (_ERC721Metadata *ERC721MetadataCallerSession) Symbol() (string, error) {
  5003  	return _ERC721Metadata.Contract.Symbol(&_ERC721Metadata.CallOpts)
  5004  }
  5005  
  5006  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  5007  //
  5008  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  5009  func (_ERC721Metadata *ERC721MetadataCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) {
  5010  	var out []interface{}
  5011  	err := _ERC721Metadata.contract.Call(opts, &out, "tokenURI", tokenId)
  5012  
  5013  	if err != nil {
  5014  		return *new(string), err
  5015  	}
  5016  
  5017  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  5018  
  5019  	return out0, err
  5020  
  5021  }
  5022  
  5023  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  5024  //
  5025  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  5026  func (_ERC721Metadata *ERC721MetadataSession) TokenURI(tokenId *big.Int) (string, error) {
  5027  	return _ERC721Metadata.Contract.TokenURI(&_ERC721Metadata.CallOpts, tokenId)
  5028  }
  5029  
  5030  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  5031  //
  5032  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  5033  func (_ERC721Metadata *ERC721MetadataCallerSession) TokenURI(tokenId *big.Int) (string, error) {
  5034  	return _ERC721Metadata.Contract.TokenURI(&_ERC721Metadata.CallOpts, tokenId)
  5035  }
  5036  
  5037  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  5038  //
  5039  // Solidity: function approve(address to, uint256 tokenId) returns()
  5040  func (_ERC721Metadata *ERC721MetadataTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5041  	return _ERC721Metadata.contract.Transact(opts, "approve", to, tokenId)
  5042  }
  5043  
  5044  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  5045  //
  5046  // Solidity: function approve(address to, uint256 tokenId) returns()
  5047  func (_ERC721Metadata *ERC721MetadataSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5048  	return _ERC721Metadata.Contract.Approve(&_ERC721Metadata.TransactOpts, to, tokenId)
  5049  }
  5050  
  5051  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  5052  //
  5053  // Solidity: function approve(address to, uint256 tokenId) returns()
  5054  func (_ERC721Metadata *ERC721MetadataTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5055  	return _ERC721Metadata.Contract.Approve(&_ERC721Metadata.TransactOpts, to, tokenId)
  5056  }
  5057  
  5058  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  5059  //
  5060  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  5061  func (_ERC721Metadata *ERC721MetadataTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5062  	return _ERC721Metadata.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  5063  }
  5064  
  5065  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  5066  //
  5067  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  5068  func (_ERC721Metadata *ERC721MetadataSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5069  	return _ERC721Metadata.Contract.SafeTransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId)
  5070  }
  5071  
  5072  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  5073  //
  5074  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  5075  func (_ERC721Metadata *ERC721MetadataTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5076  	return _ERC721Metadata.Contract.SafeTransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId)
  5077  }
  5078  
  5079  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  5080  //
  5081  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  5082  func (_ERC721Metadata *ERC721MetadataTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  5083  	return _ERC721Metadata.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
  5084  }
  5085  
  5086  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  5087  //
  5088  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  5089  func (_ERC721Metadata *ERC721MetadataSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  5090  	return _ERC721Metadata.Contract.SafeTransferFrom0(&_ERC721Metadata.TransactOpts, from, to, tokenId, _data)
  5091  }
  5092  
  5093  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  5094  //
  5095  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  5096  func (_ERC721Metadata *ERC721MetadataTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  5097  	return _ERC721Metadata.Contract.SafeTransferFrom0(&_ERC721Metadata.TransactOpts, from, to, tokenId, _data)
  5098  }
  5099  
  5100  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  5101  //
  5102  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  5103  func (_ERC721Metadata *ERC721MetadataTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
  5104  	return _ERC721Metadata.contract.Transact(opts, "setApprovalForAll", to, approved)
  5105  }
  5106  
  5107  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  5108  //
  5109  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  5110  func (_ERC721Metadata *ERC721MetadataSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  5111  	return _ERC721Metadata.Contract.SetApprovalForAll(&_ERC721Metadata.TransactOpts, to, approved)
  5112  }
  5113  
  5114  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  5115  //
  5116  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  5117  func (_ERC721Metadata *ERC721MetadataTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  5118  	return _ERC721Metadata.Contract.SetApprovalForAll(&_ERC721Metadata.TransactOpts, to, approved)
  5119  }
  5120  
  5121  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  5122  //
  5123  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  5124  func (_ERC721Metadata *ERC721MetadataTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5125  	return _ERC721Metadata.contract.Transact(opts, "transferFrom", from, to, tokenId)
  5126  }
  5127  
  5128  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  5129  //
  5130  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  5131  func (_ERC721Metadata *ERC721MetadataSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5132  	return _ERC721Metadata.Contract.TransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId)
  5133  }
  5134  
  5135  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  5136  //
  5137  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  5138  func (_ERC721Metadata *ERC721MetadataTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5139  	return _ERC721Metadata.Contract.TransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId)
  5140  }
  5141  
  5142  // 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.
  5143  type ERC721MetadataApprovalIterator struct {
  5144  	Event *ERC721MetadataApproval // Event containing the contract specifics and raw log
  5145  
  5146  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5147  	event    string              // Event name to use for unpacking event data
  5148  
  5149  	logs chan types.Log      // Log channel receiving the found contract events
  5150  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  5151  	done bool                // Whether the subscription completed delivering logs
  5152  	fail error               // Occurred error to stop iteration
  5153  }
  5154  
  5155  // Next advances the iterator to the subsequent event, returning whether there
  5156  // are any more events found. In case of a retrieval or parsing error, false is
  5157  // returned and Error() can be queried for the exact failure.
  5158  func (it *ERC721MetadataApprovalIterator) Next() bool {
  5159  	// If the iterator failed, stop iterating
  5160  	if it.fail != nil {
  5161  		return false
  5162  	}
  5163  	// If the iterator completed, deliver directly whatever's available
  5164  	if it.done {
  5165  		select {
  5166  		case log := <-it.logs:
  5167  			it.Event = new(ERC721MetadataApproval)
  5168  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5169  				it.fail = err
  5170  				return false
  5171  			}
  5172  			it.Event.Raw = log
  5173  			return true
  5174  
  5175  		default:
  5176  			return false
  5177  		}
  5178  	}
  5179  	// Iterator still in progress, wait for either a data or an error event
  5180  	select {
  5181  	case log := <-it.logs:
  5182  		it.Event = new(ERC721MetadataApproval)
  5183  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5184  			it.fail = err
  5185  			return false
  5186  		}
  5187  		it.Event.Raw = log
  5188  		return true
  5189  
  5190  	case err := <-it.sub.Err():
  5191  		it.done = true
  5192  		it.fail = err
  5193  		return it.Next()
  5194  	}
  5195  }
  5196  
  5197  // Error returns any retrieval or parsing error occurred during filtering.
  5198  func (it *ERC721MetadataApprovalIterator) Error() error {
  5199  	return it.fail
  5200  }
  5201  
  5202  // Close terminates the iteration process, releasing any pending underlying
  5203  // resources.
  5204  func (it *ERC721MetadataApprovalIterator) Close() error {
  5205  	it.sub.Unsubscribe()
  5206  	return nil
  5207  }
  5208  
  5209  // ERC721MetadataApproval represents a Approval event raised by the ERC721Metadata contract.
  5210  type ERC721MetadataApproval struct {
  5211  	Owner    common.Address
  5212  	Approved common.Address
  5213  	TokenId  *big.Int
  5214  	Raw      types.Log // Blockchain specific contextual infos
  5215  }
  5216  
  5217  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  5218  //
  5219  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  5220  func (_ERC721Metadata *ERC721MetadataFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721MetadataApprovalIterator, error) {
  5221  
  5222  	var ownerRule []interface{}
  5223  	for _, ownerItem := range owner {
  5224  		ownerRule = append(ownerRule, ownerItem)
  5225  	}
  5226  	var approvedRule []interface{}
  5227  	for _, approvedItem := range approved {
  5228  		approvedRule = append(approvedRule, approvedItem)
  5229  	}
  5230  	var tokenIdRule []interface{}
  5231  	for _, tokenIdItem := range tokenId {
  5232  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  5233  	}
  5234  
  5235  	logs, sub, err := _ERC721Metadata.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  5236  	if err != nil {
  5237  		return nil, err
  5238  	}
  5239  	return &ERC721MetadataApprovalIterator{contract: _ERC721Metadata.contract, event: "Approval", logs: logs, sub: sub}, nil
  5240  }
  5241  
  5242  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  5243  //
  5244  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  5245  func (_ERC721Metadata *ERC721MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721MetadataApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  5246  
  5247  	var ownerRule []interface{}
  5248  	for _, ownerItem := range owner {
  5249  		ownerRule = append(ownerRule, ownerItem)
  5250  	}
  5251  	var approvedRule []interface{}
  5252  	for _, approvedItem := range approved {
  5253  		approvedRule = append(approvedRule, approvedItem)
  5254  	}
  5255  	var tokenIdRule []interface{}
  5256  	for _, tokenIdItem := range tokenId {
  5257  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  5258  	}
  5259  
  5260  	logs, sub, err := _ERC721Metadata.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  5261  	if err != nil {
  5262  		return nil, err
  5263  	}
  5264  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5265  		defer sub.Unsubscribe()
  5266  		for {
  5267  			select {
  5268  			case log := <-logs:
  5269  				// New log arrived, parse the event and forward to the user
  5270  				event := new(ERC721MetadataApproval)
  5271  				if err := _ERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil {
  5272  					return err
  5273  				}
  5274  				event.Raw = log
  5275  
  5276  				select {
  5277  				case sink <- event:
  5278  				case err := <-sub.Err():
  5279  					return err
  5280  				case <-quit:
  5281  					return nil
  5282  				}
  5283  			case err := <-sub.Err():
  5284  				return err
  5285  			case <-quit:
  5286  				return nil
  5287  			}
  5288  		}
  5289  	}), nil
  5290  }
  5291  
  5292  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  5293  //
  5294  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  5295  func (_ERC721Metadata *ERC721MetadataFilterer) ParseApproval(log types.Log) (*ERC721MetadataApproval, error) {
  5296  	event := new(ERC721MetadataApproval)
  5297  	if err := _ERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil {
  5298  		return nil, err
  5299  	}
  5300  	return event, nil
  5301  }
  5302  
  5303  // 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.
  5304  type ERC721MetadataApprovalForAllIterator struct {
  5305  	Event *ERC721MetadataApprovalForAll // Event containing the contract specifics and raw log
  5306  
  5307  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5308  	event    string              // Event name to use for unpacking event data
  5309  
  5310  	logs chan types.Log      // Log channel receiving the found contract events
  5311  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  5312  	done bool                // Whether the subscription completed delivering logs
  5313  	fail error               // Occurred error to stop iteration
  5314  }
  5315  
  5316  // Next advances the iterator to the subsequent event, returning whether there
  5317  // are any more events found. In case of a retrieval or parsing error, false is
  5318  // returned and Error() can be queried for the exact failure.
  5319  func (it *ERC721MetadataApprovalForAllIterator) Next() bool {
  5320  	// If the iterator failed, stop iterating
  5321  	if it.fail != nil {
  5322  		return false
  5323  	}
  5324  	// If the iterator completed, deliver directly whatever's available
  5325  	if it.done {
  5326  		select {
  5327  		case log := <-it.logs:
  5328  			it.Event = new(ERC721MetadataApprovalForAll)
  5329  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5330  				it.fail = err
  5331  				return false
  5332  			}
  5333  			it.Event.Raw = log
  5334  			return true
  5335  
  5336  		default:
  5337  			return false
  5338  		}
  5339  	}
  5340  	// Iterator still in progress, wait for either a data or an error event
  5341  	select {
  5342  	case log := <-it.logs:
  5343  		it.Event = new(ERC721MetadataApprovalForAll)
  5344  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5345  			it.fail = err
  5346  			return false
  5347  		}
  5348  		it.Event.Raw = log
  5349  		return true
  5350  
  5351  	case err := <-it.sub.Err():
  5352  		it.done = true
  5353  		it.fail = err
  5354  		return it.Next()
  5355  	}
  5356  }
  5357  
  5358  // Error returns any retrieval or parsing error occurred during filtering.
  5359  func (it *ERC721MetadataApprovalForAllIterator) Error() error {
  5360  	return it.fail
  5361  }
  5362  
  5363  // Close terminates the iteration process, releasing any pending underlying
  5364  // resources.
  5365  func (it *ERC721MetadataApprovalForAllIterator) Close() error {
  5366  	it.sub.Unsubscribe()
  5367  	return nil
  5368  }
  5369  
  5370  // ERC721MetadataApprovalForAll represents a ApprovalForAll event raised by the ERC721Metadata contract.
  5371  type ERC721MetadataApprovalForAll struct {
  5372  	Owner    common.Address
  5373  	Operator common.Address
  5374  	Approved bool
  5375  	Raw      types.Log // Blockchain specific contextual infos
  5376  }
  5377  
  5378  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  5379  //
  5380  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  5381  func (_ERC721Metadata *ERC721MetadataFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721MetadataApprovalForAllIterator, error) {
  5382  
  5383  	var ownerRule []interface{}
  5384  	for _, ownerItem := range owner {
  5385  		ownerRule = append(ownerRule, ownerItem)
  5386  	}
  5387  	var operatorRule []interface{}
  5388  	for _, operatorItem := range operator {
  5389  		operatorRule = append(operatorRule, operatorItem)
  5390  	}
  5391  
  5392  	logs, sub, err := _ERC721Metadata.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  5393  	if err != nil {
  5394  		return nil, err
  5395  	}
  5396  	return &ERC721MetadataApprovalForAllIterator{contract: _ERC721Metadata.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  5397  }
  5398  
  5399  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  5400  //
  5401  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  5402  func (_ERC721Metadata *ERC721MetadataFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721MetadataApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  5403  
  5404  	var ownerRule []interface{}
  5405  	for _, ownerItem := range owner {
  5406  		ownerRule = append(ownerRule, ownerItem)
  5407  	}
  5408  	var operatorRule []interface{}
  5409  	for _, operatorItem := range operator {
  5410  		operatorRule = append(operatorRule, operatorItem)
  5411  	}
  5412  
  5413  	logs, sub, err := _ERC721Metadata.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  5414  	if err != nil {
  5415  		return nil, err
  5416  	}
  5417  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5418  		defer sub.Unsubscribe()
  5419  		for {
  5420  			select {
  5421  			case log := <-logs:
  5422  				// New log arrived, parse the event and forward to the user
  5423  				event := new(ERC721MetadataApprovalForAll)
  5424  				if err := _ERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  5425  					return err
  5426  				}
  5427  				event.Raw = log
  5428  
  5429  				select {
  5430  				case sink <- event:
  5431  				case err := <-sub.Err():
  5432  					return err
  5433  				case <-quit:
  5434  					return nil
  5435  				}
  5436  			case err := <-sub.Err():
  5437  				return err
  5438  			case <-quit:
  5439  				return nil
  5440  			}
  5441  		}
  5442  	}), nil
  5443  }
  5444  
  5445  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  5446  //
  5447  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  5448  func (_ERC721Metadata *ERC721MetadataFilterer) ParseApprovalForAll(log types.Log) (*ERC721MetadataApprovalForAll, error) {
  5449  	event := new(ERC721MetadataApprovalForAll)
  5450  	if err := _ERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  5451  		return nil, err
  5452  	}
  5453  	return event, nil
  5454  }
  5455  
  5456  // 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.
  5457  type ERC721MetadataTransferIterator struct {
  5458  	Event *ERC721MetadataTransfer // Event containing the contract specifics and raw log
  5459  
  5460  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5461  	event    string              // Event name to use for unpacking event data
  5462  
  5463  	logs chan types.Log      // Log channel receiving the found contract events
  5464  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  5465  	done bool                // Whether the subscription completed delivering logs
  5466  	fail error               // Occurred error to stop iteration
  5467  }
  5468  
  5469  // Next advances the iterator to the subsequent event, returning whether there
  5470  // are any more events found. In case of a retrieval or parsing error, false is
  5471  // returned and Error() can be queried for the exact failure.
  5472  func (it *ERC721MetadataTransferIterator) Next() bool {
  5473  	// If the iterator failed, stop iterating
  5474  	if it.fail != nil {
  5475  		return false
  5476  	}
  5477  	// If the iterator completed, deliver directly whatever's available
  5478  	if it.done {
  5479  		select {
  5480  		case log := <-it.logs:
  5481  			it.Event = new(ERC721MetadataTransfer)
  5482  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5483  				it.fail = err
  5484  				return false
  5485  			}
  5486  			it.Event.Raw = log
  5487  			return true
  5488  
  5489  		default:
  5490  			return false
  5491  		}
  5492  	}
  5493  	// Iterator still in progress, wait for either a data or an error event
  5494  	select {
  5495  	case log := <-it.logs:
  5496  		it.Event = new(ERC721MetadataTransfer)
  5497  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5498  			it.fail = err
  5499  			return false
  5500  		}
  5501  		it.Event.Raw = log
  5502  		return true
  5503  
  5504  	case err := <-it.sub.Err():
  5505  		it.done = true
  5506  		it.fail = err
  5507  		return it.Next()
  5508  	}
  5509  }
  5510  
  5511  // Error returns any retrieval or parsing error occurred during filtering.
  5512  func (it *ERC721MetadataTransferIterator) Error() error {
  5513  	return it.fail
  5514  }
  5515  
  5516  // Close terminates the iteration process, releasing any pending underlying
  5517  // resources.
  5518  func (it *ERC721MetadataTransferIterator) Close() error {
  5519  	it.sub.Unsubscribe()
  5520  	return nil
  5521  }
  5522  
  5523  // ERC721MetadataTransfer represents a Transfer event raised by the ERC721Metadata contract.
  5524  type ERC721MetadataTransfer struct {
  5525  	From    common.Address
  5526  	To      common.Address
  5527  	TokenId *big.Int
  5528  	Raw     types.Log // Blockchain specific contextual infos
  5529  }
  5530  
  5531  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5532  //
  5533  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  5534  func (_ERC721Metadata *ERC721MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721MetadataTransferIterator, error) {
  5535  
  5536  	var fromRule []interface{}
  5537  	for _, fromItem := range from {
  5538  		fromRule = append(fromRule, fromItem)
  5539  	}
  5540  	var toRule []interface{}
  5541  	for _, toItem := range to {
  5542  		toRule = append(toRule, toItem)
  5543  	}
  5544  	var tokenIdRule []interface{}
  5545  	for _, tokenIdItem := range tokenId {
  5546  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  5547  	}
  5548  
  5549  	logs, sub, err := _ERC721Metadata.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  5550  	if err != nil {
  5551  		return nil, err
  5552  	}
  5553  	return &ERC721MetadataTransferIterator{contract: _ERC721Metadata.contract, event: "Transfer", logs: logs, sub: sub}, nil
  5554  }
  5555  
  5556  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5557  //
  5558  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  5559  func (_ERC721Metadata *ERC721MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721MetadataTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  5560  
  5561  	var fromRule []interface{}
  5562  	for _, fromItem := range from {
  5563  		fromRule = append(fromRule, fromItem)
  5564  	}
  5565  	var toRule []interface{}
  5566  	for _, toItem := range to {
  5567  		toRule = append(toRule, toItem)
  5568  	}
  5569  	var tokenIdRule []interface{}
  5570  	for _, tokenIdItem := range tokenId {
  5571  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  5572  	}
  5573  
  5574  	logs, sub, err := _ERC721Metadata.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  5575  	if err != nil {
  5576  		return nil, err
  5577  	}
  5578  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5579  		defer sub.Unsubscribe()
  5580  		for {
  5581  			select {
  5582  			case log := <-logs:
  5583  				// New log arrived, parse the event and forward to the user
  5584  				event := new(ERC721MetadataTransfer)
  5585  				if err := _ERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil {
  5586  					return err
  5587  				}
  5588  				event.Raw = log
  5589  
  5590  				select {
  5591  				case sink <- event:
  5592  				case err := <-sub.Err():
  5593  					return err
  5594  				case <-quit:
  5595  					return nil
  5596  				}
  5597  			case err := <-sub.Err():
  5598  				return err
  5599  			case <-quit:
  5600  				return nil
  5601  			}
  5602  		}
  5603  	}), nil
  5604  }
  5605  
  5606  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5607  //
  5608  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  5609  func (_ERC721Metadata *ERC721MetadataFilterer) ParseTransfer(log types.Log) (*ERC721MetadataTransfer, error) {
  5610  	event := new(ERC721MetadataTransfer)
  5611  	if err := _ERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil {
  5612  		return nil, err
  5613  	}
  5614  	return event, nil
  5615  }
  5616  
  5617  // ERC721MetadataMintableMetaData contains all meta data concerning the ERC721MetadataMintable contract.
  5618  var ERC721MetadataMintableMetaData = &bind.MetaData{
  5619  	ABI: "[{\"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\"}]",
  5620  	Sigs: map[string]string{
  5621  		"983b2d56": "addMinter(address)",
  5622  		"095ea7b3": "approve(address,uint256)",
  5623  		"70a08231": "balanceOf(address)",
  5624  		"081812fc": "getApproved(uint256)",
  5625  		"e985e9c5": "isApprovedForAll(address,address)",
  5626  		"aa271e1a": "isMinter(address)",
  5627  		"50bb4e7f": "mintWithTokenURI(address,uint256,string)",
  5628  		"06fdde03": "name()",
  5629  		"6352211e": "ownerOf(uint256)",
  5630  		"98650275": "renounceMinter()",
  5631  		"42842e0e": "safeTransferFrom(address,address,uint256)",
  5632  		"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  5633  		"a22cb465": "setApprovalForAll(address,bool)",
  5634  		"01ffc9a7": "supportsInterface(bytes4)",
  5635  		"95d89b41": "symbol()",
  5636  		"c87b56dd": "tokenURI(uint256)",
  5637  		"23b872dd": "transferFrom(address,address,uint256)",
  5638  	},
  5639  }
  5640  
  5641  // ERC721MetadataMintableABI is the input ABI used to generate the binding from.
  5642  // Deprecated: Use ERC721MetadataMintableMetaData.ABI instead.
  5643  var ERC721MetadataMintableABI = ERC721MetadataMintableMetaData.ABI
  5644  
  5645  // ERC721MetadataMintableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  5646  const ERC721MetadataMintableBinRuntime = ``
  5647  
  5648  // ERC721MetadataMintableFuncSigs maps the 4-byte function signature to its string representation.
  5649  // Deprecated: Use ERC721MetadataMintableMetaData.Sigs instead.
  5650  var ERC721MetadataMintableFuncSigs = ERC721MetadataMintableMetaData.Sigs
  5651  
  5652  // ERC721MetadataMintable is an auto generated Go binding around a Klaytn contract.
  5653  type ERC721MetadataMintable struct {
  5654  	ERC721MetadataMintableCaller     // Read-only binding to the contract
  5655  	ERC721MetadataMintableTransactor // Write-only binding to the contract
  5656  	ERC721MetadataMintableFilterer   // Log filterer for contract events
  5657  }
  5658  
  5659  // ERC721MetadataMintableCaller is an auto generated read-only Go binding around a Klaytn contract.
  5660  type ERC721MetadataMintableCaller struct {
  5661  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5662  }
  5663  
  5664  // ERC721MetadataMintableTransactor is an auto generated write-only Go binding around a Klaytn contract.
  5665  type ERC721MetadataMintableTransactor struct {
  5666  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5667  }
  5668  
  5669  // ERC721MetadataMintableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  5670  type ERC721MetadataMintableFilterer struct {
  5671  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5672  }
  5673  
  5674  // ERC721MetadataMintableSession is an auto generated Go binding around a Klaytn contract,
  5675  // with pre-set call and transact options.
  5676  type ERC721MetadataMintableSession struct {
  5677  	Contract     *ERC721MetadataMintable // Generic contract binding to set the session for
  5678  	CallOpts     bind.CallOpts           // Call options to use throughout this session
  5679  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
  5680  }
  5681  
  5682  // ERC721MetadataMintableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  5683  // with pre-set call options.
  5684  type ERC721MetadataMintableCallerSession struct {
  5685  	Contract *ERC721MetadataMintableCaller // Generic contract caller binding to set the session for
  5686  	CallOpts bind.CallOpts                 // Call options to use throughout this session
  5687  }
  5688  
  5689  // ERC721MetadataMintableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  5690  // with pre-set transact options.
  5691  type ERC721MetadataMintableTransactorSession struct {
  5692  	Contract     *ERC721MetadataMintableTransactor // Generic contract transactor binding to set the session for
  5693  	TransactOpts bind.TransactOpts                 // Transaction auth options to use throughout this session
  5694  }
  5695  
  5696  // ERC721MetadataMintableRaw is an auto generated low-level Go binding around a Klaytn contract.
  5697  type ERC721MetadataMintableRaw struct {
  5698  	Contract *ERC721MetadataMintable // Generic contract binding to access the raw methods on
  5699  }
  5700  
  5701  // ERC721MetadataMintableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  5702  type ERC721MetadataMintableCallerRaw struct {
  5703  	Contract *ERC721MetadataMintableCaller // Generic read-only contract binding to access the raw methods on
  5704  }
  5705  
  5706  // ERC721MetadataMintableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  5707  type ERC721MetadataMintableTransactorRaw struct {
  5708  	Contract *ERC721MetadataMintableTransactor // Generic write-only contract binding to access the raw methods on
  5709  }
  5710  
  5711  // NewERC721MetadataMintable creates a new instance of ERC721MetadataMintable, bound to a specific deployed contract.
  5712  func NewERC721MetadataMintable(address common.Address, backend bind.ContractBackend) (*ERC721MetadataMintable, error) {
  5713  	contract, err := bindERC721MetadataMintable(address, backend, backend, backend)
  5714  	if err != nil {
  5715  		return nil, err
  5716  	}
  5717  	return &ERC721MetadataMintable{ERC721MetadataMintableCaller: ERC721MetadataMintableCaller{contract: contract}, ERC721MetadataMintableTransactor: ERC721MetadataMintableTransactor{contract: contract}, ERC721MetadataMintableFilterer: ERC721MetadataMintableFilterer{contract: contract}}, nil
  5718  }
  5719  
  5720  // NewERC721MetadataMintableCaller creates a new read-only instance of ERC721MetadataMintable, bound to a specific deployed contract.
  5721  func NewERC721MetadataMintableCaller(address common.Address, caller bind.ContractCaller) (*ERC721MetadataMintableCaller, error) {
  5722  	contract, err := bindERC721MetadataMintable(address, caller, nil, nil)
  5723  	if err != nil {
  5724  		return nil, err
  5725  	}
  5726  	return &ERC721MetadataMintableCaller{contract: contract}, nil
  5727  }
  5728  
  5729  // NewERC721MetadataMintableTransactor creates a new write-only instance of ERC721MetadataMintable, bound to a specific deployed contract.
  5730  func NewERC721MetadataMintableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721MetadataMintableTransactor, error) {
  5731  	contract, err := bindERC721MetadataMintable(address, nil, transactor, nil)
  5732  	if err != nil {
  5733  		return nil, err
  5734  	}
  5735  	return &ERC721MetadataMintableTransactor{contract: contract}, nil
  5736  }
  5737  
  5738  // NewERC721MetadataMintableFilterer creates a new log filterer instance of ERC721MetadataMintable, bound to a specific deployed contract.
  5739  func NewERC721MetadataMintableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721MetadataMintableFilterer, error) {
  5740  	contract, err := bindERC721MetadataMintable(address, nil, nil, filterer)
  5741  	if err != nil {
  5742  		return nil, err
  5743  	}
  5744  	return &ERC721MetadataMintableFilterer{contract: contract}, nil
  5745  }
  5746  
  5747  // bindERC721MetadataMintable binds a generic wrapper to an already deployed contract.
  5748  func bindERC721MetadataMintable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  5749  	parsed, err := ERC721MetadataMintableMetaData.GetAbi()
  5750  	if err != nil {
  5751  		return nil, err
  5752  	}
  5753  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
  5754  }
  5755  
  5756  // Call invokes the (constant) contract method with params as input values and
  5757  // sets the output to result. The result type might be a single field for simple
  5758  // returns, a slice of interfaces for anonymous returns and a struct for named
  5759  // returns.
  5760  func (_ERC721MetadataMintable *ERC721MetadataMintableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  5761  	return _ERC721MetadataMintable.Contract.ERC721MetadataMintableCaller.contract.Call(opts, result, method, params...)
  5762  }
  5763  
  5764  // Transfer initiates a plain transaction to move funds to the contract, calling
  5765  // its default method if one is available.
  5766  func (_ERC721MetadataMintable *ERC721MetadataMintableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5767  	return _ERC721MetadataMintable.Contract.ERC721MetadataMintableTransactor.contract.Transfer(opts)
  5768  }
  5769  
  5770  // Transact invokes the (paid) contract method with params as input values.
  5771  func (_ERC721MetadataMintable *ERC721MetadataMintableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5772  	return _ERC721MetadataMintable.Contract.ERC721MetadataMintableTransactor.contract.Transact(opts, method, params...)
  5773  }
  5774  
  5775  // Call invokes the (constant) contract method with params as input values and
  5776  // sets the output to result. The result type might be a single field for simple
  5777  // returns, a slice of interfaces for anonymous returns and a struct for named
  5778  // returns.
  5779  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  5780  	return _ERC721MetadataMintable.Contract.contract.Call(opts, result, method, params...)
  5781  }
  5782  
  5783  // Transfer initiates a plain transaction to move funds to the contract, calling
  5784  // its default method if one is available.
  5785  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5786  	return _ERC721MetadataMintable.Contract.contract.Transfer(opts)
  5787  }
  5788  
  5789  // Transact invokes the (paid) contract method with params as input values.
  5790  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5791  	return _ERC721MetadataMintable.Contract.contract.Transact(opts, method, params...)
  5792  }
  5793  
  5794  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  5795  //
  5796  // Solidity: function balanceOf(address owner) view returns(uint256)
  5797  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  5798  	var out []interface{}
  5799  	err := _ERC721MetadataMintable.contract.Call(opts, &out, "balanceOf", owner)
  5800  
  5801  	if err != nil {
  5802  		return *new(*big.Int), err
  5803  	}
  5804  
  5805  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  5806  
  5807  	return out0, err
  5808  
  5809  }
  5810  
  5811  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  5812  //
  5813  // Solidity: function balanceOf(address owner) view returns(uint256)
  5814  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) BalanceOf(owner common.Address) (*big.Int, error) {
  5815  	return _ERC721MetadataMintable.Contract.BalanceOf(&_ERC721MetadataMintable.CallOpts, owner)
  5816  }
  5817  
  5818  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  5819  //
  5820  // Solidity: function balanceOf(address owner) view returns(uint256)
  5821  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  5822  	return _ERC721MetadataMintable.Contract.BalanceOf(&_ERC721MetadataMintable.CallOpts, owner)
  5823  }
  5824  
  5825  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  5826  //
  5827  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  5828  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  5829  	var out []interface{}
  5830  	err := _ERC721MetadataMintable.contract.Call(opts, &out, "getApproved", tokenId)
  5831  
  5832  	if err != nil {
  5833  		return *new(common.Address), err
  5834  	}
  5835  
  5836  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  5837  
  5838  	return out0, err
  5839  
  5840  }
  5841  
  5842  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  5843  //
  5844  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  5845  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  5846  	return _ERC721MetadataMintable.Contract.GetApproved(&_ERC721MetadataMintable.CallOpts, tokenId)
  5847  }
  5848  
  5849  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  5850  //
  5851  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  5852  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  5853  	return _ERC721MetadataMintable.Contract.GetApproved(&_ERC721MetadataMintable.CallOpts, tokenId)
  5854  }
  5855  
  5856  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  5857  //
  5858  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  5859  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  5860  	var out []interface{}
  5861  	err := _ERC721MetadataMintable.contract.Call(opts, &out, "isApprovedForAll", owner, operator)
  5862  
  5863  	if err != nil {
  5864  		return *new(bool), err
  5865  	}
  5866  
  5867  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  5868  
  5869  	return out0, err
  5870  
  5871  }
  5872  
  5873  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  5874  //
  5875  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  5876  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  5877  	return _ERC721MetadataMintable.Contract.IsApprovedForAll(&_ERC721MetadataMintable.CallOpts, owner, operator)
  5878  }
  5879  
  5880  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  5881  //
  5882  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  5883  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  5884  	return _ERC721MetadataMintable.Contract.IsApprovedForAll(&_ERC721MetadataMintable.CallOpts, owner, operator)
  5885  }
  5886  
  5887  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  5888  //
  5889  // Solidity: function isMinter(address account) view returns(bool)
  5890  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
  5891  	var out []interface{}
  5892  	err := _ERC721MetadataMintable.contract.Call(opts, &out, "isMinter", account)
  5893  
  5894  	if err != nil {
  5895  		return *new(bool), err
  5896  	}
  5897  
  5898  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  5899  
  5900  	return out0, err
  5901  
  5902  }
  5903  
  5904  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  5905  //
  5906  // Solidity: function isMinter(address account) view returns(bool)
  5907  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) IsMinter(account common.Address) (bool, error) {
  5908  	return _ERC721MetadataMintable.Contract.IsMinter(&_ERC721MetadataMintable.CallOpts, account)
  5909  }
  5910  
  5911  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  5912  //
  5913  // Solidity: function isMinter(address account) view returns(bool)
  5914  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) IsMinter(account common.Address) (bool, error) {
  5915  	return _ERC721MetadataMintable.Contract.IsMinter(&_ERC721MetadataMintable.CallOpts, account)
  5916  }
  5917  
  5918  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  5919  //
  5920  // Solidity: function name() view returns(string)
  5921  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) Name(opts *bind.CallOpts) (string, error) {
  5922  	var out []interface{}
  5923  	err := _ERC721MetadataMintable.contract.Call(opts, &out, "name")
  5924  
  5925  	if err != nil {
  5926  		return *new(string), err
  5927  	}
  5928  
  5929  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  5930  
  5931  	return out0, err
  5932  
  5933  }
  5934  
  5935  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  5936  //
  5937  // Solidity: function name() view returns(string)
  5938  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) Name() (string, error) {
  5939  	return _ERC721MetadataMintable.Contract.Name(&_ERC721MetadataMintable.CallOpts)
  5940  }
  5941  
  5942  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  5943  //
  5944  // Solidity: function name() view returns(string)
  5945  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) Name() (string, error) {
  5946  	return _ERC721MetadataMintable.Contract.Name(&_ERC721MetadataMintable.CallOpts)
  5947  }
  5948  
  5949  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  5950  //
  5951  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  5952  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  5953  	var out []interface{}
  5954  	err := _ERC721MetadataMintable.contract.Call(opts, &out, "ownerOf", tokenId)
  5955  
  5956  	if err != nil {
  5957  		return *new(common.Address), err
  5958  	}
  5959  
  5960  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  5961  
  5962  	return out0, err
  5963  
  5964  }
  5965  
  5966  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  5967  //
  5968  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  5969  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  5970  	return _ERC721MetadataMintable.Contract.OwnerOf(&_ERC721MetadataMintable.CallOpts, tokenId)
  5971  }
  5972  
  5973  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  5974  //
  5975  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  5976  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  5977  	return _ERC721MetadataMintable.Contract.OwnerOf(&_ERC721MetadataMintable.CallOpts, tokenId)
  5978  }
  5979  
  5980  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  5981  //
  5982  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  5983  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  5984  	var out []interface{}
  5985  	err := _ERC721MetadataMintable.contract.Call(opts, &out, "supportsInterface", interfaceId)
  5986  
  5987  	if err != nil {
  5988  		return *new(bool), err
  5989  	}
  5990  
  5991  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  5992  
  5993  	return out0, err
  5994  
  5995  }
  5996  
  5997  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  5998  //
  5999  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  6000  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  6001  	return _ERC721MetadataMintable.Contract.SupportsInterface(&_ERC721MetadataMintable.CallOpts, interfaceId)
  6002  }
  6003  
  6004  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  6005  //
  6006  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  6007  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  6008  	return _ERC721MetadataMintable.Contract.SupportsInterface(&_ERC721MetadataMintable.CallOpts, interfaceId)
  6009  }
  6010  
  6011  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  6012  //
  6013  // Solidity: function symbol() view returns(string)
  6014  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) Symbol(opts *bind.CallOpts) (string, error) {
  6015  	var out []interface{}
  6016  	err := _ERC721MetadataMintable.contract.Call(opts, &out, "symbol")
  6017  
  6018  	if err != nil {
  6019  		return *new(string), err
  6020  	}
  6021  
  6022  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  6023  
  6024  	return out0, err
  6025  
  6026  }
  6027  
  6028  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  6029  //
  6030  // Solidity: function symbol() view returns(string)
  6031  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) Symbol() (string, error) {
  6032  	return _ERC721MetadataMintable.Contract.Symbol(&_ERC721MetadataMintable.CallOpts)
  6033  }
  6034  
  6035  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  6036  //
  6037  // Solidity: function symbol() view returns(string)
  6038  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) Symbol() (string, error) {
  6039  	return _ERC721MetadataMintable.Contract.Symbol(&_ERC721MetadataMintable.CallOpts)
  6040  }
  6041  
  6042  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  6043  //
  6044  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  6045  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) {
  6046  	var out []interface{}
  6047  	err := _ERC721MetadataMintable.contract.Call(opts, &out, "tokenURI", tokenId)
  6048  
  6049  	if err != nil {
  6050  		return *new(string), err
  6051  	}
  6052  
  6053  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  6054  
  6055  	return out0, err
  6056  
  6057  }
  6058  
  6059  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  6060  //
  6061  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  6062  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) TokenURI(tokenId *big.Int) (string, error) {
  6063  	return _ERC721MetadataMintable.Contract.TokenURI(&_ERC721MetadataMintable.CallOpts, tokenId)
  6064  }
  6065  
  6066  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  6067  //
  6068  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  6069  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) TokenURI(tokenId *big.Int) (string, error) {
  6070  	return _ERC721MetadataMintable.Contract.TokenURI(&_ERC721MetadataMintable.CallOpts, tokenId)
  6071  }
  6072  
  6073  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  6074  //
  6075  // Solidity: function addMinter(address account) returns()
  6076  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
  6077  	return _ERC721MetadataMintable.contract.Transact(opts, "addMinter", account)
  6078  }
  6079  
  6080  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  6081  //
  6082  // Solidity: function addMinter(address account) returns()
  6083  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) AddMinter(account common.Address) (*types.Transaction, error) {
  6084  	return _ERC721MetadataMintable.Contract.AddMinter(&_ERC721MetadataMintable.TransactOpts, account)
  6085  }
  6086  
  6087  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  6088  //
  6089  // Solidity: function addMinter(address account) returns()
  6090  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
  6091  	return _ERC721MetadataMintable.Contract.AddMinter(&_ERC721MetadataMintable.TransactOpts, account)
  6092  }
  6093  
  6094  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  6095  //
  6096  // Solidity: function approve(address to, uint256 tokenId) returns()
  6097  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  6098  	return _ERC721MetadataMintable.contract.Transact(opts, "approve", to, tokenId)
  6099  }
  6100  
  6101  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  6102  //
  6103  // Solidity: function approve(address to, uint256 tokenId) returns()
  6104  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  6105  	return _ERC721MetadataMintable.Contract.Approve(&_ERC721MetadataMintable.TransactOpts, to, tokenId)
  6106  }
  6107  
  6108  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  6109  //
  6110  // Solidity: function approve(address to, uint256 tokenId) returns()
  6111  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  6112  	return _ERC721MetadataMintable.Contract.Approve(&_ERC721MetadataMintable.TransactOpts, to, tokenId)
  6113  }
  6114  
  6115  // MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f.
  6116  //
  6117  // Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool)
  6118  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) MintWithTokenURI(opts *bind.TransactOpts, to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) {
  6119  	return _ERC721MetadataMintable.contract.Transact(opts, "mintWithTokenURI", to, tokenId, tokenURI)
  6120  }
  6121  
  6122  // MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f.
  6123  //
  6124  // Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool)
  6125  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) MintWithTokenURI(to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) {
  6126  	return _ERC721MetadataMintable.Contract.MintWithTokenURI(&_ERC721MetadataMintable.TransactOpts, to, tokenId, tokenURI)
  6127  }
  6128  
  6129  // MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f.
  6130  //
  6131  // Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool)
  6132  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) MintWithTokenURI(to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) {
  6133  	return _ERC721MetadataMintable.Contract.MintWithTokenURI(&_ERC721MetadataMintable.TransactOpts, to, tokenId, tokenURI)
  6134  }
  6135  
  6136  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  6137  //
  6138  // Solidity: function renounceMinter() returns()
  6139  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
  6140  	return _ERC721MetadataMintable.contract.Transact(opts, "renounceMinter")
  6141  }
  6142  
  6143  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  6144  //
  6145  // Solidity: function renounceMinter() returns()
  6146  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) RenounceMinter() (*types.Transaction, error) {
  6147  	return _ERC721MetadataMintable.Contract.RenounceMinter(&_ERC721MetadataMintable.TransactOpts)
  6148  }
  6149  
  6150  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  6151  //
  6152  // Solidity: function renounceMinter() returns()
  6153  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) RenounceMinter() (*types.Transaction, error) {
  6154  	return _ERC721MetadataMintable.Contract.RenounceMinter(&_ERC721MetadataMintable.TransactOpts)
  6155  }
  6156  
  6157  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  6158  //
  6159  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  6160  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  6161  	return _ERC721MetadataMintable.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  6162  }
  6163  
  6164  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  6165  //
  6166  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  6167  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  6168  	return _ERC721MetadataMintable.Contract.SafeTransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId)
  6169  }
  6170  
  6171  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  6172  //
  6173  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  6174  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  6175  	return _ERC721MetadataMintable.Contract.SafeTransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId)
  6176  }
  6177  
  6178  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  6179  //
  6180  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  6181  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  6182  	return _ERC721MetadataMintable.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
  6183  }
  6184  
  6185  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  6186  //
  6187  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  6188  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  6189  	return _ERC721MetadataMintable.Contract.SafeTransferFrom0(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId, _data)
  6190  }
  6191  
  6192  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  6193  //
  6194  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  6195  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  6196  	return _ERC721MetadataMintable.Contract.SafeTransferFrom0(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId, _data)
  6197  }
  6198  
  6199  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  6200  //
  6201  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  6202  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
  6203  	return _ERC721MetadataMintable.contract.Transact(opts, "setApprovalForAll", to, approved)
  6204  }
  6205  
  6206  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  6207  //
  6208  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  6209  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  6210  	return _ERC721MetadataMintable.Contract.SetApprovalForAll(&_ERC721MetadataMintable.TransactOpts, to, approved)
  6211  }
  6212  
  6213  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  6214  //
  6215  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  6216  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  6217  	return _ERC721MetadataMintable.Contract.SetApprovalForAll(&_ERC721MetadataMintable.TransactOpts, to, approved)
  6218  }
  6219  
  6220  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  6221  //
  6222  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  6223  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  6224  	return _ERC721MetadataMintable.contract.Transact(opts, "transferFrom", from, to, tokenId)
  6225  }
  6226  
  6227  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  6228  //
  6229  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  6230  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  6231  	return _ERC721MetadataMintable.Contract.TransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId)
  6232  }
  6233  
  6234  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  6235  //
  6236  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  6237  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  6238  	return _ERC721MetadataMintable.Contract.TransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId)
  6239  }
  6240  
  6241  // 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.
  6242  type ERC721MetadataMintableApprovalIterator struct {
  6243  	Event *ERC721MetadataMintableApproval // Event containing the contract specifics and raw log
  6244  
  6245  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6246  	event    string              // Event name to use for unpacking event data
  6247  
  6248  	logs chan types.Log      // Log channel receiving the found contract events
  6249  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6250  	done bool                // Whether the subscription completed delivering logs
  6251  	fail error               // Occurred error to stop iteration
  6252  }
  6253  
  6254  // Next advances the iterator to the subsequent event, returning whether there
  6255  // are any more events found. In case of a retrieval or parsing error, false is
  6256  // returned and Error() can be queried for the exact failure.
  6257  func (it *ERC721MetadataMintableApprovalIterator) Next() bool {
  6258  	// If the iterator failed, stop iterating
  6259  	if it.fail != nil {
  6260  		return false
  6261  	}
  6262  	// If the iterator completed, deliver directly whatever's available
  6263  	if it.done {
  6264  		select {
  6265  		case log := <-it.logs:
  6266  			it.Event = new(ERC721MetadataMintableApproval)
  6267  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6268  				it.fail = err
  6269  				return false
  6270  			}
  6271  			it.Event.Raw = log
  6272  			return true
  6273  
  6274  		default:
  6275  			return false
  6276  		}
  6277  	}
  6278  	// Iterator still in progress, wait for either a data or an error event
  6279  	select {
  6280  	case log := <-it.logs:
  6281  		it.Event = new(ERC721MetadataMintableApproval)
  6282  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6283  			it.fail = err
  6284  			return false
  6285  		}
  6286  		it.Event.Raw = log
  6287  		return true
  6288  
  6289  	case err := <-it.sub.Err():
  6290  		it.done = true
  6291  		it.fail = err
  6292  		return it.Next()
  6293  	}
  6294  }
  6295  
  6296  // Error returns any retrieval or parsing error occurred during filtering.
  6297  func (it *ERC721MetadataMintableApprovalIterator) Error() error {
  6298  	return it.fail
  6299  }
  6300  
  6301  // Close terminates the iteration process, releasing any pending underlying
  6302  // resources.
  6303  func (it *ERC721MetadataMintableApprovalIterator) Close() error {
  6304  	it.sub.Unsubscribe()
  6305  	return nil
  6306  }
  6307  
  6308  // ERC721MetadataMintableApproval represents a Approval event raised by the ERC721MetadataMintable contract.
  6309  type ERC721MetadataMintableApproval struct {
  6310  	Owner    common.Address
  6311  	Approved common.Address
  6312  	TokenId  *big.Int
  6313  	Raw      types.Log // Blockchain specific contextual infos
  6314  }
  6315  
  6316  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  6317  //
  6318  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  6319  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721MetadataMintableApprovalIterator, error) {
  6320  
  6321  	var ownerRule []interface{}
  6322  	for _, ownerItem := range owner {
  6323  		ownerRule = append(ownerRule, ownerItem)
  6324  	}
  6325  	var approvedRule []interface{}
  6326  	for _, approvedItem := range approved {
  6327  		approvedRule = append(approvedRule, approvedItem)
  6328  	}
  6329  	var tokenIdRule []interface{}
  6330  	for _, tokenIdItem := range tokenId {
  6331  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  6332  	}
  6333  
  6334  	logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  6335  	if err != nil {
  6336  		return nil, err
  6337  	}
  6338  	return &ERC721MetadataMintableApprovalIterator{contract: _ERC721MetadataMintable.contract, event: "Approval", logs: logs, sub: sub}, nil
  6339  }
  6340  
  6341  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  6342  //
  6343  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  6344  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  6345  
  6346  	var ownerRule []interface{}
  6347  	for _, ownerItem := range owner {
  6348  		ownerRule = append(ownerRule, ownerItem)
  6349  	}
  6350  	var approvedRule []interface{}
  6351  	for _, approvedItem := range approved {
  6352  		approvedRule = append(approvedRule, approvedItem)
  6353  	}
  6354  	var tokenIdRule []interface{}
  6355  	for _, tokenIdItem := range tokenId {
  6356  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  6357  	}
  6358  
  6359  	logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  6360  	if err != nil {
  6361  		return nil, err
  6362  	}
  6363  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6364  		defer sub.Unsubscribe()
  6365  		for {
  6366  			select {
  6367  			case log := <-logs:
  6368  				// New log arrived, parse the event and forward to the user
  6369  				event := new(ERC721MetadataMintableApproval)
  6370  				if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Approval", log); err != nil {
  6371  					return err
  6372  				}
  6373  				event.Raw = log
  6374  
  6375  				select {
  6376  				case sink <- event:
  6377  				case err := <-sub.Err():
  6378  					return err
  6379  				case <-quit:
  6380  					return nil
  6381  				}
  6382  			case err := <-sub.Err():
  6383  				return err
  6384  			case <-quit:
  6385  				return nil
  6386  			}
  6387  		}
  6388  	}), nil
  6389  }
  6390  
  6391  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  6392  //
  6393  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  6394  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseApproval(log types.Log) (*ERC721MetadataMintableApproval, error) {
  6395  	event := new(ERC721MetadataMintableApproval)
  6396  	if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Approval", log); err != nil {
  6397  		return nil, err
  6398  	}
  6399  	return event, nil
  6400  }
  6401  
  6402  // 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.
  6403  type ERC721MetadataMintableApprovalForAllIterator struct {
  6404  	Event *ERC721MetadataMintableApprovalForAll // Event containing the contract specifics and raw log
  6405  
  6406  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6407  	event    string              // Event name to use for unpacking event data
  6408  
  6409  	logs chan types.Log      // Log channel receiving the found contract events
  6410  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6411  	done bool                // Whether the subscription completed delivering logs
  6412  	fail error               // Occurred error to stop iteration
  6413  }
  6414  
  6415  // Next advances the iterator to the subsequent event, returning whether there
  6416  // are any more events found. In case of a retrieval or parsing error, false is
  6417  // returned and Error() can be queried for the exact failure.
  6418  func (it *ERC721MetadataMintableApprovalForAllIterator) Next() bool {
  6419  	// If the iterator failed, stop iterating
  6420  	if it.fail != nil {
  6421  		return false
  6422  	}
  6423  	// If the iterator completed, deliver directly whatever's available
  6424  	if it.done {
  6425  		select {
  6426  		case log := <-it.logs:
  6427  			it.Event = new(ERC721MetadataMintableApprovalForAll)
  6428  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6429  				it.fail = err
  6430  				return false
  6431  			}
  6432  			it.Event.Raw = log
  6433  			return true
  6434  
  6435  		default:
  6436  			return false
  6437  		}
  6438  	}
  6439  	// Iterator still in progress, wait for either a data or an error event
  6440  	select {
  6441  	case log := <-it.logs:
  6442  		it.Event = new(ERC721MetadataMintableApprovalForAll)
  6443  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6444  			it.fail = err
  6445  			return false
  6446  		}
  6447  		it.Event.Raw = log
  6448  		return true
  6449  
  6450  	case err := <-it.sub.Err():
  6451  		it.done = true
  6452  		it.fail = err
  6453  		return it.Next()
  6454  	}
  6455  }
  6456  
  6457  // Error returns any retrieval or parsing error occurred during filtering.
  6458  func (it *ERC721MetadataMintableApprovalForAllIterator) Error() error {
  6459  	return it.fail
  6460  }
  6461  
  6462  // Close terminates the iteration process, releasing any pending underlying
  6463  // resources.
  6464  func (it *ERC721MetadataMintableApprovalForAllIterator) Close() error {
  6465  	it.sub.Unsubscribe()
  6466  	return nil
  6467  }
  6468  
  6469  // ERC721MetadataMintableApprovalForAll represents a ApprovalForAll event raised by the ERC721MetadataMintable contract.
  6470  type ERC721MetadataMintableApprovalForAll struct {
  6471  	Owner    common.Address
  6472  	Operator common.Address
  6473  	Approved bool
  6474  	Raw      types.Log // Blockchain specific contextual infos
  6475  }
  6476  
  6477  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  6478  //
  6479  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  6480  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721MetadataMintableApprovalForAllIterator, error) {
  6481  
  6482  	var ownerRule []interface{}
  6483  	for _, ownerItem := range owner {
  6484  		ownerRule = append(ownerRule, ownerItem)
  6485  	}
  6486  	var operatorRule []interface{}
  6487  	for _, operatorItem := range operator {
  6488  		operatorRule = append(operatorRule, operatorItem)
  6489  	}
  6490  
  6491  	logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  6492  	if err != nil {
  6493  		return nil, err
  6494  	}
  6495  	return &ERC721MetadataMintableApprovalForAllIterator{contract: _ERC721MetadataMintable.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  6496  }
  6497  
  6498  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  6499  //
  6500  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  6501  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  6502  
  6503  	var ownerRule []interface{}
  6504  	for _, ownerItem := range owner {
  6505  		ownerRule = append(ownerRule, ownerItem)
  6506  	}
  6507  	var operatorRule []interface{}
  6508  	for _, operatorItem := range operator {
  6509  		operatorRule = append(operatorRule, operatorItem)
  6510  	}
  6511  
  6512  	logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  6513  	if err != nil {
  6514  		return nil, err
  6515  	}
  6516  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6517  		defer sub.Unsubscribe()
  6518  		for {
  6519  			select {
  6520  			case log := <-logs:
  6521  				// New log arrived, parse the event and forward to the user
  6522  				event := new(ERC721MetadataMintableApprovalForAll)
  6523  				if err := _ERC721MetadataMintable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  6524  					return err
  6525  				}
  6526  				event.Raw = log
  6527  
  6528  				select {
  6529  				case sink <- event:
  6530  				case err := <-sub.Err():
  6531  					return err
  6532  				case <-quit:
  6533  					return nil
  6534  				}
  6535  			case err := <-sub.Err():
  6536  				return err
  6537  			case <-quit:
  6538  				return nil
  6539  			}
  6540  		}
  6541  	}), nil
  6542  }
  6543  
  6544  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  6545  //
  6546  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  6547  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseApprovalForAll(log types.Log) (*ERC721MetadataMintableApprovalForAll, error) {
  6548  	event := new(ERC721MetadataMintableApprovalForAll)
  6549  	if err := _ERC721MetadataMintable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  6550  		return nil, err
  6551  	}
  6552  	return event, nil
  6553  }
  6554  
  6555  // 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.
  6556  type ERC721MetadataMintableMinterAddedIterator struct {
  6557  	Event *ERC721MetadataMintableMinterAdded // Event containing the contract specifics and raw log
  6558  
  6559  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6560  	event    string              // Event name to use for unpacking event data
  6561  
  6562  	logs chan types.Log      // Log channel receiving the found contract events
  6563  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6564  	done bool                // Whether the subscription completed delivering logs
  6565  	fail error               // Occurred error to stop iteration
  6566  }
  6567  
  6568  // Next advances the iterator to the subsequent event, returning whether there
  6569  // are any more events found. In case of a retrieval or parsing error, false is
  6570  // returned and Error() can be queried for the exact failure.
  6571  func (it *ERC721MetadataMintableMinterAddedIterator) Next() bool {
  6572  	// If the iterator failed, stop iterating
  6573  	if it.fail != nil {
  6574  		return false
  6575  	}
  6576  	// If the iterator completed, deliver directly whatever's available
  6577  	if it.done {
  6578  		select {
  6579  		case log := <-it.logs:
  6580  			it.Event = new(ERC721MetadataMintableMinterAdded)
  6581  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6582  				it.fail = err
  6583  				return false
  6584  			}
  6585  			it.Event.Raw = log
  6586  			return true
  6587  
  6588  		default:
  6589  			return false
  6590  		}
  6591  	}
  6592  	// Iterator still in progress, wait for either a data or an error event
  6593  	select {
  6594  	case log := <-it.logs:
  6595  		it.Event = new(ERC721MetadataMintableMinterAdded)
  6596  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6597  			it.fail = err
  6598  			return false
  6599  		}
  6600  		it.Event.Raw = log
  6601  		return true
  6602  
  6603  	case err := <-it.sub.Err():
  6604  		it.done = true
  6605  		it.fail = err
  6606  		return it.Next()
  6607  	}
  6608  }
  6609  
  6610  // Error returns any retrieval or parsing error occurred during filtering.
  6611  func (it *ERC721MetadataMintableMinterAddedIterator) Error() error {
  6612  	return it.fail
  6613  }
  6614  
  6615  // Close terminates the iteration process, releasing any pending underlying
  6616  // resources.
  6617  func (it *ERC721MetadataMintableMinterAddedIterator) Close() error {
  6618  	it.sub.Unsubscribe()
  6619  	return nil
  6620  }
  6621  
  6622  // ERC721MetadataMintableMinterAdded represents a MinterAdded event raised by the ERC721MetadataMintable contract.
  6623  type ERC721MetadataMintableMinterAdded struct {
  6624  	Account common.Address
  6625  	Raw     types.Log // Blockchain specific contextual infos
  6626  }
  6627  
  6628  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  6629  //
  6630  // Solidity: event MinterAdded(address indexed account)
  6631  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ERC721MetadataMintableMinterAddedIterator, error) {
  6632  
  6633  	var accountRule []interface{}
  6634  	for _, accountItem := range account {
  6635  		accountRule = append(accountRule, accountItem)
  6636  	}
  6637  
  6638  	logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "MinterAdded", accountRule)
  6639  	if err != nil {
  6640  		return nil, err
  6641  	}
  6642  	return &ERC721MetadataMintableMinterAddedIterator{contract: _ERC721MetadataMintable.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
  6643  }
  6644  
  6645  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  6646  //
  6647  // Solidity: event MinterAdded(address indexed account)
  6648  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableMinterAdded, account []common.Address) (event.Subscription, error) {
  6649  
  6650  	var accountRule []interface{}
  6651  	for _, accountItem := range account {
  6652  		accountRule = append(accountRule, accountItem)
  6653  	}
  6654  
  6655  	logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "MinterAdded", accountRule)
  6656  	if err != nil {
  6657  		return nil, err
  6658  	}
  6659  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6660  		defer sub.Unsubscribe()
  6661  		for {
  6662  			select {
  6663  			case log := <-logs:
  6664  				// New log arrived, parse the event and forward to the user
  6665  				event := new(ERC721MetadataMintableMinterAdded)
  6666  				if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  6667  					return err
  6668  				}
  6669  				event.Raw = log
  6670  
  6671  				select {
  6672  				case sink <- event:
  6673  				case err := <-sub.Err():
  6674  					return err
  6675  				case <-quit:
  6676  					return nil
  6677  				}
  6678  			case err := <-sub.Err():
  6679  				return err
  6680  			case <-quit:
  6681  				return nil
  6682  			}
  6683  		}
  6684  	}), nil
  6685  }
  6686  
  6687  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  6688  //
  6689  // Solidity: event MinterAdded(address indexed account)
  6690  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseMinterAdded(log types.Log) (*ERC721MetadataMintableMinterAdded, error) {
  6691  	event := new(ERC721MetadataMintableMinterAdded)
  6692  	if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  6693  		return nil, err
  6694  	}
  6695  	return event, nil
  6696  }
  6697  
  6698  // 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.
  6699  type ERC721MetadataMintableMinterRemovedIterator struct {
  6700  	Event *ERC721MetadataMintableMinterRemoved // Event containing the contract specifics and raw log
  6701  
  6702  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6703  	event    string              // Event name to use for unpacking event data
  6704  
  6705  	logs chan types.Log      // Log channel receiving the found contract events
  6706  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6707  	done bool                // Whether the subscription completed delivering logs
  6708  	fail error               // Occurred error to stop iteration
  6709  }
  6710  
  6711  // Next advances the iterator to the subsequent event, returning whether there
  6712  // are any more events found. In case of a retrieval or parsing error, false is
  6713  // returned and Error() can be queried for the exact failure.
  6714  func (it *ERC721MetadataMintableMinterRemovedIterator) Next() bool {
  6715  	// If the iterator failed, stop iterating
  6716  	if it.fail != nil {
  6717  		return false
  6718  	}
  6719  	// If the iterator completed, deliver directly whatever's available
  6720  	if it.done {
  6721  		select {
  6722  		case log := <-it.logs:
  6723  			it.Event = new(ERC721MetadataMintableMinterRemoved)
  6724  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6725  				it.fail = err
  6726  				return false
  6727  			}
  6728  			it.Event.Raw = log
  6729  			return true
  6730  
  6731  		default:
  6732  			return false
  6733  		}
  6734  	}
  6735  	// Iterator still in progress, wait for either a data or an error event
  6736  	select {
  6737  	case log := <-it.logs:
  6738  		it.Event = new(ERC721MetadataMintableMinterRemoved)
  6739  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6740  			it.fail = err
  6741  			return false
  6742  		}
  6743  		it.Event.Raw = log
  6744  		return true
  6745  
  6746  	case err := <-it.sub.Err():
  6747  		it.done = true
  6748  		it.fail = err
  6749  		return it.Next()
  6750  	}
  6751  }
  6752  
  6753  // Error returns any retrieval or parsing error occurred during filtering.
  6754  func (it *ERC721MetadataMintableMinterRemovedIterator) Error() error {
  6755  	return it.fail
  6756  }
  6757  
  6758  // Close terminates the iteration process, releasing any pending underlying
  6759  // resources.
  6760  func (it *ERC721MetadataMintableMinterRemovedIterator) Close() error {
  6761  	it.sub.Unsubscribe()
  6762  	return nil
  6763  }
  6764  
  6765  // ERC721MetadataMintableMinterRemoved represents a MinterRemoved event raised by the ERC721MetadataMintable contract.
  6766  type ERC721MetadataMintableMinterRemoved struct {
  6767  	Account common.Address
  6768  	Raw     types.Log // Blockchain specific contextual infos
  6769  }
  6770  
  6771  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  6772  //
  6773  // Solidity: event MinterRemoved(address indexed account)
  6774  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ERC721MetadataMintableMinterRemovedIterator, error) {
  6775  
  6776  	var accountRule []interface{}
  6777  	for _, accountItem := range account {
  6778  		accountRule = append(accountRule, accountItem)
  6779  	}
  6780  
  6781  	logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "MinterRemoved", accountRule)
  6782  	if err != nil {
  6783  		return nil, err
  6784  	}
  6785  	return &ERC721MetadataMintableMinterRemovedIterator{contract: _ERC721MetadataMintable.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
  6786  }
  6787  
  6788  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  6789  //
  6790  // Solidity: event MinterRemoved(address indexed account)
  6791  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableMinterRemoved, account []common.Address) (event.Subscription, error) {
  6792  
  6793  	var accountRule []interface{}
  6794  	for _, accountItem := range account {
  6795  		accountRule = append(accountRule, accountItem)
  6796  	}
  6797  
  6798  	logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "MinterRemoved", accountRule)
  6799  	if err != nil {
  6800  		return nil, err
  6801  	}
  6802  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6803  		defer sub.Unsubscribe()
  6804  		for {
  6805  			select {
  6806  			case log := <-logs:
  6807  				// New log arrived, parse the event and forward to the user
  6808  				event := new(ERC721MetadataMintableMinterRemoved)
  6809  				if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  6810  					return err
  6811  				}
  6812  				event.Raw = log
  6813  
  6814  				select {
  6815  				case sink <- event:
  6816  				case err := <-sub.Err():
  6817  					return err
  6818  				case <-quit:
  6819  					return nil
  6820  				}
  6821  			case err := <-sub.Err():
  6822  				return err
  6823  			case <-quit:
  6824  				return nil
  6825  			}
  6826  		}
  6827  	}), nil
  6828  }
  6829  
  6830  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  6831  //
  6832  // Solidity: event MinterRemoved(address indexed account)
  6833  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseMinterRemoved(log types.Log) (*ERC721MetadataMintableMinterRemoved, error) {
  6834  	event := new(ERC721MetadataMintableMinterRemoved)
  6835  	if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  6836  		return nil, err
  6837  	}
  6838  	return event, nil
  6839  }
  6840  
  6841  // 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.
  6842  type ERC721MetadataMintableTransferIterator struct {
  6843  	Event *ERC721MetadataMintableTransfer // Event containing the contract specifics and raw log
  6844  
  6845  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6846  	event    string              // Event name to use for unpacking event data
  6847  
  6848  	logs chan types.Log      // Log channel receiving the found contract events
  6849  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6850  	done bool                // Whether the subscription completed delivering logs
  6851  	fail error               // Occurred error to stop iteration
  6852  }
  6853  
  6854  // Next advances the iterator to the subsequent event, returning whether there
  6855  // are any more events found. In case of a retrieval or parsing error, false is
  6856  // returned and Error() can be queried for the exact failure.
  6857  func (it *ERC721MetadataMintableTransferIterator) Next() bool {
  6858  	// If the iterator failed, stop iterating
  6859  	if it.fail != nil {
  6860  		return false
  6861  	}
  6862  	// If the iterator completed, deliver directly whatever's available
  6863  	if it.done {
  6864  		select {
  6865  		case log := <-it.logs:
  6866  			it.Event = new(ERC721MetadataMintableTransfer)
  6867  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6868  				it.fail = err
  6869  				return false
  6870  			}
  6871  			it.Event.Raw = log
  6872  			return true
  6873  
  6874  		default:
  6875  			return false
  6876  		}
  6877  	}
  6878  	// Iterator still in progress, wait for either a data or an error event
  6879  	select {
  6880  	case log := <-it.logs:
  6881  		it.Event = new(ERC721MetadataMintableTransfer)
  6882  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6883  			it.fail = err
  6884  			return false
  6885  		}
  6886  		it.Event.Raw = log
  6887  		return true
  6888  
  6889  	case err := <-it.sub.Err():
  6890  		it.done = true
  6891  		it.fail = err
  6892  		return it.Next()
  6893  	}
  6894  }
  6895  
  6896  // Error returns any retrieval or parsing error occurred during filtering.
  6897  func (it *ERC721MetadataMintableTransferIterator) Error() error {
  6898  	return it.fail
  6899  }
  6900  
  6901  // Close terminates the iteration process, releasing any pending underlying
  6902  // resources.
  6903  func (it *ERC721MetadataMintableTransferIterator) Close() error {
  6904  	it.sub.Unsubscribe()
  6905  	return nil
  6906  }
  6907  
  6908  // ERC721MetadataMintableTransfer represents a Transfer event raised by the ERC721MetadataMintable contract.
  6909  type ERC721MetadataMintableTransfer struct {
  6910  	From    common.Address
  6911  	To      common.Address
  6912  	TokenId *big.Int
  6913  	Raw     types.Log // Blockchain specific contextual infos
  6914  }
  6915  
  6916  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  6917  //
  6918  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  6919  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721MetadataMintableTransferIterator, error) {
  6920  
  6921  	var fromRule []interface{}
  6922  	for _, fromItem := range from {
  6923  		fromRule = append(fromRule, fromItem)
  6924  	}
  6925  	var toRule []interface{}
  6926  	for _, toItem := range to {
  6927  		toRule = append(toRule, toItem)
  6928  	}
  6929  	var tokenIdRule []interface{}
  6930  	for _, tokenIdItem := range tokenId {
  6931  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  6932  	}
  6933  
  6934  	logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  6935  	if err != nil {
  6936  		return nil, err
  6937  	}
  6938  	return &ERC721MetadataMintableTransferIterator{contract: _ERC721MetadataMintable.contract, event: "Transfer", logs: logs, sub: sub}, nil
  6939  }
  6940  
  6941  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  6942  //
  6943  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  6944  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  6945  
  6946  	var fromRule []interface{}
  6947  	for _, fromItem := range from {
  6948  		fromRule = append(fromRule, fromItem)
  6949  	}
  6950  	var toRule []interface{}
  6951  	for _, toItem := range to {
  6952  		toRule = append(toRule, toItem)
  6953  	}
  6954  	var tokenIdRule []interface{}
  6955  	for _, tokenIdItem := range tokenId {
  6956  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  6957  	}
  6958  
  6959  	logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  6960  	if err != nil {
  6961  		return nil, err
  6962  	}
  6963  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6964  		defer sub.Unsubscribe()
  6965  		for {
  6966  			select {
  6967  			case log := <-logs:
  6968  				// New log arrived, parse the event and forward to the user
  6969  				event := new(ERC721MetadataMintableTransfer)
  6970  				if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Transfer", log); err != nil {
  6971  					return err
  6972  				}
  6973  				event.Raw = log
  6974  
  6975  				select {
  6976  				case sink <- event:
  6977  				case err := <-sub.Err():
  6978  					return err
  6979  				case <-quit:
  6980  					return nil
  6981  				}
  6982  			case err := <-sub.Err():
  6983  				return err
  6984  			case <-quit:
  6985  				return nil
  6986  			}
  6987  		}
  6988  	}), nil
  6989  }
  6990  
  6991  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  6992  //
  6993  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  6994  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseTransfer(log types.Log) (*ERC721MetadataMintableTransfer, error) {
  6995  	event := new(ERC721MetadataMintableTransfer)
  6996  	if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Transfer", log); err != nil {
  6997  		return nil, err
  6998  	}
  6999  	return event, nil
  7000  }
  7001  
  7002  // ERC721ServiceChainMetaData contains all meta data concerning the ERC721ServiceChain contract.
  7003  var ERC721ServiceChainMetaData = &bind.MetaData{
  7004  	ABI: "[{\"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\":\"_uid\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestValueTransfer\",\"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\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\"}],\"name\":\"setBridge\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"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\":\"bridge\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"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\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":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\"}]",
  7005  	Sigs: map[string]string{
  7006  		"095ea7b3": "approve(address,uint256)",
  7007  		"70a08231": "balanceOf(address)",
  7008  		"e78cea92": "bridge()",
  7009  		"081812fc": "getApproved(uint256)",
  7010  		"e985e9c5": "isApprovedForAll(address,address)",
  7011  		"8f32d59b": "isOwner()",
  7012  		"8da5cb5b": "owner()",
  7013  		"6352211e": "ownerOf(uint256)",
  7014  		"715018a6": "renounceOwnership()",
  7015  		"3f4c4e3d": "requestValueTransfer(uint256,address,bytes)",
  7016  		"42842e0e": "safeTransferFrom(address,address,uint256)",
  7017  		"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  7018  		"a22cb465": "setApprovalForAll(address,bool)",
  7019  		"8dd14802": "setBridge(address)",
  7020  		"01ffc9a7": "supportsInterface(bytes4)",
  7021  		"23b872dd": "transferFrom(address,address,uint256)",
  7022  		"f2fde38b": "transferOwnership(address)",
  7023  	},
  7024  }
  7025  
  7026  // ERC721ServiceChainABI is the input ABI used to generate the binding from.
  7027  // Deprecated: Use ERC721ServiceChainMetaData.ABI instead.
  7028  var ERC721ServiceChainABI = ERC721ServiceChainMetaData.ABI
  7029  
  7030  // ERC721ServiceChainBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  7031  const ERC721ServiceChainBinRuntime = ``
  7032  
  7033  // ERC721ServiceChainFuncSigs maps the 4-byte function signature to its string representation.
  7034  // Deprecated: Use ERC721ServiceChainMetaData.Sigs instead.
  7035  var ERC721ServiceChainFuncSigs = ERC721ServiceChainMetaData.Sigs
  7036  
  7037  // ERC721ServiceChain is an auto generated Go binding around a Klaytn contract.
  7038  type ERC721ServiceChain struct {
  7039  	ERC721ServiceChainCaller     // Read-only binding to the contract
  7040  	ERC721ServiceChainTransactor // Write-only binding to the contract
  7041  	ERC721ServiceChainFilterer   // Log filterer for contract events
  7042  }
  7043  
  7044  // ERC721ServiceChainCaller is an auto generated read-only Go binding around a Klaytn contract.
  7045  type ERC721ServiceChainCaller struct {
  7046  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7047  }
  7048  
  7049  // ERC721ServiceChainTransactor is an auto generated write-only Go binding around a Klaytn contract.
  7050  type ERC721ServiceChainTransactor struct {
  7051  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7052  }
  7053  
  7054  // ERC721ServiceChainFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  7055  type ERC721ServiceChainFilterer struct {
  7056  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7057  }
  7058  
  7059  // ERC721ServiceChainSession is an auto generated Go binding around a Klaytn contract,
  7060  // with pre-set call and transact options.
  7061  type ERC721ServiceChainSession struct {
  7062  	Contract     *ERC721ServiceChain // Generic contract binding to set the session for
  7063  	CallOpts     bind.CallOpts       // Call options to use throughout this session
  7064  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
  7065  }
  7066  
  7067  // ERC721ServiceChainCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  7068  // with pre-set call options.
  7069  type ERC721ServiceChainCallerSession struct {
  7070  	Contract *ERC721ServiceChainCaller // Generic contract caller binding to set the session for
  7071  	CallOpts bind.CallOpts             // Call options to use throughout this session
  7072  }
  7073  
  7074  // ERC721ServiceChainTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  7075  // with pre-set transact options.
  7076  type ERC721ServiceChainTransactorSession struct {
  7077  	Contract     *ERC721ServiceChainTransactor // Generic contract transactor binding to set the session for
  7078  	TransactOpts bind.TransactOpts             // Transaction auth options to use throughout this session
  7079  }
  7080  
  7081  // ERC721ServiceChainRaw is an auto generated low-level Go binding around a Klaytn contract.
  7082  type ERC721ServiceChainRaw struct {
  7083  	Contract *ERC721ServiceChain // Generic contract binding to access the raw methods on
  7084  }
  7085  
  7086  // ERC721ServiceChainCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  7087  type ERC721ServiceChainCallerRaw struct {
  7088  	Contract *ERC721ServiceChainCaller // Generic read-only contract binding to access the raw methods on
  7089  }
  7090  
  7091  // ERC721ServiceChainTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  7092  type ERC721ServiceChainTransactorRaw struct {
  7093  	Contract *ERC721ServiceChainTransactor // Generic write-only contract binding to access the raw methods on
  7094  }
  7095  
  7096  // NewERC721ServiceChain creates a new instance of ERC721ServiceChain, bound to a specific deployed contract.
  7097  func NewERC721ServiceChain(address common.Address, backend bind.ContractBackend) (*ERC721ServiceChain, error) {
  7098  	contract, err := bindERC721ServiceChain(address, backend, backend, backend)
  7099  	if err != nil {
  7100  		return nil, err
  7101  	}
  7102  	return &ERC721ServiceChain{ERC721ServiceChainCaller: ERC721ServiceChainCaller{contract: contract}, ERC721ServiceChainTransactor: ERC721ServiceChainTransactor{contract: contract}, ERC721ServiceChainFilterer: ERC721ServiceChainFilterer{contract: contract}}, nil
  7103  }
  7104  
  7105  // NewERC721ServiceChainCaller creates a new read-only instance of ERC721ServiceChain, bound to a specific deployed contract.
  7106  func NewERC721ServiceChainCaller(address common.Address, caller bind.ContractCaller) (*ERC721ServiceChainCaller, error) {
  7107  	contract, err := bindERC721ServiceChain(address, caller, nil, nil)
  7108  	if err != nil {
  7109  		return nil, err
  7110  	}
  7111  	return &ERC721ServiceChainCaller{contract: contract}, nil
  7112  }
  7113  
  7114  // NewERC721ServiceChainTransactor creates a new write-only instance of ERC721ServiceChain, bound to a specific deployed contract.
  7115  func NewERC721ServiceChainTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721ServiceChainTransactor, error) {
  7116  	contract, err := bindERC721ServiceChain(address, nil, transactor, nil)
  7117  	if err != nil {
  7118  		return nil, err
  7119  	}
  7120  	return &ERC721ServiceChainTransactor{contract: contract}, nil
  7121  }
  7122  
  7123  // NewERC721ServiceChainFilterer creates a new log filterer instance of ERC721ServiceChain, bound to a specific deployed contract.
  7124  func NewERC721ServiceChainFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721ServiceChainFilterer, error) {
  7125  	contract, err := bindERC721ServiceChain(address, nil, nil, filterer)
  7126  	if err != nil {
  7127  		return nil, err
  7128  	}
  7129  	return &ERC721ServiceChainFilterer{contract: contract}, nil
  7130  }
  7131  
  7132  // bindERC721ServiceChain binds a generic wrapper to an already deployed contract.
  7133  func bindERC721ServiceChain(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7134  	parsed, err := ERC721ServiceChainMetaData.GetAbi()
  7135  	if err != nil {
  7136  		return nil, err
  7137  	}
  7138  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
  7139  }
  7140  
  7141  // Call invokes the (constant) contract method with params as input values and
  7142  // sets the output to result. The result type might be a single field for simple
  7143  // returns, a slice of interfaces for anonymous returns and a struct for named
  7144  // returns.
  7145  func (_ERC721ServiceChain *ERC721ServiceChainRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  7146  	return _ERC721ServiceChain.Contract.ERC721ServiceChainCaller.contract.Call(opts, result, method, params...)
  7147  }
  7148  
  7149  // Transfer initiates a plain transaction to move funds to the contract, calling
  7150  // its default method if one is available.
  7151  func (_ERC721ServiceChain *ERC721ServiceChainRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7152  	return _ERC721ServiceChain.Contract.ERC721ServiceChainTransactor.contract.Transfer(opts)
  7153  }
  7154  
  7155  // Transact invokes the (paid) contract method with params as input values.
  7156  func (_ERC721ServiceChain *ERC721ServiceChainRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7157  	return _ERC721ServiceChain.Contract.ERC721ServiceChainTransactor.contract.Transact(opts, method, params...)
  7158  }
  7159  
  7160  // Call invokes the (constant) contract method with params as input values and
  7161  // sets the output to result. The result type might be a single field for simple
  7162  // returns, a slice of interfaces for anonymous returns and a struct for named
  7163  // returns.
  7164  func (_ERC721ServiceChain *ERC721ServiceChainCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  7165  	return _ERC721ServiceChain.Contract.contract.Call(opts, result, method, params...)
  7166  }
  7167  
  7168  // Transfer initiates a plain transaction to move funds to the contract, calling
  7169  // its default method if one is available.
  7170  func (_ERC721ServiceChain *ERC721ServiceChainTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7171  	return _ERC721ServiceChain.Contract.contract.Transfer(opts)
  7172  }
  7173  
  7174  // Transact invokes the (paid) contract method with params as input values.
  7175  func (_ERC721ServiceChain *ERC721ServiceChainTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7176  	return _ERC721ServiceChain.Contract.contract.Transact(opts, method, params...)
  7177  }
  7178  
  7179  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  7180  //
  7181  // Solidity: function balanceOf(address owner) view returns(uint256)
  7182  func (_ERC721ServiceChain *ERC721ServiceChainCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  7183  	var out []interface{}
  7184  	err := _ERC721ServiceChain.contract.Call(opts, &out, "balanceOf", owner)
  7185  
  7186  	if err != nil {
  7187  		return *new(*big.Int), err
  7188  	}
  7189  
  7190  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  7191  
  7192  	return out0, err
  7193  
  7194  }
  7195  
  7196  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  7197  //
  7198  // Solidity: function balanceOf(address owner) view returns(uint256)
  7199  func (_ERC721ServiceChain *ERC721ServiceChainSession) BalanceOf(owner common.Address) (*big.Int, error) {
  7200  	return _ERC721ServiceChain.Contract.BalanceOf(&_ERC721ServiceChain.CallOpts, owner)
  7201  }
  7202  
  7203  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  7204  //
  7205  // Solidity: function balanceOf(address owner) view returns(uint256)
  7206  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  7207  	return _ERC721ServiceChain.Contract.BalanceOf(&_ERC721ServiceChain.CallOpts, owner)
  7208  }
  7209  
  7210  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
  7211  //
  7212  // Solidity: function bridge() view returns(address)
  7213  func (_ERC721ServiceChain *ERC721ServiceChainCaller) Bridge(opts *bind.CallOpts) (common.Address, error) {
  7214  	var out []interface{}
  7215  	err := _ERC721ServiceChain.contract.Call(opts, &out, "bridge")
  7216  
  7217  	if err != nil {
  7218  		return *new(common.Address), err
  7219  	}
  7220  
  7221  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  7222  
  7223  	return out0, err
  7224  
  7225  }
  7226  
  7227  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
  7228  //
  7229  // Solidity: function bridge() view returns(address)
  7230  func (_ERC721ServiceChain *ERC721ServiceChainSession) Bridge() (common.Address, error) {
  7231  	return _ERC721ServiceChain.Contract.Bridge(&_ERC721ServiceChain.CallOpts)
  7232  }
  7233  
  7234  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
  7235  //
  7236  // Solidity: function bridge() view returns(address)
  7237  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) Bridge() (common.Address, error) {
  7238  	return _ERC721ServiceChain.Contract.Bridge(&_ERC721ServiceChain.CallOpts)
  7239  }
  7240  
  7241  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  7242  //
  7243  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  7244  func (_ERC721ServiceChain *ERC721ServiceChainCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  7245  	var out []interface{}
  7246  	err := _ERC721ServiceChain.contract.Call(opts, &out, "getApproved", tokenId)
  7247  
  7248  	if err != nil {
  7249  		return *new(common.Address), err
  7250  	}
  7251  
  7252  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  7253  
  7254  	return out0, err
  7255  
  7256  }
  7257  
  7258  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  7259  //
  7260  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  7261  func (_ERC721ServiceChain *ERC721ServiceChainSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  7262  	return _ERC721ServiceChain.Contract.GetApproved(&_ERC721ServiceChain.CallOpts, tokenId)
  7263  }
  7264  
  7265  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  7266  //
  7267  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  7268  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  7269  	return _ERC721ServiceChain.Contract.GetApproved(&_ERC721ServiceChain.CallOpts, tokenId)
  7270  }
  7271  
  7272  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  7273  //
  7274  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  7275  func (_ERC721ServiceChain *ERC721ServiceChainCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  7276  	var out []interface{}
  7277  	err := _ERC721ServiceChain.contract.Call(opts, &out, "isApprovedForAll", owner, operator)
  7278  
  7279  	if err != nil {
  7280  		return *new(bool), err
  7281  	}
  7282  
  7283  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  7284  
  7285  	return out0, err
  7286  
  7287  }
  7288  
  7289  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  7290  //
  7291  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  7292  func (_ERC721ServiceChain *ERC721ServiceChainSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  7293  	return _ERC721ServiceChain.Contract.IsApprovedForAll(&_ERC721ServiceChain.CallOpts, owner, operator)
  7294  }
  7295  
  7296  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  7297  //
  7298  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  7299  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  7300  	return _ERC721ServiceChain.Contract.IsApprovedForAll(&_ERC721ServiceChain.CallOpts, owner, operator)
  7301  }
  7302  
  7303  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  7304  //
  7305  // Solidity: function isOwner() view returns(bool)
  7306  func (_ERC721ServiceChain *ERC721ServiceChainCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
  7307  	var out []interface{}
  7308  	err := _ERC721ServiceChain.contract.Call(opts, &out, "isOwner")
  7309  
  7310  	if err != nil {
  7311  		return *new(bool), err
  7312  	}
  7313  
  7314  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  7315  
  7316  	return out0, err
  7317  
  7318  }
  7319  
  7320  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  7321  //
  7322  // Solidity: function isOwner() view returns(bool)
  7323  func (_ERC721ServiceChain *ERC721ServiceChainSession) IsOwner() (bool, error) {
  7324  	return _ERC721ServiceChain.Contract.IsOwner(&_ERC721ServiceChain.CallOpts)
  7325  }
  7326  
  7327  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  7328  //
  7329  // Solidity: function isOwner() view returns(bool)
  7330  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) IsOwner() (bool, error) {
  7331  	return _ERC721ServiceChain.Contract.IsOwner(&_ERC721ServiceChain.CallOpts)
  7332  }
  7333  
  7334  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  7335  //
  7336  // Solidity: function owner() view returns(address)
  7337  func (_ERC721ServiceChain *ERC721ServiceChainCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  7338  	var out []interface{}
  7339  	err := _ERC721ServiceChain.contract.Call(opts, &out, "owner")
  7340  
  7341  	if err != nil {
  7342  		return *new(common.Address), err
  7343  	}
  7344  
  7345  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  7346  
  7347  	return out0, err
  7348  
  7349  }
  7350  
  7351  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  7352  //
  7353  // Solidity: function owner() view returns(address)
  7354  func (_ERC721ServiceChain *ERC721ServiceChainSession) Owner() (common.Address, error) {
  7355  	return _ERC721ServiceChain.Contract.Owner(&_ERC721ServiceChain.CallOpts)
  7356  }
  7357  
  7358  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  7359  //
  7360  // Solidity: function owner() view returns(address)
  7361  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) Owner() (common.Address, error) {
  7362  	return _ERC721ServiceChain.Contract.Owner(&_ERC721ServiceChain.CallOpts)
  7363  }
  7364  
  7365  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  7366  //
  7367  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  7368  func (_ERC721ServiceChain *ERC721ServiceChainCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  7369  	var out []interface{}
  7370  	err := _ERC721ServiceChain.contract.Call(opts, &out, "ownerOf", tokenId)
  7371  
  7372  	if err != nil {
  7373  		return *new(common.Address), err
  7374  	}
  7375  
  7376  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  7377  
  7378  	return out0, err
  7379  
  7380  }
  7381  
  7382  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  7383  //
  7384  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  7385  func (_ERC721ServiceChain *ERC721ServiceChainSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  7386  	return _ERC721ServiceChain.Contract.OwnerOf(&_ERC721ServiceChain.CallOpts, tokenId)
  7387  }
  7388  
  7389  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  7390  //
  7391  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  7392  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  7393  	return _ERC721ServiceChain.Contract.OwnerOf(&_ERC721ServiceChain.CallOpts, tokenId)
  7394  }
  7395  
  7396  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  7397  //
  7398  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  7399  func (_ERC721ServiceChain *ERC721ServiceChainCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  7400  	var out []interface{}
  7401  	err := _ERC721ServiceChain.contract.Call(opts, &out, "supportsInterface", interfaceId)
  7402  
  7403  	if err != nil {
  7404  		return *new(bool), err
  7405  	}
  7406  
  7407  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  7408  
  7409  	return out0, err
  7410  
  7411  }
  7412  
  7413  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  7414  //
  7415  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  7416  func (_ERC721ServiceChain *ERC721ServiceChainSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  7417  	return _ERC721ServiceChain.Contract.SupportsInterface(&_ERC721ServiceChain.CallOpts, interfaceId)
  7418  }
  7419  
  7420  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  7421  //
  7422  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  7423  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  7424  	return _ERC721ServiceChain.Contract.SupportsInterface(&_ERC721ServiceChain.CallOpts, interfaceId)
  7425  }
  7426  
  7427  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  7428  //
  7429  // Solidity: function approve(address to, uint256 tokenId) returns()
  7430  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7431  	return _ERC721ServiceChain.contract.Transact(opts, "approve", to, tokenId)
  7432  }
  7433  
  7434  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  7435  //
  7436  // Solidity: function approve(address to, uint256 tokenId) returns()
  7437  func (_ERC721ServiceChain *ERC721ServiceChainSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7438  	return _ERC721ServiceChain.Contract.Approve(&_ERC721ServiceChain.TransactOpts, to, tokenId)
  7439  }
  7440  
  7441  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  7442  //
  7443  // Solidity: function approve(address to, uint256 tokenId) returns()
  7444  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7445  	return _ERC721ServiceChain.Contract.Approve(&_ERC721ServiceChain.TransactOpts, to, tokenId)
  7446  }
  7447  
  7448  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  7449  //
  7450  // Solidity: function renounceOwnership() returns()
  7451  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  7452  	return _ERC721ServiceChain.contract.Transact(opts, "renounceOwnership")
  7453  }
  7454  
  7455  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  7456  //
  7457  // Solidity: function renounceOwnership() returns()
  7458  func (_ERC721ServiceChain *ERC721ServiceChainSession) RenounceOwnership() (*types.Transaction, error) {
  7459  	return _ERC721ServiceChain.Contract.RenounceOwnership(&_ERC721ServiceChain.TransactOpts)
  7460  }
  7461  
  7462  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  7463  //
  7464  // Solidity: function renounceOwnership() returns()
  7465  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  7466  	return _ERC721ServiceChain.Contract.RenounceOwnership(&_ERC721ServiceChain.TransactOpts)
  7467  }
  7468  
  7469  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3f4c4e3d.
  7470  //
  7471  // Solidity: function requestValueTransfer(uint256 _uid, address _to, bytes _extraData) returns()
  7472  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) RequestValueTransfer(opts *bind.TransactOpts, _uid *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  7473  	return _ERC721ServiceChain.contract.Transact(opts, "requestValueTransfer", _uid, _to, _extraData)
  7474  }
  7475  
  7476  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3f4c4e3d.
  7477  //
  7478  // Solidity: function requestValueTransfer(uint256 _uid, address _to, bytes _extraData) returns()
  7479  func (_ERC721ServiceChain *ERC721ServiceChainSession) RequestValueTransfer(_uid *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  7480  	return _ERC721ServiceChain.Contract.RequestValueTransfer(&_ERC721ServiceChain.TransactOpts, _uid, _to, _extraData)
  7481  }
  7482  
  7483  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3f4c4e3d.
  7484  //
  7485  // Solidity: function requestValueTransfer(uint256 _uid, address _to, bytes _extraData) returns()
  7486  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) RequestValueTransfer(_uid *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  7487  	return _ERC721ServiceChain.Contract.RequestValueTransfer(&_ERC721ServiceChain.TransactOpts, _uid, _to, _extraData)
  7488  }
  7489  
  7490  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  7491  //
  7492  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  7493  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7494  	return _ERC721ServiceChain.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  7495  }
  7496  
  7497  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  7498  //
  7499  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  7500  func (_ERC721ServiceChain *ERC721ServiceChainSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7501  	return _ERC721ServiceChain.Contract.SafeTransferFrom(&_ERC721ServiceChain.TransactOpts, from, to, tokenId)
  7502  }
  7503  
  7504  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  7505  //
  7506  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  7507  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7508  	return _ERC721ServiceChain.Contract.SafeTransferFrom(&_ERC721ServiceChain.TransactOpts, from, to, tokenId)
  7509  }
  7510  
  7511  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  7512  //
  7513  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  7514  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  7515  	return _ERC721ServiceChain.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
  7516  }
  7517  
  7518  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  7519  //
  7520  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  7521  func (_ERC721ServiceChain *ERC721ServiceChainSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  7522  	return _ERC721ServiceChain.Contract.SafeTransferFrom0(&_ERC721ServiceChain.TransactOpts, from, to, tokenId, _data)
  7523  }
  7524  
  7525  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  7526  //
  7527  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  7528  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  7529  	return _ERC721ServiceChain.Contract.SafeTransferFrom0(&_ERC721ServiceChain.TransactOpts, from, to, tokenId, _data)
  7530  }
  7531  
  7532  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  7533  //
  7534  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  7535  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
  7536  	return _ERC721ServiceChain.contract.Transact(opts, "setApprovalForAll", to, approved)
  7537  }
  7538  
  7539  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  7540  //
  7541  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  7542  func (_ERC721ServiceChain *ERC721ServiceChainSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  7543  	return _ERC721ServiceChain.Contract.SetApprovalForAll(&_ERC721ServiceChain.TransactOpts, to, approved)
  7544  }
  7545  
  7546  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  7547  //
  7548  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  7549  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  7550  	return _ERC721ServiceChain.Contract.SetApprovalForAll(&_ERC721ServiceChain.TransactOpts, to, approved)
  7551  }
  7552  
  7553  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
  7554  //
  7555  // Solidity: function setBridge(address _bridge) returns()
  7556  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) SetBridge(opts *bind.TransactOpts, _bridge common.Address) (*types.Transaction, error) {
  7557  	return _ERC721ServiceChain.contract.Transact(opts, "setBridge", _bridge)
  7558  }
  7559  
  7560  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
  7561  //
  7562  // Solidity: function setBridge(address _bridge) returns()
  7563  func (_ERC721ServiceChain *ERC721ServiceChainSession) SetBridge(_bridge common.Address) (*types.Transaction, error) {
  7564  	return _ERC721ServiceChain.Contract.SetBridge(&_ERC721ServiceChain.TransactOpts, _bridge)
  7565  }
  7566  
  7567  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
  7568  //
  7569  // Solidity: function setBridge(address _bridge) returns()
  7570  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) SetBridge(_bridge common.Address) (*types.Transaction, error) {
  7571  	return _ERC721ServiceChain.Contract.SetBridge(&_ERC721ServiceChain.TransactOpts, _bridge)
  7572  }
  7573  
  7574  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  7575  //
  7576  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  7577  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7578  	return _ERC721ServiceChain.contract.Transact(opts, "transferFrom", from, to, tokenId)
  7579  }
  7580  
  7581  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  7582  //
  7583  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  7584  func (_ERC721ServiceChain *ERC721ServiceChainSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7585  	return _ERC721ServiceChain.Contract.TransferFrom(&_ERC721ServiceChain.TransactOpts, from, to, tokenId)
  7586  }
  7587  
  7588  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  7589  //
  7590  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  7591  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7592  	return _ERC721ServiceChain.Contract.TransferFrom(&_ERC721ServiceChain.TransactOpts, from, to, tokenId)
  7593  }
  7594  
  7595  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  7596  //
  7597  // Solidity: function transferOwnership(address newOwner) returns()
  7598  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  7599  	return _ERC721ServiceChain.contract.Transact(opts, "transferOwnership", newOwner)
  7600  }
  7601  
  7602  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  7603  //
  7604  // Solidity: function transferOwnership(address newOwner) returns()
  7605  func (_ERC721ServiceChain *ERC721ServiceChainSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  7606  	return _ERC721ServiceChain.Contract.TransferOwnership(&_ERC721ServiceChain.TransactOpts, newOwner)
  7607  }
  7608  
  7609  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  7610  //
  7611  // Solidity: function transferOwnership(address newOwner) returns()
  7612  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  7613  	return _ERC721ServiceChain.Contract.TransferOwnership(&_ERC721ServiceChain.TransactOpts, newOwner)
  7614  }
  7615  
  7616  // ERC721ServiceChainApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721ServiceChain contract.
  7617  type ERC721ServiceChainApprovalIterator struct {
  7618  	Event *ERC721ServiceChainApproval // Event containing the contract specifics and raw log
  7619  
  7620  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7621  	event    string              // Event name to use for unpacking event data
  7622  
  7623  	logs chan types.Log      // Log channel receiving the found contract events
  7624  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  7625  	done bool                // Whether the subscription completed delivering logs
  7626  	fail error               // Occurred error to stop iteration
  7627  }
  7628  
  7629  // Next advances the iterator to the subsequent event, returning whether there
  7630  // are any more events found. In case of a retrieval or parsing error, false is
  7631  // returned and Error() can be queried for the exact failure.
  7632  func (it *ERC721ServiceChainApprovalIterator) Next() bool {
  7633  	// If the iterator failed, stop iterating
  7634  	if it.fail != nil {
  7635  		return false
  7636  	}
  7637  	// If the iterator completed, deliver directly whatever's available
  7638  	if it.done {
  7639  		select {
  7640  		case log := <-it.logs:
  7641  			it.Event = new(ERC721ServiceChainApproval)
  7642  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7643  				it.fail = err
  7644  				return false
  7645  			}
  7646  			it.Event.Raw = log
  7647  			return true
  7648  
  7649  		default:
  7650  			return false
  7651  		}
  7652  	}
  7653  	// Iterator still in progress, wait for either a data or an error event
  7654  	select {
  7655  	case log := <-it.logs:
  7656  		it.Event = new(ERC721ServiceChainApproval)
  7657  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7658  			it.fail = err
  7659  			return false
  7660  		}
  7661  		it.Event.Raw = log
  7662  		return true
  7663  
  7664  	case err := <-it.sub.Err():
  7665  		it.done = true
  7666  		it.fail = err
  7667  		return it.Next()
  7668  	}
  7669  }
  7670  
  7671  // Error returns any retrieval or parsing error occurred during filtering.
  7672  func (it *ERC721ServiceChainApprovalIterator) Error() error {
  7673  	return it.fail
  7674  }
  7675  
  7676  // Close terminates the iteration process, releasing any pending underlying
  7677  // resources.
  7678  func (it *ERC721ServiceChainApprovalIterator) Close() error {
  7679  	it.sub.Unsubscribe()
  7680  	return nil
  7681  }
  7682  
  7683  // ERC721ServiceChainApproval represents a Approval event raised by the ERC721ServiceChain contract.
  7684  type ERC721ServiceChainApproval struct {
  7685  	Owner    common.Address
  7686  	Approved common.Address
  7687  	TokenId  *big.Int
  7688  	Raw      types.Log // Blockchain specific contextual infos
  7689  }
  7690  
  7691  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  7692  //
  7693  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  7694  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721ServiceChainApprovalIterator, error) {
  7695  
  7696  	var ownerRule []interface{}
  7697  	for _, ownerItem := range owner {
  7698  		ownerRule = append(ownerRule, ownerItem)
  7699  	}
  7700  	var approvedRule []interface{}
  7701  	for _, approvedItem := range approved {
  7702  		approvedRule = append(approvedRule, approvedItem)
  7703  	}
  7704  	var tokenIdRule []interface{}
  7705  	for _, tokenIdItem := range tokenId {
  7706  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  7707  	}
  7708  
  7709  	logs, sub, err := _ERC721ServiceChain.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  7710  	if err != nil {
  7711  		return nil, err
  7712  	}
  7713  	return &ERC721ServiceChainApprovalIterator{contract: _ERC721ServiceChain.contract, event: "Approval", logs: logs, sub: sub}, nil
  7714  }
  7715  
  7716  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  7717  //
  7718  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  7719  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721ServiceChainApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  7720  
  7721  	var ownerRule []interface{}
  7722  	for _, ownerItem := range owner {
  7723  		ownerRule = append(ownerRule, ownerItem)
  7724  	}
  7725  	var approvedRule []interface{}
  7726  	for _, approvedItem := range approved {
  7727  		approvedRule = append(approvedRule, approvedItem)
  7728  	}
  7729  	var tokenIdRule []interface{}
  7730  	for _, tokenIdItem := range tokenId {
  7731  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  7732  	}
  7733  
  7734  	logs, sub, err := _ERC721ServiceChain.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  7735  	if err != nil {
  7736  		return nil, err
  7737  	}
  7738  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7739  		defer sub.Unsubscribe()
  7740  		for {
  7741  			select {
  7742  			case log := <-logs:
  7743  				// New log arrived, parse the event and forward to the user
  7744  				event := new(ERC721ServiceChainApproval)
  7745  				if err := _ERC721ServiceChain.contract.UnpackLog(event, "Approval", log); err != nil {
  7746  					return err
  7747  				}
  7748  				event.Raw = log
  7749  
  7750  				select {
  7751  				case sink <- event:
  7752  				case err := <-sub.Err():
  7753  					return err
  7754  				case <-quit:
  7755  					return nil
  7756  				}
  7757  			case err := <-sub.Err():
  7758  				return err
  7759  			case <-quit:
  7760  				return nil
  7761  			}
  7762  		}
  7763  	}), nil
  7764  }
  7765  
  7766  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  7767  //
  7768  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  7769  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) ParseApproval(log types.Log) (*ERC721ServiceChainApproval, error) {
  7770  	event := new(ERC721ServiceChainApproval)
  7771  	if err := _ERC721ServiceChain.contract.UnpackLog(event, "Approval", log); err != nil {
  7772  		return nil, err
  7773  	}
  7774  	return event, nil
  7775  }
  7776  
  7777  // ERC721ServiceChainApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721ServiceChain contract.
  7778  type ERC721ServiceChainApprovalForAllIterator struct {
  7779  	Event *ERC721ServiceChainApprovalForAll // Event containing the contract specifics and raw log
  7780  
  7781  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7782  	event    string              // Event name to use for unpacking event data
  7783  
  7784  	logs chan types.Log      // Log channel receiving the found contract events
  7785  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  7786  	done bool                // Whether the subscription completed delivering logs
  7787  	fail error               // Occurred error to stop iteration
  7788  }
  7789  
  7790  // Next advances the iterator to the subsequent event, returning whether there
  7791  // are any more events found. In case of a retrieval or parsing error, false is
  7792  // returned and Error() can be queried for the exact failure.
  7793  func (it *ERC721ServiceChainApprovalForAllIterator) Next() bool {
  7794  	// If the iterator failed, stop iterating
  7795  	if it.fail != nil {
  7796  		return false
  7797  	}
  7798  	// If the iterator completed, deliver directly whatever's available
  7799  	if it.done {
  7800  		select {
  7801  		case log := <-it.logs:
  7802  			it.Event = new(ERC721ServiceChainApprovalForAll)
  7803  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7804  				it.fail = err
  7805  				return false
  7806  			}
  7807  			it.Event.Raw = log
  7808  			return true
  7809  
  7810  		default:
  7811  			return false
  7812  		}
  7813  	}
  7814  	// Iterator still in progress, wait for either a data or an error event
  7815  	select {
  7816  	case log := <-it.logs:
  7817  		it.Event = new(ERC721ServiceChainApprovalForAll)
  7818  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7819  			it.fail = err
  7820  			return false
  7821  		}
  7822  		it.Event.Raw = log
  7823  		return true
  7824  
  7825  	case err := <-it.sub.Err():
  7826  		it.done = true
  7827  		it.fail = err
  7828  		return it.Next()
  7829  	}
  7830  }
  7831  
  7832  // Error returns any retrieval or parsing error occurred during filtering.
  7833  func (it *ERC721ServiceChainApprovalForAllIterator) Error() error {
  7834  	return it.fail
  7835  }
  7836  
  7837  // Close terminates the iteration process, releasing any pending underlying
  7838  // resources.
  7839  func (it *ERC721ServiceChainApprovalForAllIterator) Close() error {
  7840  	it.sub.Unsubscribe()
  7841  	return nil
  7842  }
  7843  
  7844  // ERC721ServiceChainApprovalForAll represents a ApprovalForAll event raised by the ERC721ServiceChain contract.
  7845  type ERC721ServiceChainApprovalForAll struct {
  7846  	Owner    common.Address
  7847  	Operator common.Address
  7848  	Approved bool
  7849  	Raw      types.Log // Blockchain specific contextual infos
  7850  }
  7851  
  7852  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  7853  //
  7854  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  7855  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721ServiceChainApprovalForAllIterator, error) {
  7856  
  7857  	var ownerRule []interface{}
  7858  	for _, ownerItem := range owner {
  7859  		ownerRule = append(ownerRule, ownerItem)
  7860  	}
  7861  	var operatorRule []interface{}
  7862  	for _, operatorItem := range operator {
  7863  		operatorRule = append(operatorRule, operatorItem)
  7864  	}
  7865  
  7866  	logs, sub, err := _ERC721ServiceChain.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  7867  	if err != nil {
  7868  		return nil, err
  7869  	}
  7870  	return &ERC721ServiceChainApprovalForAllIterator{contract: _ERC721ServiceChain.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  7871  }
  7872  
  7873  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  7874  //
  7875  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  7876  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721ServiceChainApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  7877  
  7878  	var ownerRule []interface{}
  7879  	for _, ownerItem := range owner {
  7880  		ownerRule = append(ownerRule, ownerItem)
  7881  	}
  7882  	var operatorRule []interface{}
  7883  	for _, operatorItem := range operator {
  7884  		operatorRule = append(operatorRule, operatorItem)
  7885  	}
  7886  
  7887  	logs, sub, err := _ERC721ServiceChain.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  7888  	if err != nil {
  7889  		return nil, err
  7890  	}
  7891  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7892  		defer sub.Unsubscribe()
  7893  		for {
  7894  			select {
  7895  			case log := <-logs:
  7896  				// New log arrived, parse the event and forward to the user
  7897  				event := new(ERC721ServiceChainApprovalForAll)
  7898  				if err := _ERC721ServiceChain.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  7899  					return err
  7900  				}
  7901  				event.Raw = log
  7902  
  7903  				select {
  7904  				case sink <- event:
  7905  				case err := <-sub.Err():
  7906  					return err
  7907  				case <-quit:
  7908  					return nil
  7909  				}
  7910  			case err := <-sub.Err():
  7911  				return err
  7912  			case <-quit:
  7913  				return nil
  7914  			}
  7915  		}
  7916  	}), nil
  7917  }
  7918  
  7919  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  7920  //
  7921  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  7922  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) ParseApprovalForAll(log types.Log) (*ERC721ServiceChainApprovalForAll, error) {
  7923  	event := new(ERC721ServiceChainApprovalForAll)
  7924  	if err := _ERC721ServiceChain.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  7925  		return nil, err
  7926  	}
  7927  	return event, nil
  7928  }
  7929  
  7930  // ERC721ServiceChainOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ERC721ServiceChain contract.
  7931  type ERC721ServiceChainOwnershipTransferredIterator struct {
  7932  	Event *ERC721ServiceChainOwnershipTransferred // Event containing the contract specifics and raw log
  7933  
  7934  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7935  	event    string              // Event name to use for unpacking event data
  7936  
  7937  	logs chan types.Log      // Log channel receiving the found contract events
  7938  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  7939  	done bool                // Whether the subscription completed delivering logs
  7940  	fail error               // Occurred error to stop iteration
  7941  }
  7942  
  7943  // Next advances the iterator to the subsequent event, returning whether there
  7944  // are any more events found. In case of a retrieval or parsing error, false is
  7945  // returned and Error() can be queried for the exact failure.
  7946  func (it *ERC721ServiceChainOwnershipTransferredIterator) Next() bool {
  7947  	// If the iterator failed, stop iterating
  7948  	if it.fail != nil {
  7949  		return false
  7950  	}
  7951  	// If the iterator completed, deliver directly whatever's available
  7952  	if it.done {
  7953  		select {
  7954  		case log := <-it.logs:
  7955  			it.Event = new(ERC721ServiceChainOwnershipTransferred)
  7956  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7957  				it.fail = err
  7958  				return false
  7959  			}
  7960  			it.Event.Raw = log
  7961  			return true
  7962  
  7963  		default:
  7964  			return false
  7965  		}
  7966  	}
  7967  	// Iterator still in progress, wait for either a data or an error event
  7968  	select {
  7969  	case log := <-it.logs:
  7970  		it.Event = new(ERC721ServiceChainOwnershipTransferred)
  7971  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7972  			it.fail = err
  7973  			return false
  7974  		}
  7975  		it.Event.Raw = log
  7976  		return true
  7977  
  7978  	case err := <-it.sub.Err():
  7979  		it.done = true
  7980  		it.fail = err
  7981  		return it.Next()
  7982  	}
  7983  }
  7984  
  7985  // Error returns any retrieval or parsing error occurred during filtering.
  7986  func (it *ERC721ServiceChainOwnershipTransferredIterator) Error() error {
  7987  	return it.fail
  7988  }
  7989  
  7990  // Close terminates the iteration process, releasing any pending underlying
  7991  // resources.
  7992  func (it *ERC721ServiceChainOwnershipTransferredIterator) Close() error {
  7993  	it.sub.Unsubscribe()
  7994  	return nil
  7995  }
  7996  
  7997  // ERC721ServiceChainOwnershipTransferred represents a OwnershipTransferred event raised by the ERC721ServiceChain contract.
  7998  type ERC721ServiceChainOwnershipTransferred struct {
  7999  	PreviousOwner common.Address
  8000  	NewOwner      common.Address
  8001  	Raw           types.Log // Blockchain specific contextual infos
  8002  }
  8003  
  8004  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  8005  //
  8006  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  8007  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ERC721ServiceChainOwnershipTransferredIterator, error) {
  8008  
  8009  	var previousOwnerRule []interface{}
  8010  	for _, previousOwnerItem := range previousOwner {
  8011  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  8012  	}
  8013  	var newOwnerRule []interface{}
  8014  	for _, newOwnerItem := range newOwner {
  8015  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  8016  	}
  8017  
  8018  	logs, sub, err := _ERC721ServiceChain.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  8019  	if err != nil {
  8020  		return nil, err
  8021  	}
  8022  	return &ERC721ServiceChainOwnershipTransferredIterator{contract: _ERC721ServiceChain.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  8023  }
  8024  
  8025  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  8026  //
  8027  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  8028  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ERC721ServiceChainOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  8029  
  8030  	var previousOwnerRule []interface{}
  8031  	for _, previousOwnerItem := range previousOwner {
  8032  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  8033  	}
  8034  	var newOwnerRule []interface{}
  8035  	for _, newOwnerItem := range newOwner {
  8036  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  8037  	}
  8038  
  8039  	logs, sub, err := _ERC721ServiceChain.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  8040  	if err != nil {
  8041  		return nil, err
  8042  	}
  8043  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8044  		defer sub.Unsubscribe()
  8045  		for {
  8046  			select {
  8047  			case log := <-logs:
  8048  				// New log arrived, parse the event and forward to the user
  8049  				event := new(ERC721ServiceChainOwnershipTransferred)
  8050  				if err := _ERC721ServiceChain.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  8051  					return err
  8052  				}
  8053  				event.Raw = log
  8054  
  8055  				select {
  8056  				case sink <- event:
  8057  				case err := <-sub.Err():
  8058  					return err
  8059  				case <-quit:
  8060  					return nil
  8061  				}
  8062  			case err := <-sub.Err():
  8063  				return err
  8064  			case <-quit:
  8065  				return nil
  8066  			}
  8067  		}
  8068  	}), nil
  8069  }
  8070  
  8071  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  8072  //
  8073  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  8074  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) ParseOwnershipTransferred(log types.Log) (*ERC721ServiceChainOwnershipTransferred, error) {
  8075  	event := new(ERC721ServiceChainOwnershipTransferred)
  8076  	if err := _ERC721ServiceChain.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  8077  		return nil, err
  8078  	}
  8079  	return event, nil
  8080  }
  8081  
  8082  // ERC721ServiceChainTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721ServiceChain contract.
  8083  type ERC721ServiceChainTransferIterator struct {
  8084  	Event *ERC721ServiceChainTransfer // Event containing the contract specifics and raw log
  8085  
  8086  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8087  	event    string              // Event name to use for unpacking event data
  8088  
  8089  	logs chan types.Log      // Log channel receiving the found contract events
  8090  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  8091  	done bool                // Whether the subscription completed delivering logs
  8092  	fail error               // Occurred error to stop iteration
  8093  }
  8094  
  8095  // Next advances the iterator to the subsequent event, returning whether there
  8096  // are any more events found. In case of a retrieval or parsing error, false is
  8097  // returned and Error() can be queried for the exact failure.
  8098  func (it *ERC721ServiceChainTransferIterator) Next() bool {
  8099  	// If the iterator failed, stop iterating
  8100  	if it.fail != nil {
  8101  		return false
  8102  	}
  8103  	// If the iterator completed, deliver directly whatever's available
  8104  	if it.done {
  8105  		select {
  8106  		case log := <-it.logs:
  8107  			it.Event = new(ERC721ServiceChainTransfer)
  8108  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8109  				it.fail = err
  8110  				return false
  8111  			}
  8112  			it.Event.Raw = log
  8113  			return true
  8114  
  8115  		default:
  8116  			return false
  8117  		}
  8118  	}
  8119  	// Iterator still in progress, wait for either a data or an error event
  8120  	select {
  8121  	case log := <-it.logs:
  8122  		it.Event = new(ERC721ServiceChainTransfer)
  8123  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8124  			it.fail = err
  8125  			return false
  8126  		}
  8127  		it.Event.Raw = log
  8128  		return true
  8129  
  8130  	case err := <-it.sub.Err():
  8131  		it.done = true
  8132  		it.fail = err
  8133  		return it.Next()
  8134  	}
  8135  }
  8136  
  8137  // Error returns any retrieval or parsing error occurred during filtering.
  8138  func (it *ERC721ServiceChainTransferIterator) Error() error {
  8139  	return it.fail
  8140  }
  8141  
  8142  // Close terminates the iteration process, releasing any pending underlying
  8143  // resources.
  8144  func (it *ERC721ServiceChainTransferIterator) Close() error {
  8145  	it.sub.Unsubscribe()
  8146  	return nil
  8147  }
  8148  
  8149  // ERC721ServiceChainTransfer represents a Transfer event raised by the ERC721ServiceChain contract.
  8150  type ERC721ServiceChainTransfer struct {
  8151  	From    common.Address
  8152  	To      common.Address
  8153  	TokenId *big.Int
  8154  	Raw     types.Log // Blockchain specific contextual infos
  8155  }
  8156  
  8157  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  8158  //
  8159  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  8160  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721ServiceChainTransferIterator, error) {
  8161  
  8162  	var fromRule []interface{}
  8163  	for _, fromItem := range from {
  8164  		fromRule = append(fromRule, fromItem)
  8165  	}
  8166  	var toRule []interface{}
  8167  	for _, toItem := range to {
  8168  		toRule = append(toRule, toItem)
  8169  	}
  8170  	var tokenIdRule []interface{}
  8171  	for _, tokenIdItem := range tokenId {
  8172  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  8173  	}
  8174  
  8175  	logs, sub, err := _ERC721ServiceChain.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  8176  	if err != nil {
  8177  		return nil, err
  8178  	}
  8179  	return &ERC721ServiceChainTransferIterator{contract: _ERC721ServiceChain.contract, event: "Transfer", logs: logs, sub: sub}, nil
  8180  }
  8181  
  8182  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  8183  //
  8184  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  8185  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721ServiceChainTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  8186  
  8187  	var fromRule []interface{}
  8188  	for _, fromItem := range from {
  8189  		fromRule = append(fromRule, fromItem)
  8190  	}
  8191  	var toRule []interface{}
  8192  	for _, toItem := range to {
  8193  		toRule = append(toRule, toItem)
  8194  	}
  8195  	var tokenIdRule []interface{}
  8196  	for _, tokenIdItem := range tokenId {
  8197  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  8198  	}
  8199  
  8200  	logs, sub, err := _ERC721ServiceChain.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  8201  	if err != nil {
  8202  		return nil, err
  8203  	}
  8204  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8205  		defer sub.Unsubscribe()
  8206  		for {
  8207  			select {
  8208  			case log := <-logs:
  8209  				// New log arrived, parse the event and forward to the user
  8210  				event := new(ERC721ServiceChainTransfer)
  8211  				if err := _ERC721ServiceChain.contract.UnpackLog(event, "Transfer", log); err != nil {
  8212  					return err
  8213  				}
  8214  				event.Raw = log
  8215  
  8216  				select {
  8217  				case sink <- event:
  8218  				case err := <-sub.Err():
  8219  					return err
  8220  				case <-quit:
  8221  					return nil
  8222  				}
  8223  			case err := <-sub.Err():
  8224  				return err
  8225  			case <-quit:
  8226  				return nil
  8227  			}
  8228  		}
  8229  	}), nil
  8230  }
  8231  
  8232  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  8233  //
  8234  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  8235  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) ParseTransfer(log types.Log) (*ERC721ServiceChainTransfer, error) {
  8236  	event := new(ERC721ServiceChainTransfer)
  8237  	if err := _ERC721ServiceChain.contract.UnpackLog(event, "Transfer", log); err != nil {
  8238  		return nil, err
  8239  	}
  8240  	return event, nil
  8241  }
  8242  
  8243  // IERC165MetaData contains all meta data concerning the IERC165 contract.
  8244  var IERC165MetaData = &bind.MetaData{
  8245  	ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]",
  8246  	Sigs: map[string]string{
  8247  		"01ffc9a7": "supportsInterface(bytes4)",
  8248  	},
  8249  }
  8250  
  8251  // IERC165ABI is the input ABI used to generate the binding from.
  8252  // Deprecated: Use IERC165MetaData.ABI instead.
  8253  var IERC165ABI = IERC165MetaData.ABI
  8254  
  8255  // IERC165BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  8256  const IERC165BinRuntime = ``
  8257  
  8258  // IERC165FuncSigs maps the 4-byte function signature to its string representation.
  8259  // Deprecated: Use IERC165MetaData.Sigs instead.
  8260  var IERC165FuncSigs = IERC165MetaData.Sigs
  8261  
  8262  // IERC165 is an auto generated Go binding around a Klaytn contract.
  8263  type IERC165 struct {
  8264  	IERC165Caller     // Read-only binding to the contract
  8265  	IERC165Transactor // Write-only binding to the contract
  8266  	IERC165Filterer   // Log filterer for contract events
  8267  }
  8268  
  8269  // IERC165Caller is an auto generated read-only Go binding around a Klaytn contract.
  8270  type IERC165Caller struct {
  8271  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8272  }
  8273  
  8274  // IERC165Transactor is an auto generated write-only Go binding around a Klaytn contract.
  8275  type IERC165Transactor struct {
  8276  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8277  }
  8278  
  8279  // IERC165Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
  8280  type IERC165Filterer struct {
  8281  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8282  }
  8283  
  8284  // IERC165Session is an auto generated Go binding around a Klaytn contract,
  8285  // with pre-set call and transact options.
  8286  type IERC165Session struct {
  8287  	Contract     *IERC165          // Generic contract binding to set the session for
  8288  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  8289  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  8290  }
  8291  
  8292  // IERC165CallerSession is an auto generated read-only Go binding around a Klaytn contract,
  8293  // with pre-set call options.
  8294  type IERC165CallerSession struct {
  8295  	Contract *IERC165Caller // Generic contract caller binding to set the session for
  8296  	CallOpts bind.CallOpts  // Call options to use throughout this session
  8297  }
  8298  
  8299  // IERC165TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  8300  // with pre-set transact options.
  8301  type IERC165TransactorSession struct {
  8302  	Contract     *IERC165Transactor // Generic contract transactor binding to set the session for
  8303  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  8304  }
  8305  
  8306  // IERC165Raw is an auto generated low-level Go binding around a Klaytn contract.
  8307  type IERC165Raw struct {
  8308  	Contract *IERC165 // Generic contract binding to access the raw methods on
  8309  }
  8310  
  8311  // IERC165CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  8312  type IERC165CallerRaw struct {
  8313  	Contract *IERC165Caller // Generic read-only contract binding to access the raw methods on
  8314  }
  8315  
  8316  // IERC165TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  8317  type IERC165TransactorRaw struct {
  8318  	Contract *IERC165Transactor // Generic write-only contract binding to access the raw methods on
  8319  }
  8320  
  8321  // NewIERC165 creates a new instance of IERC165, bound to a specific deployed contract.
  8322  func NewIERC165(address common.Address, backend bind.ContractBackend) (*IERC165, error) {
  8323  	contract, err := bindIERC165(address, backend, backend, backend)
  8324  	if err != nil {
  8325  		return nil, err
  8326  	}
  8327  	return &IERC165{IERC165Caller: IERC165Caller{contract: contract}, IERC165Transactor: IERC165Transactor{contract: contract}, IERC165Filterer: IERC165Filterer{contract: contract}}, nil
  8328  }
  8329  
  8330  // NewIERC165Caller creates a new read-only instance of IERC165, bound to a specific deployed contract.
  8331  func NewIERC165Caller(address common.Address, caller bind.ContractCaller) (*IERC165Caller, error) {
  8332  	contract, err := bindIERC165(address, caller, nil, nil)
  8333  	if err != nil {
  8334  		return nil, err
  8335  	}
  8336  	return &IERC165Caller{contract: contract}, nil
  8337  }
  8338  
  8339  // NewIERC165Transactor creates a new write-only instance of IERC165, bound to a specific deployed contract.
  8340  func NewIERC165Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC165Transactor, error) {
  8341  	contract, err := bindIERC165(address, nil, transactor, nil)
  8342  	if err != nil {
  8343  		return nil, err
  8344  	}
  8345  	return &IERC165Transactor{contract: contract}, nil
  8346  }
  8347  
  8348  // NewIERC165Filterer creates a new log filterer instance of IERC165, bound to a specific deployed contract.
  8349  func NewIERC165Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC165Filterer, error) {
  8350  	contract, err := bindIERC165(address, nil, nil, filterer)
  8351  	if err != nil {
  8352  		return nil, err
  8353  	}
  8354  	return &IERC165Filterer{contract: contract}, nil
  8355  }
  8356  
  8357  // bindIERC165 binds a generic wrapper to an already deployed contract.
  8358  func bindIERC165(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  8359  	parsed, err := IERC165MetaData.GetAbi()
  8360  	if err != nil {
  8361  		return nil, err
  8362  	}
  8363  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
  8364  }
  8365  
  8366  // Call invokes the (constant) contract method with params as input values and
  8367  // sets the output to result. The result type might be a single field for simple
  8368  // returns, a slice of interfaces for anonymous returns and a struct for named
  8369  // returns.
  8370  func (_IERC165 *IERC165Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  8371  	return _IERC165.Contract.IERC165Caller.contract.Call(opts, result, method, params...)
  8372  }
  8373  
  8374  // Transfer initiates a plain transaction to move funds to the contract, calling
  8375  // its default method if one is available.
  8376  func (_IERC165 *IERC165Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8377  	return _IERC165.Contract.IERC165Transactor.contract.Transfer(opts)
  8378  }
  8379  
  8380  // Transact invokes the (paid) contract method with params as input values.
  8381  func (_IERC165 *IERC165Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8382  	return _IERC165.Contract.IERC165Transactor.contract.Transact(opts, method, params...)
  8383  }
  8384  
  8385  // Call invokes the (constant) contract method with params as input values and
  8386  // sets the output to result. The result type might be a single field for simple
  8387  // returns, a slice of interfaces for anonymous returns and a struct for named
  8388  // returns.
  8389  func (_IERC165 *IERC165CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  8390  	return _IERC165.Contract.contract.Call(opts, result, method, params...)
  8391  }
  8392  
  8393  // Transfer initiates a plain transaction to move funds to the contract, calling
  8394  // its default method if one is available.
  8395  func (_IERC165 *IERC165TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8396  	return _IERC165.Contract.contract.Transfer(opts)
  8397  }
  8398  
  8399  // Transact invokes the (paid) contract method with params as input values.
  8400  func (_IERC165 *IERC165TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8401  	return _IERC165.Contract.contract.Transact(opts, method, params...)
  8402  }
  8403  
  8404  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  8405  //
  8406  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  8407  func (_IERC165 *IERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  8408  	var out []interface{}
  8409  	err := _IERC165.contract.Call(opts, &out, "supportsInterface", interfaceId)
  8410  
  8411  	if err != nil {
  8412  		return *new(bool), err
  8413  	}
  8414  
  8415  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  8416  
  8417  	return out0, err
  8418  
  8419  }
  8420  
  8421  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  8422  //
  8423  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  8424  func (_IERC165 *IERC165Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
  8425  	return _IERC165.Contract.SupportsInterface(&_IERC165.CallOpts, interfaceId)
  8426  }
  8427  
  8428  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  8429  //
  8430  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  8431  func (_IERC165 *IERC165CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  8432  	return _IERC165.Contract.SupportsInterface(&_IERC165.CallOpts, interfaceId)
  8433  }
  8434  
  8435  // IERC721MetaData contains all meta data concerning the IERC721 contract.
  8436  var IERC721MetaData = &bind.MetaData{
  8437  	ABI: "[{\"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\"}]",
  8438  	Sigs: map[string]string{
  8439  		"095ea7b3": "approve(address,uint256)",
  8440  		"70a08231": "balanceOf(address)",
  8441  		"081812fc": "getApproved(uint256)",
  8442  		"e985e9c5": "isApprovedForAll(address,address)",
  8443  		"6352211e": "ownerOf(uint256)",
  8444  		"42842e0e": "safeTransferFrom(address,address,uint256)",
  8445  		"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  8446  		"a22cb465": "setApprovalForAll(address,bool)",
  8447  		"01ffc9a7": "supportsInterface(bytes4)",
  8448  		"23b872dd": "transferFrom(address,address,uint256)",
  8449  	},
  8450  }
  8451  
  8452  // IERC721ABI is the input ABI used to generate the binding from.
  8453  // Deprecated: Use IERC721MetaData.ABI instead.
  8454  var IERC721ABI = IERC721MetaData.ABI
  8455  
  8456  // IERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  8457  const IERC721BinRuntime = ``
  8458  
  8459  // IERC721FuncSigs maps the 4-byte function signature to its string representation.
  8460  // Deprecated: Use IERC721MetaData.Sigs instead.
  8461  var IERC721FuncSigs = IERC721MetaData.Sigs
  8462  
  8463  // IERC721 is an auto generated Go binding around a Klaytn contract.
  8464  type IERC721 struct {
  8465  	IERC721Caller     // Read-only binding to the contract
  8466  	IERC721Transactor // Write-only binding to the contract
  8467  	IERC721Filterer   // Log filterer for contract events
  8468  }
  8469  
  8470  // IERC721Caller is an auto generated read-only Go binding around a Klaytn contract.
  8471  type IERC721Caller struct {
  8472  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8473  }
  8474  
  8475  // IERC721Transactor is an auto generated write-only Go binding around a Klaytn contract.
  8476  type IERC721Transactor struct {
  8477  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8478  }
  8479  
  8480  // IERC721Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
  8481  type IERC721Filterer struct {
  8482  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8483  }
  8484  
  8485  // IERC721Session is an auto generated Go binding around a Klaytn contract,
  8486  // with pre-set call and transact options.
  8487  type IERC721Session struct {
  8488  	Contract     *IERC721          // Generic contract binding to set the session for
  8489  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  8490  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  8491  }
  8492  
  8493  // IERC721CallerSession is an auto generated read-only Go binding around a Klaytn contract,
  8494  // with pre-set call options.
  8495  type IERC721CallerSession struct {
  8496  	Contract *IERC721Caller // Generic contract caller binding to set the session for
  8497  	CallOpts bind.CallOpts  // Call options to use throughout this session
  8498  }
  8499  
  8500  // IERC721TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  8501  // with pre-set transact options.
  8502  type IERC721TransactorSession struct {
  8503  	Contract     *IERC721Transactor // Generic contract transactor binding to set the session for
  8504  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  8505  }
  8506  
  8507  // IERC721Raw is an auto generated low-level Go binding around a Klaytn contract.
  8508  type IERC721Raw struct {
  8509  	Contract *IERC721 // Generic contract binding to access the raw methods on
  8510  }
  8511  
  8512  // IERC721CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  8513  type IERC721CallerRaw struct {
  8514  	Contract *IERC721Caller // Generic read-only contract binding to access the raw methods on
  8515  }
  8516  
  8517  // IERC721TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  8518  type IERC721TransactorRaw struct {
  8519  	Contract *IERC721Transactor // Generic write-only contract binding to access the raw methods on
  8520  }
  8521  
  8522  // NewIERC721 creates a new instance of IERC721, bound to a specific deployed contract.
  8523  func NewIERC721(address common.Address, backend bind.ContractBackend) (*IERC721, error) {
  8524  	contract, err := bindIERC721(address, backend, backend, backend)
  8525  	if err != nil {
  8526  		return nil, err
  8527  	}
  8528  	return &IERC721{IERC721Caller: IERC721Caller{contract: contract}, IERC721Transactor: IERC721Transactor{contract: contract}, IERC721Filterer: IERC721Filterer{contract: contract}}, nil
  8529  }
  8530  
  8531  // NewIERC721Caller creates a new read-only instance of IERC721, bound to a specific deployed contract.
  8532  func NewIERC721Caller(address common.Address, caller bind.ContractCaller) (*IERC721Caller, error) {
  8533  	contract, err := bindIERC721(address, caller, nil, nil)
  8534  	if err != nil {
  8535  		return nil, err
  8536  	}
  8537  	return &IERC721Caller{contract: contract}, nil
  8538  }
  8539  
  8540  // NewIERC721Transactor creates a new write-only instance of IERC721, bound to a specific deployed contract.
  8541  func NewIERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC721Transactor, error) {
  8542  	contract, err := bindIERC721(address, nil, transactor, nil)
  8543  	if err != nil {
  8544  		return nil, err
  8545  	}
  8546  	return &IERC721Transactor{contract: contract}, nil
  8547  }
  8548  
  8549  // NewIERC721Filterer creates a new log filterer instance of IERC721, bound to a specific deployed contract.
  8550  func NewIERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC721Filterer, error) {
  8551  	contract, err := bindIERC721(address, nil, nil, filterer)
  8552  	if err != nil {
  8553  		return nil, err
  8554  	}
  8555  	return &IERC721Filterer{contract: contract}, nil
  8556  }
  8557  
  8558  // bindIERC721 binds a generic wrapper to an already deployed contract.
  8559  func bindIERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  8560  	parsed, err := IERC721MetaData.GetAbi()
  8561  	if err != nil {
  8562  		return nil, err
  8563  	}
  8564  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
  8565  }
  8566  
  8567  // Call invokes the (constant) contract method with params as input values and
  8568  // sets the output to result. The result type might be a single field for simple
  8569  // returns, a slice of interfaces for anonymous returns and a struct for named
  8570  // returns.
  8571  func (_IERC721 *IERC721Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  8572  	return _IERC721.Contract.IERC721Caller.contract.Call(opts, result, method, params...)
  8573  }
  8574  
  8575  // Transfer initiates a plain transaction to move funds to the contract, calling
  8576  // its default method if one is available.
  8577  func (_IERC721 *IERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8578  	return _IERC721.Contract.IERC721Transactor.contract.Transfer(opts)
  8579  }
  8580  
  8581  // Transact invokes the (paid) contract method with params as input values.
  8582  func (_IERC721 *IERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8583  	return _IERC721.Contract.IERC721Transactor.contract.Transact(opts, method, params...)
  8584  }
  8585  
  8586  // Call invokes the (constant) contract method with params as input values and
  8587  // sets the output to result. The result type might be a single field for simple
  8588  // returns, a slice of interfaces for anonymous returns and a struct for named
  8589  // returns.
  8590  func (_IERC721 *IERC721CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  8591  	return _IERC721.Contract.contract.Call(opts, result, method, params...)
  8592  }
  8593  
  8594  // Transfer initiates a plain transaction to move funds to the contract, calling
  8595  // its default method if one is available.
  8596  func (_IERC721 *IERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8597  	return _IERC721.Contract.contract.Transfer(opts)
  8598  }
  8599  
  8600  // Transact invokes the (paid) contract method with params as input values.
  8601  func (_IERC721 *IERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8602  	return _IERC721.Contract.contract.Transact(opts, method, params...)
  8603  }
  8604  
  8605  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  8606  //
  8607  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  8608  func (_IERC721 *IERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  8609  	var out []interface{}
  8610  	err := _IERC721.contract.Call(opts, &out, "balanceOf", owner)
  8611  
  8612  	if err != nil {
  8613  		return *new(*big.Int), err
  8614  	}
  8615  
  8616  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  8617  
  8618  	return out0, err
  8619  
  8620  }
  8621  
  8622  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  8623  //
  8624  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  8625  func (_IERC721 *IERC721Session) BalanceOf(owner common.Address) (*big.Int, error) {
  8626  	return _IERC721.Contract.BalanceOf(&_IERC721.CallOpts, owner)
  8627  }
  8628  
  8629  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  8630  //
  8631  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  8632  func (_IERC721 *IERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  8633  	return _IERC721.Contract.BalanceOf(&_IERC721.CallOpts, owner)
  8634  }
  8635  
  8636  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  8637  //
  8638  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  8639  func (_IERC721 *IERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  8640  	var out []interface{}
  8641  	err := _IERC721.contract.Call(opts, &out, "getApproved", tokenId)
  8642  
  8643  	if err != nil {
  8644  		return *new(common.Address), err
  8645  	}
  8646  
  8647  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  8648  
  8649  	return out0, err
  8650  
  8651  }
  8652  
  8653  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  8654  //
  8655  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  8656  func (_IERC721 *IERC721Session) GetApproved(tokenId *big.Int) (common.Address, error) {
  8657  	return _IERC721.Contract.GetApproved(&_IERC721.CallOpts, tokenId)
  8658  }
  8659  
  8660  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  8661  //
  8662  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  8663  func (_IERC721 *IERC721CallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  8664  	return _IERC721.Contract.GetApproved(&_IERC721.CallOpts, tokenId)
  8665  }
  8666  
  8667  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  8668  //
  8669  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  8670  func (_IERC721 *IERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  8671  	var out []interface{}
  8672  	err := _IERC721.contract.Call(opts, &out, "isApprovedForAll", owner, operator)
  8673  
  8674  	if err != nil {
  8675  		return *new(bool), err
  8676  	}
  8677  
  8678  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  8679  
  8680  	return out0, err
  8681  
  8682  }
  8683  
  8684  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  8685  //
  8686  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  8687  func (_IERC721 *IERC721Session) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  8688  	return _IERC721.Contract.IsApprovedForAll(&_IERC721.CallOpts, owner, operator)
  8689  }
  8690  
  8691  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  8692  //
  8693  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  8694  func (_IERC721 *IERC721CallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  8695  	return _IERC721.Contract.IsApprovedForAll(&_IERC721.CallOpts, owner, operator)
  8696  }
  8697  
  8698  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  8699  //
  8700  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  8701  func (_IERC721 *IERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  8702  	var out []interface{}
  8703  	err := _IERC721.contract.Call(opts, &out, "ownerOf", tokenId)
  8704  
  8705  	if err != nil {
  8706  		return *new(common.Address), err
  8707  	}
  8708  
  8709  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  8710  
  8711  	return out0, err
  8712  
  8713  }
  8714  
  8715  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  8716  //
  8717  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  8718  func (_IERC721 *IERC721Session) OwnerOf(tokenId *big.Int) (common.Address, error) {
  8719  	return _IERC721.Contract.OwnerOf(&_IERC721.CallOpts, tokenId)
  8720  }
  8721  
  8722  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  8723  //
  8724  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  8725  func (_IERC721 *IERC721CallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  8726  	return _IERC721.Contract.OwnerOf(&_IERC721.CallOpts, tokenId)
  8727  }
  8728  
  8729  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  8730  //
  8731  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  8732  func (_IERC721 *IERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  8733  	var out []interface{}
  8734  	err := _IERC721.contract.Call(opts, &out, "supportsInterface", interfaceId)
  8735  
  8736  	if err != nil {
  8737  		return *new(bool), err
  8738  	}
  8739  
  8740  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  8741  
  8742  	return out0, err
  8743  
  8744  }
  8745  
  8746  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  8747  //
  8748  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  8749  func (_IERC721 *IERC721Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
  8750  	return _IERC721.Contract.SupportsInterface(&_IERC721.CallOpts, interfaceId)
  8751  }
  8752  
  8753  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  8754  //
  8755  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  8756  func (_IERC721 *IERC721CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  8757  	return _IERC721.Contract.SupportsInterface(&_IERC721.CallOpts, interfaceId)
  8758  }
  8759  
  8760  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  8761  //
  8762  // Solidity: function approve(address to, uint256 tokenId) returns()
  8763  func (_IERC721 *IERC721Transactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8764  	return _IERC721.contract.Transact(opts, "approve", to, tokenId)
  8765  }
  8766  
  8767  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  8768  //
  8769  // Solidity: function approve(address to, uint256 tokenId) returns()
  8770  func (_IERC721 *IERC721Session) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8771  	return _IERC721.Contract.Approve(&_IERC721.TransactOpts, to, tokenId)
  8772  }
  8773  
  8774  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  8775  //
  8776  // Solidity: function approve(address to, uint256 tokenId) returns()
  8777  func (_IERC721 *IERC721TransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8778  	return _IERC721.Contract.Approve(&_IERC721.TransactOpts, to, tokenId)
  8779  }
  8780  
  8781  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  8782  //
  8783  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  8784  func (_IERC721 *IERC721Transactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8785  	return _IERC721.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  8786  }
  8787  
  8788  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  8789  //
  8790  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  8791  func (_IERC721 *IERC721Session) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8792  	return _IERC721.Contract.SafeTransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
  8793  }
  8794  
  8795  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  8796  //
  8797  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  8798  func (_IERC721 *IERC721TransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8799  	return _IERC721.Contract.SafeTransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
  8800  }
  8801  
  8802  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  8803  //
  8804  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  8805  func (_IERC721 *IERC721Transactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  8806  	return _IERC721.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, data)
  8807  }
  8808  
  8809  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  8810  //
  8811  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  8812  func (_IERC721 *IERC721Session) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  8813  	return _IERC721.Contract.SafeTransferFrom0(&_IERC721.TransactOpts, from, to, tokenId, data)
  8814  }
  8815  
  8816  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  8817  //
  8818  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  8819  func (_IERC721 *IERC721TransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  8820  	return _IERC721.Contract.SafeTransferFrom0(&_IERC721.TransactOpts, from, to, tokenId, data)
  8821  }
  8822  
  8823  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  8824  //
  8825  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
  8826  func (_IERC721 *IERC721Transactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, _approved bool) (*types.Transaction, error) {
  8827  	return _IERC721.contract.Transact(opts, "setApprovalForAll", operator, _approved)
  8828  }
  8829  
  8830  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  8831  //
  8832  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
  8833  func (_IERC721 *IERC721Session) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
  8834  	return _IERC721.Contract.SetApprovalForAll(&_IERC721.TransactOpts, operator, _approved)
  8835  }
  8836  
  8837  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  8838  //
  8839  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
  8840  func (_IERC721 *IERC721TransactorSession) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
  8841  	return _IERC721.Contract.SetApprovalForAll(&_IERC721.TransactOpts, operator, _approved)
  8842  }
  8843  
  8844  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  8845  //
  8846  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  8847  func (_IERC721 *IERC721Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8848  	return _IERC721.contract.Transact(opts, "transferFrom", from, to, tokenId)
  8849  }
  8850  
  8851  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  8852  //
  8853  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  8854  func (_IERC721 *IERC721Session) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8855  	return _IERC721.Contract.TransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
  8856  }
  8857  
  8858  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  8859  //
  8860  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  8861  func (_IERC721 *IERC721TransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8862  	return _IERC721.Contract.TransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
  8863  }
  8864  
  8865  // 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.
  8866  type IERC721ApprovalIterator struct {
  8867  	Event *IERC721Approval // Event containing the contract specifics and raw log
  8868  
  8869  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8870  	event    string              // Event name to use for unpacking event data
  8871  
  8872  	logs chan types.Log      // Log channel receiving the found contract events
  8873  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  8874  	done bool                // Whether the subscription completed delivering logs
  8875  	fail error               // Occurred error to stop iteration
  8876  }
  8877  
  8878  // Next advances the iterator to the subsequent event, returning whether there
  8879  // are any more events found. In case of a retrieval or parsing error, false is
  8880  // returned and Error() can be queried for the exact failure.
  8881  func (it *IERC721ApprovalIterator) Next() bool {
  8882  	// If the iterator failed, stop iterating
  8883  	if it.fail != nil {
  8884  		return false
  8885  	}
  8886  	// If the iterator completed, deliver directly whatever's available
  8887  	if it.done {
  8888  		select {
  8889  		case log := <-it.logs:
  8890  			it.Event = new(IERC721Approval)
  8891  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8892  				it.fail = err
  8893  				return false
  8894  			}
  8895  			it.Event.Raw = log
  8896  			return true
  8897  
  8898  		default:
  8899  			return false
  8900  		}
  8901  	}
  8902  	// Iterator still in progress, wait for either a data or an error event
  8903  	select {
  8904  	case log := <-it.logs:
  8905  		it.Event = new(IERC721Approval)
  8906  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8907  			it.fail = err
  8908  			return false
  8909  		}
  8910  		it.Event.Raw = log
  8911  		return true
  8912  
  8913  	case err := <-it.sub.Err():
  8914  		it.done = true
  8915  		it.fail = err
  8916  		return it.Next()
  8917  	}
  8918  }
  8919  
  8920  // Error returns any retrieval or parsing error occurred during filtering.
  8921  func (it *IERC721ApprovalIterator) Error() error {
  8922  	return it.fail
  8923  }
  8924  
  8925  // Close terminates the iteration process, releasing any pending underlying
  8926  // resources.
  8927  func (it *IERC721ApprovalIterator) Close() error {
  8928  	it.sub.Unsubscribe()
  8929  	return nil
  8930  }
  8931  
  8932  // IERC721Approval represents a Approval event raised by the IERC721 contract.
  8933  type IERC721Approval struct {
  8934  	Owner    common.Address
  8935  	Approved common.Address
  8936  	TokenId  *big.Int
  8937  	Raw      types.Log // Blockchain specific contextual infos
  8938  }
  8939  
  8940  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  8941  //
  8942  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  8943  func (_IERC721 *IERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*IERC721ApprovalIterator, error) {
  8944  
  8945  	var ownerRule []interface{}
  8946  	for _, ownerItem := range owner {
  8947  		ownerRule = append(ownerRule, ownerItem)
  8948  	}
  8949  	var approvedRule []interface{}
  8950  	for _, approvedItem := range approved {
  8951  		approvedRule = append(approvedRule, approvedItem)
  8952  	}
  8953  	var tokenIdRule []interface{}
  8954  	for _, tokenIdItem := range tokenId {
  8955  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  8956  	}
  8957  
  8958  	logs, sub, err := _IERC721.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  8959  	if err != nil {
  8960  		return nil, err
  8961  	}
  8962  	return &IERC721ApprovalIterator{contract: _IERC721.contract, event: "Approval", logs: logs, sub: sub}, nil
  8963  }
  8964  
  8965  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  8966  //
  8967  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  8968  func (_IERC721 *IERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  8969  
  8970  	var ownerRule []interface{}
  8971  	for _, ownerItem := range owner {
  8972  		ownerRule = append(ownerRule, ownerItem)
  8973  	}
  8974  	var approvedRule []interface{}
  8975  	for _, approvedItem := range approved {
  8976  		approvedRule = append(approvedRule, approvedItem)
  8977  	}
  8978  	var tokenIdRule []interface{}
  8979  	for _, tokenIdItem := range tokenId {
  8980  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  8981  	}
  8982  
  8983  	logs, sub, err := _IERC721.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  8984  	if err != nil {
  8985  		return nil, err
  8986  	}
  8987  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8988  		defer sub.Unsubscribe()
  8989  		for {
  8990  			select {
  8991  			case log := <-logs:
  8992  				// New log arrived, parse the event and forward to the user
  8993  				event := new(IERC721Approval)
  8994  				if err := _IERC721.contract.UnpackLog(event, "Approval", log); err != nil {
  8995  					return err
  8996  				}
  8997  				event.Raw = log
  8998  
  8999  				select {
  9000  				case sink <- event:
  9001  				case err := <-sub.Err():
  9002  					return err
  9003  				case <-quit:
  9004  					return nil
  9005  				}
  9006  			case err := <-sub.Err():
  9007  				return err
  9008  			case <-quit:
  9009  				return nil
  9010  			}
  9011  		}
  9012  	}), nil
  9013  }
  9014  
  9015  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  9016  //
  9017  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  9018  func (_IERC721 *IERC721Filterer) ParseApproval(log types.Log) (*IERC721Approval, error) {
  9019  	event := new(IERC721Approval)
  9020  	if err := _IERC721.contract.UnpackLog(event, "Approval", log); err != nil {
  9021  		return nil, err
  9022  	}
  9023  	return event, nil
  9024  }
  9025  
  9026  // 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.
  9027  type IERC721ApprovalForAllIterator struct {
  9028  	Event *IERC721ApprovalForAll // Event containing the contract specifics and raw log
  9029  
  9030  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9031  	event    string              // Event name to use for unpacking event data
  9032  
  9033  	logs chan types.Log      // Log channel receiving the found contract events
  9034  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  9035  	done bool                // Whether the subscription completed delivering logs
  9036  	fail error               // Occurred error to stop iteration
  9037  }
  9038  
  9039  // Next advances the iterator to the subsequent event, returning whether there
  9040  // are any more events found. In case of a retrieval or parsing error, false is
  9041  // returned and Error() can be queried for the exact failure.
  9042  func (it *IERC721ApprovalForAllIterator) Next() bool {
  9043  	// If the iterator failed, stop iterating
  9044  	if it.fail != nil {
  9045  		return false
  9046  	}
  9047  	// If the iterator completed, deliver directly whatever's available
  9048  	if it.done {
  9049  		select {
  9050  		case log := <-it.logs:
  9051  			it.Event = new(IERC721ApprovalForAll)
  9052  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9053  				it.fail = err
  9054  				return false
  9055  			}
  9056  			it.Event.Raw = log
  9057  			return true
  9058  
  9059  		default:
  9060  			return false
  9061  		}
  9062  	}
  9063  	// Iterator still in progress, wait for either a data or an error event
  9064  	select {
  9065  	case log := <-it.logs:
  9066  		it.Event = new(IERC721ApprovalForAll)
  9067  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9068  			it.fail = err
  9069  			return false
  9070  		}
  9071  		it.Event.Raw = log
  9072  		return true
  9073  
  9074  	case err := <-it.sub.Err():
  9075  		it.done = true
  9076  		it.fail = err
  9077  		return it.Next()
  9078  	}
  9079  }
  9080  
  9081  // Error returns any retrieval or parsing error occurred during filtering.
  9082  func (it *IERC721ApprovalForAllIterator) Error() error {
  9083  	return it.fail
  9084  }
  9085  
  9086  // Close terminates the iteration process, releasing any pending underlying
  9087  // resources.
  9088  func (it *IERC721ApprovalForAllIterator) Close() error {
  9089  	it.sub.Unsubscribe()
  9090  	return nil
  9091  }
  9092  
  9093  // IERC721ApprovalForAll represents a ApprovalForAll event raised by the IERC721 contract.
  9094  type IERC721ApprovalForAll struct {
  9095  	Owner    common.Address
  9096  	Operator common.Address
  9097  	Approved bool
  9098  	Raw      types.Log // Blockchain specific contextual infos
  9099  }
  9100  
  9101  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  9102  //
  9103  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  9104  func (_IERC721 *IERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*IERC721ApprovalForAllIterator, error) {
  9105  
  9106  	var ownerRule []interface{}
  9107  	for _, ownerItem := range owner {
  9108  		ownerRule = append(ownerRule, ownerItem)
  9109  	}
  9110  	var operatorRule []interface{}
  9111  	for _, operatorItem := range operator {
  9112  		operatorRule = append(operatorRule, operatorItem)
  9113  	}
  9114  
  9115  	logs, sub, err := _IERC721.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  9116  	if err != nil {
  9117  		return nil, err
  9118  	}
  9119  	return &IERC721ApprovalForAllIterator{contract: _IERC721.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  9120  }
  9121  
  9122  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  9123  //
  9124  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  9125  func (_IERC721 *IERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  9126  
  9127  	var ownerRule []interface{}
  9128  	for _, ownerItem := range owner {
  9129  		ownerRule = append(ownerRule, ownerItem)
  9130  	}
  9131  	var operatorRule []interface{}
  9132  	for _, operatorItem := range operator {
  9133  		operatorRule = append(operatorRule, operatorItem)
  9134  	}
  9135  
  9136  	logs, sub, err := _IERC721.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  9137  	if err != nil {
  9138  		return nil, err
  9139  	}
  9140  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9141  		defer sub.Unsubscribe()
  9142  		for {
  9143  			select {
  9144  			case log := <-logs:
  9145  				// New log arrived, parse the event and forward to the user
  9146  				event := new(IERC721ApprovalForAll)
  9147  				if err := _IERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  9148  					return err
  9149  				}
  9150  				event.Raw = log
  9151  
  9152  				select {
  9153  				case sink <- event:
  9154  				case err := <-sub.Err():
  9155  					return err
  9156  				case <-quit:
  9157  					return nil
  9158  				}
  9159  			case err := <-sub.Err():
  9160  				return err
  9161  			case <-quit:
  9162  				return nil
  9163  			}
  9164  		}
  9165  	}), nil
  9166  }
  9167  
  9168  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  9169  //
  9170  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  9171  func (_IERC721 *IERC721Filterer) ParseApprovalForAll(log types.Log) (*IERC721ApprovalForAll, error) {
  9172  	event := new(IERC721ApprovalForAll)
  9173  	if err := _IERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  9174  		return nil, err
  9175  	}
  9176  	return event, nil
  9177  }
  9178  
  9179  // 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.
  9180  type IERC721TransferIterator struct {
  9181  	Event *IERC721Transfer // Event containing the contract specifics and raw log
  9182  
  9183  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9184  	event    string              // Event name to use for unpacking event data
  9185  
  9186  	logs chan types.Log      // Log channel receiving the found contract events
  9187  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  9188  	done bool                // Whether the subscription completed delivering logs
  9189  	fail error               // Occurred error to stop iteration
  9190  }
  9191  
  9192  // Next advances the iterator to the subsequent event, returning whether there
  9193  // are any more events found. In case of a retrieval or parsing error, false is
  9194  // returned and Error() can be queried for the exact failure.
  9195  func (it *IERC721TransferIterator) Next() bool {
  9196  	// If the iterator failed, stop iterating
  9197  	if it.fail != nil {
  9198  		return false
  9199  	}
  9200  	// If the iterator completed, deliver directly whatever's available
  9201  	if it.done {
  9202  		select {
  9203  		case log := <-it.logs:
  9204  			it.Event = new(IERC721Transfer)
  9205  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9206  				it.fail = err
  9207  				return false
  9208  			}
  9209  			it.Event.Raw = log
  9210  			return true
  9211  
  9212  		default:
  9213  			return false
  9214  		}
  9215  	}
  9216  	// Iterator still in progress, wait for either a data or an error event
  9217  	select {
  9218  	case log := <-it.logs:
  9219  		it.Event = new(IERC721Transfer)
  9220  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9221  			it.fail = err
  9222  			return false
  9223  		}
  9224  		it.Event.Raw = log
  9225  		return true
  9226  
  9227  	case err := <-it.sub.Err():
  9228  		it.done = true
  9229  		it.fail = err
  9230  		return it.Next()
  9231  	}
  9232  }
  9233  
  9234  // Error returns any retrieval or parsing error occurred during filtering.
  9235  func (it *IERC721TransferIterator) Error() error {
  9236  	return it.fail
  9237  }
  9238  
  9239  // Close terminates the iteration process, releasing any pending underlying
  9240  // resources.
  9241  func (it *IERC721TransferIterator) Close() error {
  9242  	it.sub.Unsubscribe()
  9243  	return nil
  9244  }
  9245  
  9246  // IERC721Transfer represents a Transfer event raised by the IERC721 contract.
  9247  type IERC721Transfer struct {
  9248  	From    common.Address
  9249  	To      common.Address
  9250  	TokenId *big.Int
  9251  	Raw     types.Log // Blockchain specific contextual infos
  9252  }
  9253  
  9254  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  9255  //
  9256  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  9257  func (_IERC721 *IERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*IERC721TransferIterator, error) {
  9258  
  9259  	var fromRule []interface{}
  9260  	for _, fromItem := range from {
  9261  		fromRule = append(fromRule, fromItem)
  9262  	}
  9263  	var toRule []interface{}
  9264  	for _, toItem := range to {
  9265  		toRule = append(toRule, toItem)
  9266  	}
  9267  	var tokenIdRule []interface{}
  9268  	for _, tokenIdItem := range tokenId {
  9269  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  9270  	}
  9271  
  9272  	logs, sub, err := _IERC721.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  9273  	if err != nil {
  9274  		return nil, err
  9275  	}
  9276  	return &IERC721TransferIterator{contract: _IERC721.contract, event: "Transfer", logs: logs, sub: sub}, nil
  9277  }
  9278  
  9279  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  9280  //
  9281  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  9282  func (_IERC721 *IERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  9283  
  9284  	var fromRule []interface{}
  9285  	for _, fromItem := range from {
  9286  		fromRule = append(fromRule, fromItem)
  9287  	}
  9288  	var toRule []interface{}
  9289  	for _, toItem := range to {
  9290  		toRule = append(toRule, toItem)
  9291  	}
  9292  	var tokenIdRule []interface{}
  9293  	for _, tokenIdItem := range tokenId {
  9294  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  9295  	}
  9296  
  9297  	logs, sub, err := _IERC721.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  9298  	if err != nil {
  9299  		return nil, err
  9300  	}
  9301  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9302  		defer sub.Unsubscribe()
  9303  		for {
  9304  			select {
  9305  			case log := <-logs:
  9306  				// New log arrived, parse the event and forward to the user
  9307  				event := new(IERC721Transfer)
  9308  				if err := _IERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
  9309  					return err
  9310  				}
  9311  				event.Raw = log
  9312  
  9313  				select {
  9314  				case sink <- event:
  9315  				case err := <-sub.Err():
  9316  					return err
  9317  				case <-quit:
  9318  					return nil
  9319  				}
  9320  			case err := <-sub.Err():
  9321  				return err
  9322  			case <-quit:
  9323  				return nil
  9324  			}
  9325  		}
  9326  	}), nil
  9327  }
  9328  
  9329  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  9330  //
  9331  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  9332  func (_IERC721 *IERC721Filterer) ParseTransfer(log types.Log) (*IERC721Transfer, error) {
  9333  	event := new(IERC721Transfer)
  9334  	if err := _IERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
  9335  		return nil, err
  9336  	}
  9337  	return event, nil
  9338  }
  9339  
  9340  // IERC721BridgeReceiverMetaData contains all meta data concerning the IERC721BridgeReceiver contract.
  9341  var IERC721BridgeReceiverMetaData = &bind.MetaData{
  9342  	ABI: "[{\"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\"}]",
  9343  	Sigs: map[string]string{
  9344  		"cf0da290": "onERC721Received(address,uint256,address,bytes)",
  9345  	},
  9346  }
  9347  
  9348  // IERC721BridgeReceiverABI is the input ABI used to generate the binding from.
  9349  // Deprecated: Use IERC721BridgeReceiverMetaData.ABI instead.
  9350  var IERC721BridgeReceiverABI = IERC721BridgeReceiverMetaData.ABI
  9351  
  9352  // IERC721BridgeReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  9353  const IERC721BridgeReceiverBinRuntime = ``
  9354  
  9355  // IERC721BridgeReceiverFuncSigs maps the 4-byte function signature to its string representation.
  9356  // Deprecated: Use IERC721BridgeReceiverMetaData.Sigs instead.
  9357  var IERC721BridgeReceiverFuncSigs = IERC721BridgeReceiverMetaData.Sigs
  9358  
  9359  // IERC721BridgeReceiver is an auto generated Go binding around a Klaytn contract.
  9360  type IERC721BridgeReceiver struct {
  9361  	IERC721BridgeReceiverCaller     // Read-only binding to the contract
  9362  	IERC721BridgeReceiverTransactor // Write-only binding to the contract
  9363  	IERC721BridgeReceiverFilterer   // Log filterer for contract events
  9364  }
  9365  
  9366  // IERC721BridgeReceiverCaller is an auto generated read-only Go binding around a Klaytn contract.
  9367  type IERC721BridgeReceiverCaller struct {
  9368  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9369  }
  9370  
  9371  // IERC721BridgeReceiverTransactor is an auto generated write-only Go binding around a Klaytn contract.
  9372  type IERC721BridgeReceiverTransactor struct {
  9373  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9374  }
  9375  
  9376  // IERC721BridgeReceiverFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  9377  type IERC721BridgeReceiverFilterer struct {
  9378  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9379  }
  9380  
  9381  // IERC721BridgeReceiverSession is an auto generated Go binding around a Klaytn contract,
  9382  // with pre-set call and transact options.
  9383  type IERC721BridgeReceiverSession struct {
  9384  	Contract     *IERC721BridgeReceiver // Generic contract binding to set the session for
  9385  	CallOpts     bind.CallOpts          // Call options to use throughout this session
  9386  	TransactOpts bind.TransactOpts      // Transaction auth options to use throughout this session
  9387  }
  9388  
  9389  // IERC721BridgeReceiverCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  9390  // with pre-set call options.
  9391  type IERC721BridgeReceiverCallerSession struct {
  9392  	Contract *IERC721BridgeReceiverCaller // Generic contract caller binding to set the session for
  9393  	CallOpts bind.CallOpts                // Call options to use throughout this session
  9394  }
  9395  
  9396  // IERC721BridgeReceiverTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  9397  // with pre-set transact options.
  9398  type IERC721BridgeReceiverTransactorSession struct {
  9399  	Contract     *IERC721BridgeReceiverTransactor // Generic contract transactor binding to set the session for
  9400  	TransactOpts bind.TransactOpts                // Transaction auth options to use throughout this session
  9401  }
  9402  
  9403  // IERC721BridgeReceiverRaw is an auto generated low-level Go binding around a Klaytn contract.
  9404  type IERC721BridgeReceiverRaw struct {
  9405  	Contract *IERC721BridgeReceiver // Generic contract binding to access the raw methods on
  9406  }
  9407  
  9408  // IERC721BridgeReceiverCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  9409  type IERC721BridgeReceiverCallerRaw struct {
  9410  	Contract *IERC721BridgeReceiverCaller // Generic read-only contract binding to access the raw methods on
  9411  }
  9412  
  9413  // IERC721BridgeReceiverTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  9414  type IERC721BridgeReceiverTransactorRaw struct {
  9415  	Contract *IERC721BridgeReceiverTransactor // Generic write-only contract binding to access the raw methods on
  9416  }
  9417  
  9418  // NewIERC721BridgeReceiver creates a new instance of IERC721BridgeReceiver, bound to a specific deployed contract.
  9419  func NewIERC721BridgeReceiver(address common.Address, backend bind.ContractBackend) (*IERC721BridgeReceiver, error) {
  9420  	contract, err := bindIERC721BridgeReceiver(address, backend, backend, backend)
  9421  	if err != nil {
  9422  		return nil, err
  9423  	}
  9424  	return &IERC721BridgeReceiver{IERC721BridgeReceiverCaller: IERC721BridgeReceiverCaller{contract: contract}, IERC721BridgeReceiverTransactor: IERC721BridgeReceiverTransactor{contract: contract}, IERC721BridgeReceiverFilterer: IERC721BridgeReceiverFilterer{contract: contract}}, nil
  9425  }
  9426  
  9427  // NewIERC721BridgeReceiverCaller creates a new read-only instance of IERC721BridgeReceiver, bound to a specific deployed contract.
  9428  func NewIERC721BridgeReceiverCaller(address common.Address, caller bind.ContractCaller) (*IERC721BridgeReceiverCaller, error) {
  9429  	contract, err := bindIERC721BridgeReceiver(address, caller, nil, nil)
  9430  	if err != nil {
  9431  		return nil, err
  9432  	}
  9433  	return &IERC721BridgeReceiverCaller{contract: contract}, nil
  9434  }
  9435  
  9436  // NewIERC721BridgeReceiverTransactor creates a new write-only instance of IERC721BridgeReceiver, bound to a specific deployed contract.
  9437  func NewIERC721BridgeReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721BridgeReceiverTransactor, error) {
  9438  	contract, err := bindIERC721BridgeReceiver(address, nil, transactor, nil)
  9439  	if err != nil {
  9440  		return nil, err
  9441  	}
  9442  	return &IERC721BridgeReceiverTransactor{contract: contract}, nil
  9443  }
  9444  
  9445  // NewIERC721BridgeReceiverFilterer creates a new log filterer instance of IERC721BridgeReceiver, bound to a specific deployed contract.
  9446  func NewIERC721BridgeReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721BridgeReceiverFilterer, error) {
  9447  	contract, err := bindIERC721BridgeReceiver(address, nil, nil, filterer)
  9448  	if err != nil {
  9449  		return nil, err
  9450  	}
  9451  	return &IERC721BridgeReceiverFilterer{contract: contract}, nil
  9452  }
  9453  
  9454  // bindIERC721BridgeReceiver binds a generic wrapper to an already deployed contract.
  9455  func bindIERC721BridgeReceiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  9456  	parsed, err := IERC721BridgeReceiverMetaData.GetAbi()
  9457  	if err != nil {
  9458  		return nil, err
  9459  	}
  9460  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
  9461  }
  9462  
  9463  // Call invokes the (constant) contract method with params as input values and
  9464  // sets the output to result. The result type might be a single field for simple
  9465  // returns, a slice of interfaces for anonymous returns and a struct for named
  9466  // returns.
  9467  func (_IERC721BridgeReceiver *IERC721BridgeReceiverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  9468  	return _IERC721BridgeReceiver.Contract.IERC721BridgeReceiverCaller.contract.Call(opts, result, method, params...)
  9469  }
  9470  
  9471  // Transfer initiates a plain transaction to move funds to the contract, calling
  9472  // its default method if one is available.
  9473  func (_IERC721BridgeReceiver *IERC721BridgeReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  9474  	return _IERC721BridgeReceiver.Contract.IERC721BridgeReceiverTransactor.contract.Transfer(opts)
  9475  }
  9476  
  9477  // Transact invokes the (paid) contract method with params as input values.
  9478  func (_IERC721BridgeReceiver *IERC721BridgeReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  9479  	return _IERC721BridgeReceiver.Contract.IERC721BridgeReceiverTransactor.contract.Transact(opts, method, params...)
  9480  }
  9481  
  9482  // Call invokes the (constant) contract method with params as input values and
  9483  // sets the output to result. The result type might be a single field for simple
  9484  // returns, a slice of interfaces for anonymous returns and a struct for named
  9485  // returns.
  9486  func (_IERC721BridgeReceiver *IERC721BridgeReceiverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  9487  	return _IERC721BridgeReceiver.Contract.contract.Call(opts, result, method, params...)
  9488  }
  9489  
  9490  // Transfer initiates a plain transaction to move funds to the contract, calling
  9491  // its default method if one is available.
  9492  func (_IERC721BridgeReceiver *IERC721BridgeReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  9493  	return _IERC721BridgeReceiver.Contract.contract.Transfer(opts)
  9494  }
  9495  
  9496  // Transact invokes the (paid) contract method with params as input values.
  9497  func (_IERC721BridgeReceiver *IERC721BridgeReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  9498  	return _IERC721BridgeReceiver.Contract.contract.Transact(opts, method, params...)
  9499  }
  9500  
  9501  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
  9502  //
  9503  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
  9504  func (_IERC721BridgeReceiver *IERC721BridgeReceiverTransactor) OnERC721Received(opts *bind.TransactOpts, _from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  9505  	return _IERC721BridgeReceiver.contract.Transact(opts, "onERC721Received", _from, _tokenId, _to, _extraData)
  9506  }
  9507  
  9508  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
  9509  //
  9510  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
  9511  func (_IERC721BridgeReceiver *IERC721BridgeReceiverSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  9512  	return _IERC721BridgeReceiver.Contract.OnERC721Received(&_IERC721BridgeReceiver.TransactOpts, _from, _tokenId, _to, _extraData)
  9513  }
  9514  
  9515  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
  9516  //
  9517  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
  9518  func (_IERC721BridgeReceiver *IERC721BridgeReceiverTransactorSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  9519  	return _IERC721BridgeReceiver.Contract.OnERC721Received(&_IERC721BridgeReceiver.TransactOpts, _from, _tokenId, _to, _extraData)
  9520  }
  9521  
  9522  // IERC721EnumerableMetaData contains all meta data concerning the IERC721Enumerable contract.
  9523  var IERC721EnumerableMetaData = &bind.MetaData{
  9524  	ABI: "[{\"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\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"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\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"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\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"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\"}]",
  9525  	Sigs: map[string]string{
  9526  		"095ea7b3": "approve(address,uint256)",
  9527  		"70a08231": "balanceOf(address)",
  9528  		"081812fc": "getApproved(uint256)",
  9529  		"e985e9c5": "isApprovedForAll(address,address)",
  9530  		"6352211e": "ownerOf(uint256)",
  9531  		"42842e0e": "safeTransferFrom(address,address,uint256)",
  9532  		"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  9533  		"a22cb465": "setApprovalForAll(address,bool)",
  9534  		"01ffc9a7": "supportsInterface(bytes4)",
  9535  		"4f6ccce7": "tokenByIndex(uint256)",
  9536  		"2f745c59": "tokenOfOwnerByIndex(address,uint256)",
  9537  		"18160ddd": "totalSupply()",
  9538  		"23b872dd": "transferFrom(address,address,uint256)",
  9539  	},
  9540  }
  9541  
  9542  // IERC721EnumerableABI is the input ABI used to generate the binding from.
  9543  // Deprecated: Use IERC721EnumerableMetaData.ABI instead.
  9544  var IERC721EnumerableABI = IERC721EnumerableMetaData.ABI
  9545  
  9546  // IERC721EnumerableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  9547  const IERC721EnumerableBinRuntime = ``
  9548  
  9549  // IERC721EnumerableFuncSigs maps the 4-byte function signature to its string representation.
  9550  // Deprecated: Use IERC721EnumerableMetaData.Sigs instead.
  9551  var IERC721EnumerableFuncSigs = IERC721EnumerableMetaData.Sigs
  9552  
  9553  // IERC721Enumerable is an auto generated Go binding around a Klaytn contract.
  9554  type IERC721Enumerable struct {
  9555  	IERC721EnumerableCaller     // Read-only binding to the contract
  9556  	IERC721EnumerableTransactor // Write-only binding to the contract
  9557  	IERC721EnumerableFilterer   // Log filterer for contract events
  9558  }
  9559  
  9560  // IERC721EnumerableCaller is an auto generated read-only Go binding around a Klaytn contract.
  9561  type IERC721EnumerableCaller struct {
  9562  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9563  }
  9564  
  9565  // IERC721EnumerableTransactor is an auto generated write-only Go binding around a Klaytn contract.
  9566  type IERC721EnumerableTransactor struct {
  9567  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9568  }
  9569  
  9570  // IERC721EnumerableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  9571  type IERC721EnumerableFilterer struct {
  9572  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9573  }
  9574  
  9575  // IERC721EnumerableSession is an auto generated Go binding around a Klaytn contract,
  9576  // with pre-set call and transact options.
  9577  type IERC721EnumerableSession struct {
  9578  	Contract     *IERC721Enumerable // Generic contract binding to set the session for
  9579  	CallOpts     bind.CallOpts      // Call options to use throughout this session
  9580  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  9581  }
  9582  
  9583  // IERC721EnumerableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  9584  // with pre-set call options.
  9585  type IERC721EnumerableCallerSession struct {
  9586  	Contract *IERC721EnumerableCaller // Generic contract caller binding to set the session for
  9587  	CallOpts bind.CallOpts            // Call options to use throughout this session
  9588  }
  9589  
  9590  // IERC721EnumerableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  9591  // with pre-set transact options.
  9592  type IERC721EnumerableTransactorSession struct {
  9593  	Contract     *IERC721EnumerableTransactor // Generic contract transactor binding to set the session for
  9594  	TransactOpts bind.TransactOpts            // Transaction auth options to use throughout this session
  9595  }
  9596  
  9597  // IERC721EnumerableRaw is an auto generated low-level Go binding around a Klaytn contract.
  9598  type IERC721EnumerableRaw struct {
  9599  	Contract *IERC721Enumerable // Generic contract binding to access the raw methods on
  9600  }
  9601  
  9602  // IERC721EnumerableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  9603  type IERC721EnumerableCallerRaw struct {
  9604  	Contract *IERC721EnumerableCaller // Generic read-only contract binding to access the raw methods on
  9605  }
  9606  
  9607  // IERC721EnumerableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  9608  type IERC721EnumerableTransactorRaw struct {
  9609  	Contract *IERC721EnumerableTransactor // Generic write-only contract binding to access the raw methods on
  9610  }
  9611  
  9612  // NewIERC721Enumerable creates a new instance of IERC721Enumerable, bound to a specific deployed contract.
  9613  func NewIERC721Enumerable(address common.Address, backend bind.ContractBackend) (*IERC721Enumerable, error) {
  9614  	contract, err := bindIERC721Enumerable(address, backend, backend, backend)
  9615  	if err != nil {
  9616  		return nil, err
  9617  	}
  9618  	return &IERC721Enumerable{IERC721EnumerableCaller: IERC721EnumerableCaller{contract: contract}, IERC721EnumerableTransactor: IERC721EnumerableTransactor{contract: contract}, IERC721EnumerableFilterer: IERC721EnumerableFilterer{contract: contract}}, nil
  9619  }
  9620  
  9621  // NewIERC721EnumerableCaller creates a new read-only instance of IERC721Enumerable, bound to a specific deployed contract.
  9622  func NewIERC721EnumerableCaller(address common.Address, caller bind.ContractCaller) (*IERC721EnumerableCaller, error) {
  9623  	contract, err := bindIERC721Enumerable(address, caller, nil, nil)
  9624  	if err != nil {
  9625  		return nil, err
  9626  	}
  9627  	return &IERC721EnumerableCaller{contract: contract}, nil
  9628  }
  9629  
  9630  // NewIERC721EnumerableTransactor creates a new write-only instance of IERC721Enumerable, bound to a specific deployed contract.
  9631  func NewIERC721EnumerableTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721EnumerableTransactor, error) {
  9632  	contract, err := bindIERC721Enumerable(address, nil, transactor, nil)
  9633  	if err != nil {
  9634  		return nil, err
  9635  	}
  9636  	return &IERC721EnumerableTransactor{contract: contract}, nil
  9637  }
  9638  
  9639  // NewIERC721EnumerableFilterer creates a new log filterer instance of IERC721Enumerable, bound to a specific deployed contract.
  9640  func NewIERC721EnumerableFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721EnumerableFilterer, error) {
  9641  	contract, err := bindIERC721Enumerable(address, nil, nil, filterer)
  9642  	if err != nil {
  9643  		return nil, err
  9644  	}
  9645  	return &IERC721EnumerableFilterer{contract: contract}, nil
  9646  }
  9647  
  9648  // bindIERC721Enumerable binds a generic wrapper to an already deployed contract.
  9649  func bindIERC721Enumerable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  9650  	parsed, err := IERC721EnumerableMetaData.GetAbi()
  9651  	if err != nil {
  9652  		return nil, err
  9653  	}
  9654  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
  9655  }
  9656  
  9657  // Call invokes the (constant) contract method with params as input values and
  9658  // sets the output to result. The result type might be a single field for simple
  9659  // returns, a slice of interfaces for anonymous returns and a struct for named
  9660  // returns.
  9661  func (_IERC721Enumerable *IERC721EnumerableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  9662  	return _IERC721Enumerable.Contract.IERC721EnumerableCaller.contract.Call(opts, result, method, params...)
  9663  }
  9664  
  9665  // Transfer initiates a plain transaction to move funds to the contract, calling
  9666  // its default method if one is available.
  9667  func (_IERC721Enumerable *IERC721EnumerableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  9668  	return _IERC721Enumerable.Contract.IERC721EnumerableTransactor.contract.Transfer(opts)
  9669  }
  9670  
  9671  // Transact invokes the (paid) contract method with params as input values.
  9672  func (_IERC721Enumerable *IERC721EnumerableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  9673  	return _IERC721Enumerable.Contract.IERC721EnumerableTransactor.contract.Transact(opts, method, params...)
  9674  }
  9675  
  9676  // Call invokes the (constant) contract method with params as input values and
  9677  // sets the output to result. The result type might be a single field for simple
  9678  // returns, a slice of interfaces for anonymous returns and a struct for named
  9679  // returns.
  9680  func (_IERC721Enumerable *IERC721EnumerableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  9681  	return _IERC721Enumerable.Contract.contract.Call(opts, result, method, params...)
  9682  }
  9683  
  9684  // Transfer initiates a plain transaction to move funds to the contract, calling
  9685  // its default method if one is available.
  9686  func (_IERC721Enumerable *IERC721EnumerableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  9687  	return _IERC721Enumerable.Contract.contract.Transfer(opts)
  9688  }
  9689  
  9690  // Transact invokes the (paid) contract method with params as input values.
  9691  func (_IERC721Enumerable *IERC721EnumerableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  9692  	return _IERC721Enumerable.Contract.contract.Transact(opts, method, params...)
  9693  }
  9694  
  9695  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  9696  //
  9697  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  9698  func (_IERC721Enumerable *IERC721EnumerableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  9699  	var out []interface{}
  9700  	err := _IERC721Enumerable.contract.Call(opts, &out, "balanceOf", owner)
  9701  
  9702  	if err != nil {
  9703  		return *new(*big.Int), err
  9704  	}
  9705  
  9706  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  9707  
  9708  	return out0, err
  9709  
  9710  }
  9711  
  9712  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  9713  //
  9714  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  9715  func (_IERC721Enumerable *IERC721EnumerableSession) BalanceOf(owner common.Address) (*big.Int, error) {
  9716  	return _IERC721Enumerable.Contract.BalanceOf(&_IERC721Enumerable.CallOpts, owner)
  9717  }
  9718  
  9719  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  9720  //
  9721  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  9722  func (_IERC721Enumerable *IERC721EnumerableCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  9723  	return _IERC721Enumerable.Contract.BalanceOf(&_IERC721Enumerable.CallOpts, owner)
  9724  }
  9725  
  9726  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  9727  //
  9728  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  9729  func (_IERC721Enumerable *IERC721EnumerableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  9730  	var out []interface{}
  9731  	err := _IERC721Enumerable.contract.Call(opts, &out, "getApproved", tokenId)
  9732  
  9733  	if err != nil {
  9734  		return *new(common.Address), err
  9735  	}
  9736  
  9737  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  9738  
  9739  	return out0, err
  9740  
  9741  }
  9742  
  9743  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  9744  //
  9745  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  9746  func (_IERC721Enumerable *IERC721EnumerableSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  9747  	return _IERC721Enumerable.Contract.GetApproved(&_IERC721Enumerable.CallOpts, tokenId)
  9748  }
  9749  
  9750  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  9751  //
  9752  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  9753  func (_IERC721Enumerable *IERC721EnumerableCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  9754  	return _IERC721Enumerable.Contract.GetApproved(&_IERC721Enumerable.CallOpts, tokenId)
  9755  }
  9756  
  9757  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  9758  //
  9759  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  9760  func (_IERC721Enumerable *IERC721EnumerableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  9761  	var out []interface{}
  9762  	err := _IERC721Enumerable.contract.Call(opts, &out, "isApprovedForAll", owner, operator)
  9763  
  9764  	if err != nil {
  9765  		return *new(bool), err
  9766  	}
  9767  
  9768  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  9769  
  9770  	return out0, err
  9771  
  9772  }
  9773  
  9774  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  9775  //
  9776  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  9777  func (_IERC721Enumerable *IERC721EnumerableSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  9778  	return _IERC721Enumerable.Contract.IsApprovedForAll(&_IERC721Enumerable.CallOpts, owner, operator)
  9779  }
  9780  
  9781  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  9782  //
  9783  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  9784  func (_IERC721Enumerable *IERC721EnumerableCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  9785  	return _IERC721Enumerable.Contract.IsApprovedForAll(&_IERC721Enumerable.CallOpts, owner, operator)
  9786  }
  9787  
  9788  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  9789  //
  9790  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  9791  func (_IERC721Enumerable *IERC721EnumerableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  9792  	var out []interface{}
  9793  	err := _IERC721Enumerable.contract.Call(opts, &out, "ownerOf", tokenId)
  9794  
  9795  	if err != nil {
  9796  		return *new(common.Address), err
  9797  	}
  9798  
  9799  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  9800  
  9801  	return out0, err
  9802  
  9803  }
  9804  
  9805  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  9806  //
  9807  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  9808  func (_IERC721Enumerable *IERC721EnumerableSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  9809  	return _IERC721Enumerable.Contract.OwnerOf(&_IERC721Enumerable.CallOpts, tokenId)
  9810  }
  9811  
  9812  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  9813  //
  9814  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  9815  func (_IERC721Enumerable *IERC721EnumerableCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  9816  	return _IERC721Enumerable.Contract.OwnerOf(&_IERC721Enumerable.CallOpts, tokenId)
  9817  }
  9818  
  9819  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  9820  //
  9821  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  9822  func (_IERC721Enumerable *IERC721EnumerableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  9823  	var out []interface{}
  9824  	err := _IERC721Enumerable.contract.Call(opts, &out, "supportsInterface", interfaceId)
  9825  
  9826  	if err != nil {
  9827  		return *new(bool), err
  9828  	}
  9829  
  9830  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  9831  
  9832  	return out0, err
  9833  
  9834  }
  9835  
  9836  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  9837  //
  9838  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  9839  func (_IERC721Enumerable *IERC721EnumerableSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  9840  	return _IERC721Enumerable.Contract.SupportsInterface(&_IERC721Enumerable.CallOpts, interfaceId)
  9841  }
  9842  
  9843  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  9844  //
  9845  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  9846  func (_IERC721Enumerable *IERC721EnumerableCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  9847  	return _IERC721Enumerable.Contract.SupportsInterface(&_IERC721Enumerable.CallOpts, interfaceId)
  9848  }
  9849  
  9850  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  9851  //
  9852  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  9853  func (_IERC721Enumerable *IERC721EnumerableCaller) TokenByIndex(opts *bind.CallOpts, index *big.Int) (*big.Int, error) {
  9854  	var out []interface{}
  9855  	err := _IERC721Enumerable.contract.Call(opts, &out, "tokenByIndex", index)
  9856  
  9857  	if err != nil {
  9858  		return *new(*big.Int), err
  9859  	}
  9860  
  9861  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  9862  
  9863  	return out0, err
  9864  
  9865  }
  9866  
  9867  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  9868  //
  9869  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  9870  func (_IERC721Enumerable *IERC721EnumerableSession) TokenByIndex(index *big.Int) (*big.Int, error) {
  9871  	return _IERC721Enumerable.Contract.TokenByIndex(&_IERC721Enumerable.CallOpts, index)
  9872  }
  9873  
  9874  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  9875  //
  9876  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  9877  func (_IERC721Enumerable *IERC721EnumerableCallerSession) TokenByIndex(index *big.Int) (*big.Int, error) {
  9878  	return _IERC721Enumerable.Contract.TokenByIndex(&_IERC721Enumerable.CallOpts, index)
  9879  }
  9880  
  9881  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  9882  //
  9883  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256 tokenId)
  9884  func (_IERC721Enumerable *IERC721EnumerableCaller) TokenOfOwnerByIndex(opts *bind.CallOpts, owner common.Address, index *big.Int) (*big.Int, error) {
  9885  	var out []interface{}
  9886  	err := _IERC721Enumerable.contract.Call(opts, &out, "tokenOfOwnerByIndex", owner, index)
  9887  
  9888  	if err != nil {
  9889  		return *new(*big.Int), err
  9890  	}
  9891  
  9892  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  9893  
  9894  	return out0, err
  9895  
  9896  }
  9897  
  9898  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  9899  //
  9900  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256 tokenId)
  9901  func (_IERC721Enumerable *IERC721EnumerableSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) {
  9902  	return _IERC721Enumerable.Contract.TokenOfOwnerByIndex(&_IERC721Enumerable.CallOpts, owner, index)
  9903  }
  9904  
  9905  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  9906  //
  9907  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256 tokenId)
  9908  func (_IERC721Enumerable *IERC721EnumerableCallerSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) {
  9909  	return _IERC721Enumerable.Contract.TokenOfOwnerByIndex(&_IERC721Enumerable.CallOpts, owner, index)
  9910  }
  9911  
  9912  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  9913  //
  9914  // Solidity: function totalSupply() view returns(uint256)
  9915  func (_IERC721Enumerable *IERC721EnumerableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  9916  	var out []interface{}
  9917  	err := _IERC721Enumerable.contract.Call(opts, &out, "totalSupply")
  9918  
  9919  	if err != nil {
  9920  		return *new(*big.Int), err
  9921  	}
  9922  
  9923  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  9924  
  9925  	return out0, err
  9926  
  9927  }
  9928  
  9929  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  9930  //
  9931  // Solidity: function totalSupply() view returns(uint256)
  9932  func (_IERC721Enumerable *IERC721EnumerableSession) TotalSupply() (*big.Int, error) {
  9933  	return _IERC721Enumerable.Contract.TotalSupply(&_IERC721Enumerable.CallOpts)
  9934  }
  9935  
  9936  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  9937  //
  9938  // Solidity: function totalSupply() view returns(uint256)
  9939  func (_IERC721Enumerable *IERC721EnumerableCallerSession) TotalSupply() (*big.Int, error) {
  9940  	return _IERC721Enumerable.Contract.TotalSupply(&_IERC721Enumerable.CallOpts)
  9941  }
  9942  
  9943  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  9944  //
  9945  // Solidity: function approve(address to, uint256 tokenId) returns()
  9946  func (_IERC721Enumerable *IERC721EnumerableTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  9947  	return _IERC721Enumerable.contract.Transact(opts, "approve", to, tokenId)
  9948  }
  9949  
  9950  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  9951  //
  9952  // Solidity: function approve(address to, uint256 tokenId) returns()
  9953  func (_IERC721Enumerable *IERC721EnumerableSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  9954  	return _IERC721Enumerable.Contract.Approve(&_IERC721Enumerable.TransactOpts, to, tokenId)
  9955  }
  9956  
  9957  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  9958  //
  9959  // Solidity: function approve(address to, uint256 tokenId) returns()
  9960  func (_IERC721Enumerable *IERC721EnumerableTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  9961  	return _IERC721Enumerable.Contract.Approve(&_IERC721Enumerable.TransactOpts, to, tokenId)
  9962  }
  9963  
  9964  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  9965  //
  9966  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  9967  func (_IERC721Enumerable *IERC721EnumerableTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  9968  	return _IERC721Enumerable.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  9969  }
  9970  
  9971  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  9972  //
  9973  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  9974  func (_IERC721Enumerable *IERC721EnumerableSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  9975  	return _IERC721Enumerable.Contract.SafeTransferFrom(&_IERC721Enumerable.TransactOpts, from, to, tokenId)
  9976  }
  9977  
  9978  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  9979  //
  9980  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  9981  func (_IERC721Enumerable *IERC721EnumerableTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  9982  	return _IERC721Enumerable.Contract.SafeTransferFrom(&_IERC721Enumerable.TransactOpts, from, to, tokenId)
  9983  }
  9984  
  9985  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  9986  //
  9987  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  9988  func (_IERC721Enumerable *IERC721EnumerableTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  9989  	return _IERC721Enumerable.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, data)
  9990  }
  9991  
  9992  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  9993  //
  9994  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  9995  func (_IERC721Enumerable *IERC721EnumerableSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  9996  	return _IERC721Enumerable.Contract.SafeTransferFrom0(&_IERC721Enumerable.TransactOpts, from, to, tokenId, data)
  9997  }
  9998  
  9999  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 10000  //
 10001  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
 10002  func (_IERC721Enumerable *IERC721EnumerableTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 10003  	return _IERC721Enumerable.Contract.SafeTransferFrom0(&_IERC721Enumerable.TransactOpts, from, to, tokenId, data)
 10004  }
 10005  
 10006  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 10007  //
 10008  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
 10009  func (_IERC721Enumerable *IERC721EnumerableTransactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, _approved bool) (*types.Transaction, error) {
 10010  	return _IERC721Enumerable.contract.Transact(opts, "setApprovalForAll", operator, _approved)
 10011  }
 10012  
 10013  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 10014  //
 10015  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
 10016  func (_IERC721Enumerable *IERC721EnumerableSession) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
 10017  	return _IERC721Enumerable.Contract.SetApprovalForAll(&_IERC721Enumerable.TransactOpts, operator, _approved)
 10018  }
 10019  
 10020  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 10021  //
 10022  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
 10023  func (_IERC721Enumerable *IERC721EnumerableTransactorSession) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
 10024  	return _IERC721Enumerable.Contract.SetApprovalForAll(&_IERC721Enumerable.TransactOpts, operator, _approved)
 10025  }
 10026  
 10027  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 10028  //
 10029  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 10030  func (_IERC721Enumerable *IERC721EnumerableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10031  	return _IERC721Enumerable.contract.Transact(opts, "transferFrom", from, to, tokenId)
 10032  }
 10033  
 10034  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 10035  //
 10036  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 10037  func (_IERC721Enumerable *IERC721EnumerableSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10038  	return _IERC721Enumerable.Contract.TransferFrom(&_IERC721Enumerable.TransactOpts, from, to, tokenId)
 10039  }
 10040  
 10041  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 10042  //
 10043  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 10044  func (_IERC721Enumerable *IERC721EnumerableTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10045  	return _IERC721Enumerable.Contract.TransferFrom(&_IERC721Enumerable.TransactOpts, from, to, tokenId)
 10046  }
 10047  
 10048  // IERC721EnumerableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC721Enumerable contract.
 10049  type IERC721EnumerableApprovalIterator struct {
 10050  	Event *IERC721EnumerableApproval // Event containing the contract specifics and raw log
 10051  
 10052  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10053  	event    string              // Event name to use for unpacking event data
 10054  
 10055  	logs chan types.Log      // Log channel receiving the found contract events
 10056  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 10057  	done bool                // Whether the subscription completed delivering logs
 10058  	fail error               // Occurred error to stop iteration
 10059  }
 10060  
 10061  // Next advances the iterator to the subsequent event, returning whether there
 10062  // are any more events found. In case of a retrieval or parsing error, false is
 10063  // returned and Error() can be queried for the exact failure.
 10064  func (it *IERC721EnumerableApprovalIterator) Next() bool {
 10065  	// If the iterator failed, stop iterating
 10066  	if it.fail != nil {
 10067  		return false
 10068  	}
 10069  	// If the iterator completed, deliver directly whatever's available
 10070  	if it.done {
 10071  		select {
 10072  		case log := <-it.logs:
 10073  			it.Event = new(IERC721EnumerableApproval)
 10074  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10075  				it.fail = err
 10076  				return false
 10077  			}
 10078  			it.Event.Raw = log
 10079  			return true
 10080  
 10081  		default:
 10082  			return false
 10083  		}
 10084  	}
 10085  	// Iterator still in progress, wait for either a data or an error event
 10086  	select {
 10087  	case log := <-it.logs:
 10088  		it.Event = new(IERC721EnumerableApproval)
 10089  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10090  			it.fail = err
 10091  			return false
 10092  		}
 10093  		it.Event.Raw = log
 10094  		return true
 10095  
 10096  	case err := <-it.sub.Err():
 10097  		it.done = true
 10098  		it.fail = err
 10099  		return it.Next()
 10100  	}
 10101  }
 10102  
 10103  // Error returns any retrieval or parsing error occurred during filtering.
 10104  func (it *IERC721EnumerableApprovalIterator) Error() error {
 10105  	return it.fail
 10106  }
 10107  
 10108  // Close terminates the iteration process, releasing any pending underlying
 10109  // resources.
 10110  func (it *IERC721EnumerableApprovalIterator) Close() error {
 10111  	it.sub.Unsubscribe()
 10112  	return nil
 10113  }
 10114  
 10115  // IERC721EnumerableApproval represents a Approval event raised by the IERC721Enumerable contract.
 10116  type IERC721EnumerableApproval struct {
 10117  	Owner    common.Address
 10118  	Approved common.Address
 10119  	TokenId  *big.Int
 10120  	Raw      types.Log // Blockchain specific contextual infos
 10121  }
 10122  
 10123  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 10124  //
 10125  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 10126  func (_IERC721Enumerable *IERC721EnumerableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*IERC721EnumerableApprovalIterator, error) {
 10127  
 10128  	var ownerRule []interface{}
 10129  	for _, ownerItem := range owner {
 10130  		ownerRule = append(ownerRule, ownerItem)
 10131  	}
 10132  	var approvedRule []interface{}
 10133  	for _, approvedItem := range approved {
 10134  		approvedRule = append(approvedRule, approvedItem)
 10135  	}
 10136  	var tokenIdRule []interface{}
 10137  	for _, tokenIdItem := range tokenId {
 10138  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 10139  	}
 10140  
 10141  	logs, sub, err := _IERC721Enumerable.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 10142  	if err != nil {
 10143  		return nil, err
 10144  	}
 10145  	return &IERC721EnumerableApprovalIterator{contract: _IERC721Enumerable.contract, event: "Approval", logs: logs, sub: sub}, nil
 10146  }
 10147  
 10148  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 10149  //
 10150  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 10151  func (_IERC721Enumerable *IERC721EnumerableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721EnumerableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 10152  
 10153  	var ownerRule []interface{}
 10154  	for _, ownerItem := range owner {
 10155  		ownerRule = append(ownerRule, ownerItem)
 10156  	}
 10157  	var approvedRule []interface{}
 10158  	for _, approvedItem := range approved {
 10159  		approvedRule = append(approvedRule, approvedItem)
 10160  	}
 10161  	var tokenIdRule []interface{}
 10162  	for _, tokenIdItem := range tokenId {
 10163  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 10164  	}
 10165  
 10166  	logs, sub, err := _IERC721Enumerable.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 10167  	if err != nil {
 10168  		return nil, err
 10169  	}
 10170  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10171  		defer sub.Unsubscribe()
 10172  		for {
 10173  			select {
 10174  			case log := <-logs:
 10175  				// New log arrived, parse the event and forward to the user
 10176  				event := new(IERC721EnumerableApproval)
 10177  				if err := _IERC721Enumerable.contract.UnpackLog(event, "Approval", log); err != nil {
 10178  					return err
 10179  				}
 10180  				event.Raw = log
 10181  
 10182  				select {
 10183  				case sink <- event:
 10184  				case err := <-sub.Err():
 10185  					return err
 10186  				case <-quit:
 10187  					return nil
 10188  				}
 10189  			case err := <-sub.Err():
 10190  				return err
 10191  			case <-quit:
 10192  				return nil
 10193  			}
 10194  		}
 10195  	}), nil
 10196  }
 10197  
 10198  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 10199  //
 10200  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 10201  func (_IERC721Enumerable *IERC721EnumerableFilterer) ParseApproval(log types.Log) (*IERC721EnumerableApproval, error) {
 10202  	event := new(IERC721EnumerableApproval)
 10203  	if err := _IERC721Enumerable.contract.UnpackLog(event, "Approval", log); err != nil {
 10204  		return nil, err
 10205  	}
 10206  	return event, nil
 10207  }
 10208  
 10209  // IERC721EnumerableApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the IERC721Enumerable contract.
 10210  type IERC721EnumerableApprovalForAllIterator struct {
 10211  	Event *IERC721EnumerableApprovalForAll // Event containing the contract specifics and raw log
 10212  
 10213  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10214  	event    string              // Event name to use for unpacking event data
 10215  
 10216  	logs chan types.Log      // Log channel receiving the found contract events
 10217  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 10218  	done bool                // Whether the subscription completed delivering logs
 10219  	fail error               // Occurred error to stop iteration
 10220  }
 10221  
 10222  // Next advances the iterator to the subsequent event, returning whether there
 10223  // are any more events found. In case of a retrieval or parsing error, false is
 10224  // returned and Error() can be queried for the exact failure.
 10225  func (it *IERC721EnumerableApprovalForAllIterator) Next() bool {
 10226  	// If the iterator failed, stop iterating
 10227  	if it.fail != nil {
 10228  		return false
 10229  	}
 10230  	// If the iterator completed, deliver directly whatever's available
 10231  	if it.done {
 10232  		select {
 10233  		case log := <-it.logs:
 10234  			it.Event = new(IERC721EnumerableApprovalForAll)
 10235  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10236  				it.fail = err
 10237  				return false
 10238  			}
 10239  			it.Event.Raw = log
 10240  			return true
 10241  
 10242  		default:
 10243  			return false
 10244  		}
 10245  	}
 10246  	// Iterator still in progress, wait for either a data or an error event
 10247  	select {
 10248  	case log := <-it.logs:
 10249  		it.Event = new(IERC721EnumerableApprovalForAll)
 10250  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10251  			it.fail = err
 10252  			return false
 10253  		}
 10254  		it.Event.Raw = log
 10255  		return true
 10256  
 10257  	case err := <-it.sub.Err():
 10258  		it.done = true
 10259  		it.fail = err
 10260  		return it.Next()
 10261  	}
 10262  }
 10263  
 10264  // Error returns any retrieval or parsing error occurred during filtering.
 10265  func (it *IERC721EnumerableApprovalForAllIterator) Error() error {
 10266  	return it.fail
 10267  }
 10268  
 10269  // Close terminates the iteration process, releasing any pending underlying
 10270  // resources.
 10271  func (it *IERC721EnumerableApprovalForAllIterator) Close() error {
 10272  	it.sub.Unsubscribe()
 10273  	return nil
 10274  }
 10275  
 10276  // IERC721EnumerableApprovalForAll represents a ApprovalForAll event raised by the IERC721Enumerable contract.
 10277  type IERC721EnumerableApprovalForAll struct {
 10278  	Owner    common.Address
 10279  	Operator common.Address
 10280  	Approved bool
 10281  	Raw      types.Log // Blockchain specific contextual infos
 10282  }
 10283  
 10284  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 10285  //
 10286  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 10287  func (_IERC721Enumerable *IERC721EnumerableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*IERC721EnumerableApprovalForAllIterator, error) {
 10288  
 10289  	var ownerRule []interface{}
 10290  	for _, ownerItem := range owner {
 10291  		ownerRule = append(ownerRule, ownerItem)
 10292  	}
 10293  	var operatorRule []interface{}
 10294  	for _, operatorItem := range operator {
 10295  		operatorRule = append(operatorRule, operatorItem)
 10296  	}
 10297  
 10298  	logs, sub, err := _IERC721Enumerable.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 10299  	if err != nil {
 10300  		return nil, err
 10301  	}
 10302  	return &IERC721EnumerableApprovalForAllIterator{contract: _IERC721Enumerable.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
 10303  }
 10304  
 10305  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 10306  //
 10307  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 10308  func (_IERC721Enumerable *IERC721EnumerableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721EnumerableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
 10309  
 10310  	var ownerRule []interface{}
 10311  	for _, ownerItem := range owner {
 10312  		ownerRule = append(ownerRule, ownerItem)
 10313  	}
 10314  	var operatorRule []interface{}
 10315  	for _, operatorItem := range operator {
 10316  		operatorRule = append(operatorRule, operatorItem)
 10317  	}
 10318  
 10319  	logs, sub, err := _IERC721Enumerable.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 10320  	if err != nil {
 10321  		return nil, err
 10322  	}
 10323  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10324  		defer sub.Unsubscribe()
 10325  		for {
 10326  			select {
 10327  			case log := <-logs:
 10328  				// New log arrived, parse the event and forward to the user
 10329  				event := new(IERC721EnumerableApprovalForAll)
 10330  				if err := _IERC721Enumerable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 10331  					return err
 10332  				}
 10333  				event.Raw = log
 10334  
 10335  				select {
 10336  				case sink <- event:
 10337  				case err := <-sub.Err():
 10338  					return err
 10339  				case <-quit:
 10340  					return nil
 10341  				}
 10342  			case err := <-sub.Err():
 10343  				return err
 10344  			case <-quit:
 10345  				return nil
 10346  			}
 10347  		}
 10348  	}), nil
 10349  }
 10350  
 10351  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 10352  //
 10353  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 10354  func (_IERC721Enumerable *IERC721EnumerableFilterer) ParseApprovalForAll(log types.Log) (*IERC721EnumerableApprovalForAll, error) {
 10355  	event := new(IERC721EnumerableApprovalForAll)
 10356  	if err := _IERC721Enumerable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 10357  		return nil, err
 10358  	}
 10359  	return event, nil
 10360  }
 10361  
 10362  // IERC721EnumerableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC721Enumerable contract.
 10363  type IERC721EnumerableTransferIterator struct {
 10364  	Event *IERC721EnumerableTransfer // Event containing the contract specifics and raw log
 10365  
 10366  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10367  	event    string              // Event name to use for unpacking event data
 10368  
 10369  	logs chan types.Log      // Log channel receiving the found contract events
 10370  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 10371  	done bool                // Whether the subscription completed delivering logs
 10372  	fail error               // Occurred error to stop iteration
 10373  }
 10374  
 10375  // Next advances the iterator to the subsequent event, returning whether there
 10376  // are any more events found. In case of a retrieval or parsing error, false is
 10377  // returned and Error() can be queried for the exact failure.
 10378  func (it *IERC721EnumerableTransferIterator) Next() bool {
 10379  	// If the iterator failed, stop iterating
 10380  	if it.fail != nil {
 10381  		return false
 10382  	}
 10383  	// If the iterator completed, deliver directly whatever's available
 10384  	if it.done {
 10385  		select {
 10386  		case log := <-it.logs:
 10387  			it.Event = new(IERC721EnumerableTransfer)
 10388  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10389  				it.fail = err
 10390  				return false
 10391  			}
 10392  			it.Event.Raw = log
 10393  			return true
 10394  
 10395  		default:
 10396  			return false
 10397  		}
 10398  	}
 10399  	// Iterator still in progress, wait for either a data or an error event
 10400  	select {
 10401  	case log := <-it.logs:
 10402  		it.Event = new(IERC721EnumerableTransfer)
 10403  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10404  			it.fail = err
 10405  			return false
 10406  		}
 10407  		it.Event.Raw = log
 10408  		return true
 10409  
 10410  	case err := <-it.sub.Err():
 10411  		it.done = true
 10412  		it.fail = err
 10413  		return it.Next()
 10414  	}
 10415  }
 10416  
 10417  // Error returns any retrieval or parsing error occurred during filtering.
 10418  func (it *IERC721EnumerableTransferIterator) Error() error {
 10419  	return it.fail
 10420  }
 10421  
 10422  // Close terminates the iteration process, releasing any pending underlying
 10423  // resources.
 10424  func (it *IERC721EnumerableTransferIterator) Close() error {
 10425  	it.sub.Unsubscribe()
 10426  	return nil
 10427  }
 10428  
 10429  // IERC721EnumerableTransfer represents a Transfer event raised by the IERC721Enumerable contract.
 10430  type IERC721EnumerableTransfer struct {
 10431  	From    common.Address
 10432  	To      common.Address
 10433  	TokenId *big.Int
 10434  	Raw     types.Log // Blockchain specific contextual infos
 10435  }
 10436  
 10437  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 10438  //
 10439  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 10440  func (_IERC721Enumerable *IERC721EnumerableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*IERC721EnumerableTransferIterator, error) {
 10441  
 10442  	var fromRule []interface{}
 10443  	for _, fromItem := range from {
 10444  		fromRule = append(fromRule, fromItem)
 10445  	}
 10446  	var toRule []interface{}
 10447  	for _, toItem := range to {
 10448  		toRule = append(toRule, toItem)
 10449  	}
 10450  	var tokenIdRule []interface{}
 10451  	for _, tokenIdItem := range tokenId {
 10452  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 10453  	}
 10454  
 10455  	logs, sub, err := _IERC721Enumerable.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 10456  	if err != nil {
 10457  		return nil, err
 10458  	}
 10459  	return &IERC721EnumerableTransferIterator{contract: _IERC721Enumerable.contract, event: "Transfer", logs: logs, sub: sub}, nil
 10460  }
 10461  
 10462  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 10463  //
 10464  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 10465  func (_IERC721Enumerable *IERC721EnumerableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721EnumerableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 10466  
 10467  	var fromRule []interface{}
 10468  	for _, fromItem := range from {
 10469  		fromRule = append(fromRule, fromItem)
 10470  	}
 10471  	var toRule []interface{}
 10472  	for _, toItem := range to {
 10473  		toRule = append(toRule, toItem)
 10474  	}
 10475  	var tokenIdRule []interface{}
 10476  	for _, tokenIdItem := range tokenId {
 10477  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 10478  	}
 10479  
 10480  	logs, sub, err := _IERC721Enumerable.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 10481  	if err != nil {
 10482  		return nil, err
 10483  	}
 10484  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10485  		defer sub.Unsubscribe()
 10486  		for {
 10487  			select {
 10488  			case log := <-logs:
 10489  				// New log arrived, parse the event and forward to the user
 10490  				event := new(IERC721EnumerableTransfer)
 10491  				if err := _IERC721Enumerable.contract.UnpackLog(event, "Transfer", log); err != nil {
 10492  					return err
 10493  				}
 10494  				event.Raw = log
 10495  
 10496  				select {
 10497  				case sink <- event:
 10498  				case err := <-sub.Err():
 10499  					return err
 10500  				case <-quit:
 10501  					return nil
 10502  				}
 10503  			case err := <-sub.Err():
 10504  				return err
 10505  			case <-quit:
 10506  				return nil
 10507  			}
 10508  		}
 10509  	}), nil
 10510  }
 10511  
 10512  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 10513  //
 10514  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 10515  func (_IERC721Enumerable *IERC721EnumerableFilterer) ParseTransfer(log types.Log) (*IERC721EnumerableTransfer, error) {
 10516  	event := new(IERC721EnumerableTransfer)
 10517  	if err := _IERC721Enumerable.contract.UnpackLog(event, "Transfer", log); err != nil {
 10518  		return nil, err
 10519  	}
 10520  	return event, nil
 10521  }
 10522  
 10523  // IERC721MetadataMetaData contains all meta data concerning the IERC721Metadata contract.
 10524  var IERC721MetadataMetaData = &bind.MetaData{
 10525  	ABI: "[{\"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\"}]",
 10526  	Sigs: map[string]string{
 10527  		"095ea7b3": "approve(address,uint256)",
 10528  		"70a08231": "balanceOf(address)",
 10529  		"081812fc": "getApproved(uint256)",
 10530  		"e985e9c5": "isApprovedForAll(address,address)",
 10531  		"06fdde03": "name()",
 10532  		"6352211e": "ownerOf(uint256)",
 10533  		"42842e0e": "safeTransferFrom(address,address,uint256)",
 10534  		"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
 10535  		"a22cb465": "setApprovalForAll(address,bool)",
 10536  		"01ffc9a7": "supportsInterface(bytes4)",
 10537  		"95d89b41": "symbol()",
 10538  		"c87b56dd": "tokenURI(uint256)",
 10539  		"23b872dd": "transferFrom(address,address,uint256)",
 10540  	},
 10541  }
 10542  
 10543  // IERC721MetadataABI is the input ABI used to generate the binding from.
 10544  // Deprecated: Use IERC721MetadataMetaData.ABI instead.
 10545  var IERC721MetadataABI = IERC721MetadataMetaData.ABI
 10546  
 10547  // IERC721MetadataBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 10548  const IERC721MetadataBinRuntime = ``
 10549  
 10550  // IERC721MetadataFuncSigs maps the 4-byte function signature to its string representation.
 10551  // Deprecated: Use IERC721MetadataMetaData.Sigs instead.
 10552  var IERC721MetadataFuncSigs = IERC721MetadataMetaData.Sigs
 10553  
 10554  // IERC721Metadata is an auto generated Go binding around a Klaytn contract.
 10555  type IERC721Metadata struct {
 10556  	IERC721MetadataCaller     // Read-only binding to the contract
 10557  	IERC721MetadataTransactor // Write-only binding to the contract
 10558  	IERC721MetadataFilterer   // Log filterer for contract events
 10559  }
 10560  
 10561  // IERC721MetadataCaller is an auto generated read-only Go binding around a Klaytn contract.
 10562  type IERC721MetadataCaller struct {
 10563  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 10564  }
 10565  
 10566  // IERC721MetadataTransactor is an auto generated write-only Go binding around a Klaytn contract.
 10567  type IERC721MetadataTransactor struct {
 10568  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 10569  }
 10570  
 10571  // IERC721MetadataFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 10572  type IERC721MetadataFilterer struct {
 10573  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 10574  }
 10575  
 10576  // IERC721MetadataSession is an auto generated Go binding around a Klaytn contract,
 10577  // with pre-set call and transact options.
 10578  type IERC721MetadataSession struct {
 10579  	Contract     *IERC721Metadata  // Generic contract binding to set the session for
 10580  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 10581  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 10582  }
 10583  
 10584  // IERC721MetadataCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 10585  // with pre-set call options.
 10586  type IERC721MetadataCallerSession struct {
 10587  	Contract *IERC721MetadataCaller // Generic contract caller binding to set the session for
 10588  	CallOpts bind.CallOpts          // Call options to use throughout this session
 10589  }
 10590  
 10591  // IERC721MetadataTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 10592  // with pre-set transact options.
 10593  type IERC721MetadataTransactorSession struct {
 10594  	Contract     *IERC721MetadataTransactor // Generic contract transactor binding to set the session for
 10595  	TransactOpts bind.TransactOpts          // Transaction auth options to use throughout this session
 10596  }
 10597  
 10598  // IERC721MetadataRaw is an auto generated low-level Go binding around a Klaytn contract.
 10599  type IERC721MetadataRaw struct {
 10600  	Contract *IERC721Metadata // Generic contract binding to access the raw methods on
 10601  }
 10602  
 10603  // IERC721MetadataCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 10604  type IERC721MetadataCallerRaw struct {
 10605  	Contract *IERC721MetadataCaller // Generic read-only contract binding to access the raw methods on
 10606  }
 10607  
 10608  // IERC721MetadataTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 10609  type IERC721MetadataTransactorRaw struct {
 10610  	Contract *IERC721MetadataTransactor // Generic write-only contract binding to access the raw methods on
 10611  }
 10612  
 10613  // NewIERC721Metadata creates a new instance of IERC721Metadata, bound to a specific deployed contract.
 10614  func NewIERC721Metadata(address common.Address, backend bind.ContractBackend) (*IERC721Metadata, error) {
 10615  	contract, err := bindIERC721Metadata(address, backend, backend, backend)
 10616  	if err != nil {
 10617  		return nil, err
 10618  	}
 10619  	return &IERC721Metadata{IERC721MetadataCaller: IERC721MetadataCaller{contract: contract}, IERC721MetadataTransactor: IERC721MetadataTransactor{contract: contract}, IERC721MetadataFilterer: IERC721MetadataFilterer{contract: contract}}, nil
 10620  }
 10621  
 10622  // NewIERC721MetadataCaller creates a new read-only instance of IERC721Metadata, bound to a specific deployed contract.
 10623  func NewIERC721MetadataCaller(address common.Address, caller bind.ContractCaller) (*IERC721MetadataCaller, error) {
 10624  	contract, err := bindIERC721Metadata(address, caller, nil, nil)
 10625  	if err != nil {
 10626  		return nil, err
 10627  	}
 10628  	return &IERC721MetadataCaller{contract: contract}, nil
 10629  }
 10630  
 10631  // NewIERC721MetadataTransactor creates a new write-only instance of IERC721Metadata, bound to a specific deployed contract.
 10632  func NewIERC721MetadataTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721MetadataTransactor, error) {
 10633  	contract, err := bindIERC721Metadata(address, nil, transactor, nil)
 10634  	if err != nil {
 10635  		return nil, err
 10636  	}
 10637  	return &IERC721MetadataTransactor{contract: contract}, nil
 10638  }
 10639  
 10640  // NewIERC721MetadataFilterer creates a new log filterer instance of IERC721Metadata, bound to a specific deployed contract.
 10641  func NewIERC721MetadataFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721MetadataFilterer, error) {
 10642  	contract, err := bindIERC721Metadata(address, nil, nil, filterer)
 10643  	if err != nil {
 10644  		return nil, err
 10645  	}
 10646  	return &IERC721MetadataFilterer{contract: contract}, nil
 10647  }
 10648  
 10649  // bindIERC721Metadata binds a generic wrapper to an already deployed contract.
 10650  func bindIERC721Metadata(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 10651  	parsed, err := IERC721MetadataMetaData.GetAbi()
 10652  	if err != nil {
 10653  		return nil, err
 10654  	}
 10655  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
 10656  }
 10657  
 10658  // Call invokes the (constant) contract method with params as input values and
 10659  // sets the output to result. The result type might be a single field for simple
 10660  // returns, a slice of interfaces for anonymous returns and a struct for named
 10661  // returns.
 10662  func (_IERC721Metadata *IERC721MetadataRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
 10663  	return _IERC721Metadata.Contract.IERC721MetadataCaller.contract.Call(opts, result, method, params...)
 10664  }
 10665  
 10666  // Transfer initiates a plain transaction to move funds to the contract, calling
 10667  // its default method if one is available.
 10668  func (_IERC721Metadata *IERC721MetadataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 10669  	return _IERC721Metadata.Contract.IERC721MetadataTransactor.contract.Transfer(opts)
 10670  }
 10671  
 10672  // Transact invokes the (paid) contract method with params as input values.
 10673  func (_IERC721Metadata *IERC721MetadataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 10674  	return _IERC721Metadata.Contract.IERC721MetadataTransactor.contract.Transact(opts, method, params...)
 10675  }
 10676  
 10677  // Call invokes the (constant) contract method with params as input values and
 10678  // sets the output to result. The result type might be a single field for simple
 10679  // returns, a slice of interfaces for anonymous returns and a struct for named
 10680  // returns.
 10681  func (_IERC721Metadata *IERC721MetadataCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
 10682  	return _IERC721Metadata.Contract.contract.Call(opts, result, method, params...)
 10683  }
 10684  
 10685  // Transfer initiates a plain transaction to move funds to the contract, calling
 10686  // its default method if one is available.
 10687  func (_IERC721Metadata *IERC721MetadataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 10688  	return _IERC721Metadata.Contract.contract.Transfer(opts)
 10689  }
 10690  
 10691  // Transact invokes the (paid) contract method with params as input values.
 10692  func (_IERC721Metadata *IERC721MetadataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 10693  	return _IERC721Metadata.Contract.contract.Transact(opts, method, params...)
 10694  }
 10695  
 10696  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 10697  //
 10698  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
 10699  func (_IERC721Metadata *IERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
 10700  	var out []interface{}
 10701  	err := _IERC721Metadata.contract.Call(opts, &out, "balanceOf", owner)
 10702  
 10703  	if err != nil {
 10704  		return *new(*big.Int), err
 10705  	}
 10706  
 10707  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
 10708  
 10709  	return out0, err
 10710  
 10711  }
 10712  
 10713  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 10714  //
 10715  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
 10716  func (_IERC721Metadata *IERC721MetadataSession) BalanceOf(owner common.Address) (*big.Int, error) {
 10717  	return _IERC721Metadata.Contract.BalanceOf(&_IERC721Metadata.CallOpts, owner)
 10718  }
 10719  
 10720  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 10721  //
 10722  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
 10723  func (_IERC721Metadata *IERC721MetadataCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
 10724  	return _IERC721Metadata.Contract.BalanceOf(&_IERC721Metadata.CallOpts, owner)
 10725  }
 10726  
 10727  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 10728  //
 10729  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
 10730  func (_IERC721Metadata *IERC721MetadataCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 10731  	var out []interface{}
 10732  	err := _IERC721Metadata.contract.Call(opts, &out, "getApproved", tokenId)
 10733  
 10734  	if err != nil {
 10735  		return *new(common.Address), err
 10736  	}
 10737  
 10738  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
 10739  
 10740  	return out0, err
 10741  
 10742  }
 10743  
 10744  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 10745  //
 10746  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
 10747  func (_IERC721Metadata *IERC721MetadataSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 10748  	return _IERC721Metadata.Contract.GetApproved(&_IERC721Metadata.CallOpts, tokenId)
 10749  }
 10750  
 10751  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 10752  //
 10753  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
 10754  func (_IERC721Metadata *IERC721MetadataCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 10755  	return _IERC721Metadata.Contract.GetApproved(&_IERC721Metadata.CallOpts, tokenId)
 10756  }
 10757  
 10758  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 10759  //
 10760  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 10761  func (_IERC721Metadata *IERC721MetadataCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
 10762  	var out []interface{}
 10763  	err := _IERC721Metadata.contract.Call(opts, &out, "isApprovedForAll", owner, operator)
 10764  
 10765  	if err != nil {
 10766  		return *new(bool), err
 10767  	}
 10768  
 10769  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
 10770  
 10771  	return out0, err
 10772  
 10773  }
 10774  
 10775  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 10776  //
 10777  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 10778  func (_IERC721Metadata *IERC721MetadataSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 10779  	return _IERC721Metadata.Contract.IsApprovedForAll(&_IERC721Metadata.CallOpts, owner, operator)
 10780  }
 10781  
 10782  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 10783  //
 10784  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 10785  func (_IERC721Metadata *IERC721MetadataCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 10786  	return _IERC721Metadata.Contract.IsApprovedForAll(&_IERC721Metadata.CallOpts, owner, operator)
 10787  }
 10788  
 10789  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 10790  //
 10791  // Solidity: function name() view returns(string)
 10792  func (_IERC721Metadata *IERC721MetadataCaller) Name(opts *bind.CallOpts) (string, error) {
 10793  	var out []interface{}
 10794  	err := _IERC721Metadata.contract.Call(opts, &out, "name")
 10795  
 10796  	if err != nil {
 10797  		return *new(string), err
 10798  	}
 10799  
 10800  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
 10801  
 10802  	return out0, err
 10803  
 10804  }
 10805  
 10806  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 10807  //
 10808  // Solidity: function name() view returns(string)
 10809  func (_IERC721Metadata *IERC721MetadataSession) Name() (string, error) {
 10810  	return _IERC721Metadata.Contract.Name(&_IERC721Metadata.CallOpts)
 10811  }
 10812  
 10813  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 10814  //
 10815  // Solidity: function name() view returns(string)
 10816  func (_IERC721Metadata *IERC721MetadataCallerSession) Name() (string, error) {
 10817  	return _IERC721Metadata.Contract.Name(&_IERC721Metadata.CallOpts)
 10818  }
 10819  
 10820  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 10821  //
 10822  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
 10823  func (_IERC721Metadata *IERC721MetadataCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 10824  	var out []interface{}
 10825  	err := _IERC721Metadata.contract.Call(opts, &out, "ownerOf", tokenId)
 10826  
 10827  	if err != nil {
 10828  		return *new(common.Address), err
 10829  	}
 10830  
 10831  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
 10832  
 10833  	return out0, err
 10834  
 10835  }
 10836  
 10837  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 10838  //
 10839  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
 10840  func (_IERC721Metadata *IERC721MetadataSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 10841  	return _IERC721Metadata.Contract.OwnerOf(&_IERC721Metadata.CallOpts, tokenId)
 10842  }
 10843  
 10844  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 10845  //
 10846  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
 10847  func (_IERC721Metadata *IERC721MetadataCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 10848  	return _IERC721Metadata.Contract.OwnerOf(&_IERC721Metadata.CallOpts, tokenId)
 10849  }
 10850  
 10851  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 10852  //
 10853  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 10854  func (_IERC721Metadata *IERC721MetadataCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
 10855  	var out []interface{}
 10856  	err := _IERC721Metadata.contract.Call(opts, &out, "supportsInterface", interfaceId)
 10857  
 10858  	if err != nil {
 10859  		return *new(bool), err
 10860  	}
 10861  
 10862  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
 10863  
 10864  	return out0, err
 10865  
 10866  }
 10867  
 10868  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 10869  //
 10870  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 10871  func (_IERC721Metadata *IERC721MetadataSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 10872  	return _IERC721Metadata.Contract.SupportsInterface(&_IERC721Metadata.CallOpts, interfaceId)
 10873  }
 10874  
 10875  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 10876  //
 10877  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 10878  func (_IERC721Metadata *IERC721MetadataCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 10879  	return _IERC721Metadata.Contract.SupportsInterface(&_IERC721Metadata.CallOpts, interfaceId)
 10880  }
 10881  
 10882  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 10883  //
 10884  // Solidity: function symbol() view returns(string)
 10885  func (_IERC721Metadata *IERC721MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) {
 10886  	var out []interface{}
 10887  	err := _IERC721Metadata.contract.Call(opts, &out, "symbol")
 10888  
 10889  	if err != nil {
 10890  		return *new(string), err
 10891  	}
 10892  
 10893  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
 10894  
 10895  	return out0, err
 10896  
 10897  }
 10898  
 10899  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 10900  //
 10901  // Solidity: function symbol() view returns(string)
 10902  func (_IERC721Metadata *IERC721MetadataSession) Symbol() (string, error) {
 10903  	return _IERC721Metadata.Contract.Symbol(&_IERC721Metadata.CallOpts)
 10904  }
 10905  
 10906  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 10907  //
 10908  // Solidity: function symbol() view returns(string)
 10909  func (_IERC721Metadata *IERC721MetadataCallerSession) Symbol() (string, error) {
 10910  	return _IERC721Metadata.Contract.Symbol(&_IERC721Metadata.CallOpts)
 10911  }
 10912  
 10913  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 10914  //
 10915  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 10916  func (_IERC721Metadata *IERC721MetadataCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) {
 10917  	var out []interface{}
 10918  	err := _IERC721Metadata.contract.Call(opts, &out, "tokenURI", tokenId)
 10919  
 10920  	if err != nil {
 10921  		return *new(string), err
 10922  	}
 10923  
 10924  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
 10925  
 10926  	return out0, err
 10927  
 10928  }
 10929  
 10930  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 10931  //
 10932  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 10933  func (_IERC721Metadata *IERC721MetadataSession) TokenURI(tokenId *big.Int) (string, error) {
 10934  	return _IERC721Metadata.Contract.TokenURI(&_IERC721Metadata.CallOpts, tokenId)
 10935  }
 10936  
 10937  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 10938  //
 10939  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 10940  func (_IERC721Metadata *IERC721MetadataCallerSession) TokenURI(tokenId *big.Int) (string, error) {
 10941  	return _IERC721Metadata.Contract.TokenURI(&_IERC721Metadata.CallOpts, tokenId)
 10942  }
 10943  
 10944  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 10945  //
 10946  // Solidity: function approve(address to, uint256 tokenId) returns()
 10947  func (_IERC721Metadata *IERC721MetadataTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10948  	return _IERC721Metadata.contract.Transact(opts, "approve", to, tokenId)
 10949  }
 10950  
 10951  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 10952  //
 10953  // Solidity: function approve(address to, uint256 tokenId) returns()
 10954  func (_IERC721Metadata *IERC721MetadataSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10955  	return _IERC721Metadata.Contract.Approve(&_IERC721Metadata.TransactOpts, to, tokenId)
 10956  }
 10957  
 10958  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 10959  //
 10960  // Solidity: function approve(address to, uint256 tokenId) returns()
 10961  func (_IERC721Metadata *IERC721MetadataTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10962  	return _IERC721Metadata.Contract.Approve(&_IERC721Metadata.TransactOpts, to, tokenId)
 10963  }
 10964  
 10965  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 10966  //
 10967  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 10968  func (_IERC721Metadata *IERC721MetadataTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10969  	return _IERC721Metadata.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
 10970  }
 10971  
 10972  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 10973  //
 10974  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 10975  func (_IERC721Metadata *IERC721MetadataSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10976  	return _IERC721Metadata.Contract.SafeTransferFrom(&_IERC721Metadata.TransactOpts, from, to, tokenId)
 10977  }
 10978  
 10979  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 10980  //
 10981  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 10982  func (_IERC721Metadata *IERC721MetadataTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10983  	return _IERC721Metadata.Contract.SafeTransferFrom(&_IERC721Metadata.TransactOpts, from, to, tokenId)
 10984  }
 10985  
 10986  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 10987  //
 10988  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
 10989  func (_IERC721Metadata *IERC721MetadataTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 10990  	return _IERC721Metadata.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, data)
 10991  }
 10992  
 10993  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 10994  //
 10995  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
 10996  func (_IERC721Metadata *IERC721MetadataSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 10997  	return _IERC721Metadata.Contract.SafeTransferFrom0(&_IERC721Metadata.TransactOpts, from, to, tokenId, data)
 10998  }
 10999  
 11000  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 11001  //
 11002  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
 11003  func (_IERC721Metadata *IERC721MetadataTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 11004  	return _IERC721Metadata.Contract.SafeTransferFrom0(&_IERC721Metadata.TransactOpts, from, to, tokenId, data)
 11005  }
 11006  
 11007  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 11008  //
 11009  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
 11010  func (_IERC721Metadata *IERC721MetadataTransactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, _approved bool) (*types.Transaction, error) {
 11011  	return _IERC721Metadata.contract.Transact(opts, "setApprovalForAll", operator, _approved)
 11012  }
 11013  
 11014  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 11015  //
 11016  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
 11017  func (_IERC721Metadata *IERC721MetadataSession) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
 11018  	return _IERC721Metadata.Contract.SetApprovalForAll(&_IERC721Metadata.TransactOpts, operator, _approved)
 11019  }
 11020  
 11021  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 11022  //
 11023  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
 11024  func (_IERC721Metadata *IERC721MetadataTransactorSession) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
 11025  	return _IERC721Metadata.Contract.SetApprovalForAll(&_IERC721Metadata.TransactOpts, operator, _approved)
 11026  }
 11027  
 11028  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 11029  //
 11030  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 11031  func (_IERC721Metadata *IERC721MetadataTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 11032  	return _IERC721Metadata.contract.Transact(opts, "transferFrom", from, to, tokenId)
 11033  }
 11034  
 11035  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 11036  //
 11037  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 11038  func (_IERC721Metadata *IERC721MetadataSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 11039  	return _IERC721Metadata.Contract.TransferFrom(&_IERC721Metadata.TransactOpts, from, to, tokenId)
 11040  }
 11041  
 11042  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 11043  //
 11044  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 11045  func (_IERC721Metadata *IERC721MetadataTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 11046  	return _IERC721Metadata.Contract.TransferFrom(&_IERC721Metadata.TransactOpts, from, to, tokenId)
 11047  }
 11048  
 11049  // 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.
 11050  type IERC721MetadataApprovalIterator struct {
 11051  	Event *IERC721MetadataApproval // Event containing the contract specifics and raw log
 11052  
 11053  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11054  	event    string              // Event name to use for unpacking event data
 11055  
 11056  	logs chan types.Log      // Log channel receiving the found contract events
 11057  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 11058  	done bool                // Whether the subscription completed delivering logs
 11059  	fail error               // Occurred error to stop iteration
 11060  }
 11061  
 11062  // Next advances the iterator to the subsequent event, returning whether there
 11063  // are any more events found. In case of a retrieval or parsing error, false is
 11064  // returned and Error() can be queried for the exact failure.
 11065  func (it *IERC721MetadataApprovalIterator) Next() bool {
 11066  	// If the iterator failed, stop iterating
 11067  	if it.fail != nil {
 11068  		return false
 11069  	}
 11070  	// If the iterator completed, deliver directly whatever's available
 11071  	if it.done {
 11072  		select {
 11073  		case log := <-it.logs:
 11074  			it.Event = new(IERC721MetadataApproval)
 11075  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11076  				it.fail = err
 11077  				return false
 11078  			}
 11079  			it.Event.Raw = log
 11080  			return true
 11081  
 11082  		default:
 11083  			return false
 11084  		}
 11085  	}
 11086  	// Iterator still in progress, wait for either a data or an error event
 11087  	select {
 11088  	case log := <-it.logs:
 11089  		it.Event = new(IERC721MetadataApproval)
 11090  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11091  			it.fail = err
 11092  			return false
 11093  		}
 11094  		it.Event.Raw = log
 11095  		return true
 11096  
 11097  	case err := <-it.sub.Err():
 11098  		it.done = true
 11099  		it.fail = err
 11100  		return it.Next()
 11101  	}
 11102  }
 11103  
 11104  // Error returns any retrieval or parsing error occurred during filtering.
 11105  func (it *IERC721MetadataApprovalIterator) Error() error {
 11106  	return it.fail
 11107  }
 11108  
 11109  // Close terminates the iteration process, releasing any pending underlying
 11110  // resources.
 11111  func (it *IERC721MetadataApprovalIterator) Close() error {
 11112  	it.sub.Unsubscribe()
 11113  	return nil
 11114  }
 11115  
 11116  // IERC721MetadataApproval represents a Approval event raised by the IERC721Metadata contract.
 11117  type IERC721MetadataApproval struct {
 11118  	Owner    common.Address
 11119  	Approved common.Address
 11120  	TokenId  *big.Int
 11121  	Raw      types.Log // Blockchain specific contextual infos
 11122  }
 11123  
 11124  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 11125  //
 11126  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 11127  func (_IERC721Metadata *IERC721MetadataFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*IERC721MetadataApprovalIterator, error) {
 11128  
 11129  	var ownerRule []interface{}
 11130  	for _, ownerItem := range owner {
 11131  		ownerRule = append(ownerRule, ownerItem)
 11132  	}
 11133  	var approvedRule []interface{}
 11134  	for _, approvedItem := range approved {
 11135  		approvedRule = append(approvedRule, approvedItem)
 11136  	}
 11137  	var tokenIdRule []interface{}
 11138  	for _, tokenIdItem := range tokenId {
 11139  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 11140  	}
 11141  
 11142  	logs, sub, err := _IERC721Metadata.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 11143  	if err != nil {
 11144  		return nil, err
 11145  	}
 11146  	return &IERC721MetadataApprovalIterator{contract: _IERC721Metadata.contract, event: "Approval", logs: logs, sub: sub}, nil
 11147  }
 11148  
 11149  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 11150  //
 11151  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 11152  func (_IERC721Metadata *IERC721MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721MetadataApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 11153  
 11154  	var ownerRule []interface{}
 11155  	for _, ownerItem := range owner {
 11156  		ownerRule = append(ownerRule, ownerItem)
 11157  	}
 11158  	var approvedRule []interface{}
 11159  	for _, approvedItem := range approved {
 11160  		approvedRule = append(approvedRule, approvedItem)
 11161  	}
 11162  	var tokenIdRule []interface{}
 11163  	for _, tokenIdItem := range tokenId {
 11164  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 11165  	}
 11166  
 11167  	logs, sub, err := _IERC721Metadata.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 11168  	if err != nil {
 11169  		return nil, err
 11170  	}
 11171  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11172  		defer sub.Unsubscribe()
 11173  		for {
 11174  			select {
 11175  			case log := <-logs:
 11176  				// New log arrived, parse the event and forward to the user
 11177  				event := new(IERC721MetadataApproval)
 11178  				if err := _IERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil {
 11179  					return err
 11180  				}
 11181  				event.Raw = log
 11182  
 11183  				select {
 11184  				case sink <- event:
 11185  				case err := <-sub.Err():
 11186  					return err
 11187  				case <-quit:
 11188  					return nil
 11189  				}
 11190  			case err := <-sub.Err():
 11191  				return err
 11192  			case <-quit:
 11193  				return nil
 11194  			}
 11195  		}
 11196  	}), nil
 11197  }
 11198  
 11199  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 11200  //
 11201  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 11202  func (_IERC721Metadata *IERC721MetadataFilterer) ParseApproval(log types.Log) (*IERC721MetadataApproval, error) {
 11203  	event := new(IERC721MetadataApproval)
 11204  	if err := _IERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil {
 11205  		return nil, err
 11206  	}
 11207  	return event, nil
 11208  }
 11209  
 11210  // 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.
 11211  type IERC721MetadataApprovalForAllIterator struct {
 11212  	Event *IERC721MetadataApprovalForAll // Event containing the contract specifics and raw log
 11213  
 11214  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11215  	event    string              // Event name to use for unpacking event data
 11216  
 11217  	logs chan types.Log      // Log channel receiving the found contract events
 11218  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 11219  	done bool                // Whether the subscription completed delivering logs
 11220  	fail error               // Occurred error to stop iteration
 11221  }
 11222  
 11223  // Next advances the iterator to the subsequent event, returning whether there
 11224  // are any more events found. In case of a retrieval or parsing error, false is
 11225  // returned and Error() can be queried for the exact failure.
 11226  func (it *IERC721MetadataApprovalForAllIterator) Next() bool {
 11227  	// If the iterator failed, stop iterating
 11228  	if it.fail != nil {
 11229  		return false
 11230  	}
 11231  	// If the iterator completed, deliver directly whatever's available
 11232  	if it.done {
 11233  		select {
 11234  		case log := <-it.logs:
 11235  			it.Event = new(IERC721MetadataApprovalForAll)
 11236  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11237  				it.fail = err
 11238  				return false
 11239  			}
 11240  			it.Event.Raw = log
 11241  			return true
 11242  
 11243  		default:
 11244  			return false
 11245  		}
 11246  	}
 11247  	// Iterator still in progress, wait for either a data or an error event
 11248  	select {
 11249  	case log := <-it.logs:
 11250  		it.Event = new(IERC721MetadataApprovalForAll)
 11251  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11252  			it.fail = err
 11253  			return false
 11254  		}
 11255  		it.Event.Raw = log
 11256  		return true
 11257  
 11258  	case err := <-it.sub.Err():
 11259  		it.done = true
 11260  		it.fail = err
 11261  		return it.Next()
 11262  	}
 11263  }
 11264  
 11265  // Error returns any retrieval or parsing error occurred during filtering.
 11266  func (it *IERC721MetadataApprovalForAllIterator) Error() error {
 11267  	return it.fail
 11268  }
 11269  
 11270  // Close terminates the iteration process, releasing any pending underlying
 11271  // resources.
 11272  func (it *IERC721MetadataApprovalForAllIterator) Close() error {
 11273  	it.sub.Unsubscribe()
 11274  	return nil
 11275  }
 11276  
 11277  // IERC721MetadataApprovalForAll represents a ApprovalForAll event raised by the IERC721Metadata contract.
 11278  type IERC721MetadataApprovalForAll struct {
 11279  	Owner    common.Address
 11280  	Operator common.Address
 11281  	Approved bool
 11282  	Raw      types.Log // Blockchain specific contextual infos
 11283  }
 11284  
 11285  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 11286  //
 11287  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 11288  func (_IERC721Metadata *IERC721MetadataFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*IERC721MetadataApprovalForAllIterator, error) {
 11289  
 11290  	var ownerRule []interface{}
 11291  	for _, ownerItem := range owner {
 11292  		ownerRule = append(ownerRule, ownerItem)
 11293  	}
 11294  	var operatorRule []interface{}
 11295  	for _, operatorItem := range operator {
 11296  		operatorRule = append(operatorRule, operatorItem)
 11297  	}
 11298  
 11299  	logs, sub, err := _IERC721Metadata.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 11300  	if err != nil {
 11301  		return nil, err
 11302  	}
 11303  	return &IERC721MetadataApprovalForAllIterator{contract: _IERC721Metadata.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
 11304  }
 11305  
 11306  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 11307  //
 11308  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 11309  func (_IERC721Metadata *IERC721MetadataFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721MetadataApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
 11310  
 11311  	var ownerRule []interface{}
 11312  	for _, ownerItem := range owner {
 11313  		ownerRule = append(ownerRule, ownerItem)
 11314  	}
 11315  	var operatorRule []interface{}
 11316  	for _, operatorItem := range operator {
 11317  		operatorRule = append(operatorRule, operatorItem)
 11318  	}
 11319  
 11320  	logs, sub, err := _IERC721Metadata.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 11321  	if err != nil {
 11322  		return nil, err
 11323  	}
 11324  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11325  		defer sub.Unsubscribe()
 11326  		for {
 11327  			select {
 11328  			case log := <-logs:
 11329  				// New log arrived, parse the event and forward to the user
 11330  				event := new(IERC721MetadataApprovalForAll)
 11331  				if err := _IERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 11332  					return err
 11333  				}
 11334  				event.Raw = log
 11335  
 11336  				select {
 11337  				case sink <- event:
 11338  				case err := <-sub.Err():
 11339  					return err
 11340  				case <-quit:
 11341  					return nil
 11342  				}
 11343  			case err := <-sub.Err():
 11344  				return err
 11345  			case <-quit:
 11346  				return nil
 11347  			}
 11348  		}
 11349  	}), nil
 11350  }
 11351  
 11352  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 11353  //
 11354  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 11355  func (_IERC721Metadata *IERC721MetadataFilterer) ParseApprovalForAll(log types.Log) (*IERC721MetadataApprovalForAll, error) {
 11356  	event := new(IERC721MetadataApprovalForAll)
 11357  	if err := _IERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 11358  		return nil, err
 11359  	}
 11360  	return event, nil
 11361  }
 11362  
 11363  // 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.
 11364  type IERC721MetadataTransferIterator struct {
 11365  	Event *IERC721MetadataTransfer // Event containing the contract specifics and raw log
 11366  
 11367  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11368  	event    string              // Event name to use for unpacking event data
 11369  
 11370  	logs chan types.Log      // Log channel receiving the found contract events
 11371  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 11372  	done bool                // Whether the subscription completed delivering logs
 11373  	fail error               // Occurred error to stop iteration
 11374  }
 11375  
 11376  // Next advances the iterator to the subsequent event, returning whether there
 11377  // are any more events found. In case of a retrieval or parsing error, false is
 11378  // returned and Error() can be queried for the exact failure.
 11379  func (it *IERC721MetadataTransferIterator) Next() bool {
 11380  	// If the iterator failed, stop iterating
 11381  	if it.fail != nil {
 11382  		return false
 11383  	}
 11384  	// If the iterator completed, deliver directly whatever's available
 11385  	if it.done {
 11386  		select {
 11387  		case log := <-it.logs:
 11388  			it.Event = new(IERC721MetadataTransfer)
 11389  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11390  				it.fail = err
 11391  				return false
 11392  			}
 11393  			it.Event.Raw = log
 11394  			return true
 11395  
 11396  		default:
 11397  			return false
 11398  		}
 11399  	}
 11400  	// Iterator still in progress, wait for either a data or an error event
 11401  	select {
 11402  	case log := <-it.logs:
 11403  		it.Event = new(IERC721MetadataTransfer)
 11404  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11405  			it.fail = err
 11406  			return false
 11407  		}
 11408  		it.Event.Raw = log
 11409  		return true
 11410  
 11411  	case err := <-it.sub.Err():
 11412  		it.done = true
 11413  		it.fail = err
 11414  		return it.Next()
 11415  	}
 11416  }
 11417  
 11418  // Error returns any retrieval or parsing error occurred during filtering.
 11419  func (it *IERC721MetadataTransferIterator) Error() error {
 11420  	return it.fail
 11421  }
 11422  
 11423  // Close terminates the iteration process, releasing any pending underlying
 11424  // resources.
 11425  func (it *IERC721MetadataTransferIterator) Close() error {
 11426  	it.sub.Unsubscribe()
 11427  	return nil
 11428  }
 11429  
 11430  // IERC721MetadataTransfer represents a Transfer event raised by the IERC721Metadata contract.
 11431  type IERC721MetadataTransfer struct {
 11432  	From    common.Address
 11433  	To      common.Address
 11434  	TokenId *big.Int
 11435  	Raw     types.Log // Blockchain specific contextual infos
 11436  }
 11437  
 11438  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 11439  //
 11440  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 11441  func (_IERC721Metadata *IERC721MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*IERC721MetadataTransferIterator, error) {
 11442  
 11443  	var fromRule []interface{}
 11444  	for _, fromItem := range from {
 11445  		fromRule = append(fromRule, fromItem)
 11446  	}
 11447  	var toRule []interface{}
 11448  	for _, toItem := range to {
 11449  		toRule = append(toRule, toItem)
 11450  	}
 11451  	var tokenIdRule []interface{}
 11452  	for _, tokenIdItem := range tokenId {
 11453  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 11454  	}
 11455  
 11456  	logs, sub, err := _IERC721Metadata.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 11457  	if err != nil {
 11458  		return nil, err
 11459  	}
 11460  	return &IERC721MetadataTransferIterator{contract: _IERC721Metadata.contract, event: "Transfer", logs: logs, sub: sub}, nil
 11461  }
 11462  
 11463  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 11464  //
 11465  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 11466  func (_IERC721Metadata *IERC721MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721MetadataTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 11467  
 11468  	var fromRule []interface{}
 11469  	for _, fromItem := range from {
 11470  		fromRule = append(fromRule, fromItem)
 11471  	}
 11472  	var toRule []interface{}
 11473  	for _, toItem := range to {
 11474  		toRule = append(toRule, toItem)
 11475  	}
 11476  	var tokenIdRule []interface{}
 11477  	for _, tokenIdItem := range tokenId {
 11478  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 11479  	}
 11480  
 11481  	logs, sub, err := _IERC721Metadata.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 11482  	if err != nil {
 11483  		return nil, err
 11484  	}
 11485  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11486  		defer sub.Unsubscribe()
 11487  		for {
 11488  			select {
 11489  			case log := <-logs:
 11490  				// New log arrived, parse the event and forward to the user
 11491  				event := new(IERC721MetadataTransfer)
 11492  				if err := _IERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil {
 11493  					return err
 11494  				}
 11495  				event.Raw = log
 11496  
 11497  				select {
 11498  				case sink <- event:
 11499  				case err := <-sub.Err():
 11500  					return err
 11501  				case <-quit:
 11502  					return nil
 11503  				}
 11504  			case err := <-sub.Err():
 11505  				return err
 11506  			case <-quit:
 11507  				return nil
 11508  			}
 11509  		}
 11510  	}), nil
 11511  }
 11512  
 11513  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 11514  //
 11515  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 11516  func (_IERC721Metadata *IERC721MetadataFilterer) ParseTransfer(log types.Log) (*IERC721MetadataTransfer, error) {
 11517  	event := new(IERC721MetadataTransfer)
 11518  	if err := _IERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil {
 11519  		return nil, err
 11520  	}
 11521  	return event, nil
 11522  }
 11523  
 11524  // IERC721ReceiverMetaData contains all meta data concerning the IERC721Receiver contract.
 11525  var IERC721ReceiverMetaData = &bind.MetaData{
 11526  	ABI: "[{\"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\"}]",
 11527  	Sigs: map[string]string{
 11528  		"150b7a02": "onERC721Received(address,address,uint256,bytes)",
 11529  	},
 11530  }
 11531  
 11532  // IERC721ReceiverABI is the input ABI used to generate the binding from.
 11533  // Deprecated: Use IERC721ReceiverMetaData.ABI instead.
 11534  var IERC721ReceiverABI = IERC721ReceiverMetaData.ABI
 11535  
 11536  // IERC721ReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 11537  const IERC721ReceiverBinRuntime = ``
 11538  
 11539  // IERC721ReceiverFuncSigs maps the 4-byte function signature to its string representation.
 11540  // Deprecated: Use IERC721ReceiverMetaData.Sigs instead.
 11541  var IERC721ReceiverFuncSigs = IERC721ReceiverMetaData.Sigs
 11542  
 11543  // IERC721Receiver is an auto generated Go binding around a Klaytn contract.
 11544  type IERC721Receiver struct {
 11545  	IERC721ReceiverCaller     // Read-only binding to the contract
 11546  	IERC721ReceiverTransactor // Write-only binding to the contract
 11547  	IERC721ReceiverFilterer   // Log filterer for contract events
 11548  }
 11549  
 11550  // IERC721ReceiverCaller is an auto generated read-only Go binding around a Klaytn contract.
 11551  type IERC721ReceiverCaller struct {
 11552  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11553  }
 11554  
 11555  // IERC721ReceiverTransactor is an auto generated write-only Go binding around a Klaytn contract.
 11556  type IERC721ReceiverTransactor struct {
 11557  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11558  }
 11559  
 11560  // IERC721ReceiverFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 11561  type IERC721ReceiverFilterer struct {
 11562  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11563  }
 11564  
 11565  // IERC721ReceiverSession is an auto generated Go binding around a Klaytn contract,
 11566  // with pre-set call and transact options.
 11567  type IERC721ReceiverSession struct {
 11568  	Contract     *IERC721Receiver  // Generic contract binding to set the session for
 11569  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 11570  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 11571  }
 11572  
 11573  // IERC721ReceiverCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 11574  // with pre-set call options.
 11575  type IERC721ReceiverCallerSession struct {
 11576  	Contract *IERC721ReceiverCaller // Generic contract caller binding to set the session for
 11577  	CallOpts bind.CallOpts          // Call options to use throughout this session
 11578  }
 11579  
 11580  // IERC721ReceiverTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 11581  // with pre-set transact options.
 11582  type IERC721ReceiverTransactorSession struct {
 11583  	Contract     *IERC721ReceiverTransactor // Generic contract transactor binding to set the session for
 11584  	TransactOpts bind.TransactOpts          // Transaction auth options to use throughout this session
 11585  }
 11586  
 11587  // IERC721ReceiverRaw is an auto generated low-level Go binding around a Klaytn contract.
 11588  type IERC721ReceiverRaw struct {
 11589  	Contract *IERC721Receiver // Generic contract binding to access the raw methods on
 11590  }
 11591  
 11592  // IERC721ReceiverCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 11593  type IERC721ReceiverCallerRaw struct {
 11594  	Contract *IERC721ReceiverCaller // Generic read-only contract binding to access the raw methods on
 11595  }
 11596  
 11597  // IERC721ReceiverTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 11598  type IERC721ReceiverTransactorRaw struct {
 11599  	Contract *IERC721ReceiverTransactor // Generic write-only contract binding to access the raw methods on
 11600  }
 11601  
 11602  // NewIERC721Receiver creates a new instance of IERC721Receiver, bound to a specific deployed contract.
 11603  func NewIERC721Receiver(address common.Address, backend bind.ContractBackend) (*IERC721Receiver, error) {
 11604  	contract, err := bindIERC721Receiver(address, backend, backend, backend)
 11605  	if err != nil {
 11606  		return nil, err
 11607  	}
 11608  	return &IERC721Receiver{IERC721ReceiverCaller: IERC721ReceiverCaller{contract: contract}, IERC721ReceiverTransactor: IERC721ReceiverTransactor{contract: contract}, IERC721ReceiverFilterer: IERC721ReceiverFilterer{contract: contract}}, nil
 11609  }
 11610  
 11611  // NewIERC721ReceiverCaller creates a new read-only instance of IERC721Receiver, bound to a specific deployed contract.
 11612  func NewIERC721ReceiverCaller(address common.Address, caller bind.ContractCaller) (*IERC721ReceiverCaller, error) {
 11613  	contract, err := bindIERC721Receiver(address, caller, nil, nil)
 11614  	if err != nil {
 11615  		return nil, err
 11616  	}
 11617  	return &IERC721ReceiverCaller{contract: contract}, nil
 11618  }
 11619  
 11620  // NewIERC721ReceiverTransactor creates a new write-only instance of IERC721Receiver, bound to a specific deployed contract.
 11621  func NewIERC721ReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721ReceiverTransactor, error) {
 11622  	contract, err := bindIERC721Receiver(address, nil, transactor, nil)
 11623  	if err != nil {
 11624  		return nil, err
 11625  	}
 11626  	return &IERC721ReceiverTransactor{contract: contract}, nil
 11627  }
 11628  
 11629  // NewIERC721ReceiverFilterer creates a new log filterer instance of IERC721Receiver, bound to a specific deployed contract.
 11630  func NewIERC721ReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721ReceiverFilterer, error) {
 11631  	contract, err := bindIERC721Receiver(address, nil, nil, filterer)
 11632  	if err != nil {
 11633  		return nil, err
 11634  	}
 11635  	return &IERC721ReceiverFilterer{contract: contract}, nil
 11636  }
 11637  
 11638  // bindIERC721Receiver binds a generic wrapper to an already deployed contract.
 11639  func bindIERC721Receiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 11640  	parsed, err := IERC721ReceiverMetaData.GetAbi()
 11641  	if err != nil {
 11642  		return nil, err
 11643  	}
 11644  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
 11645  }
 11646  
 11647  // Call invokes the (constant) contract method with params as input values and
 11648  // sets the output to result. The result type might be a single field for simple
 11649  // returns, a slice of interfaces for anonymous returns and a struct for named
 11650  // returns.
 11651  func (_IERC721Receiver *IERC721ReceiverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
 11652  	return _IERC721Receiver.Contract.IERC721ReceiverCaller.contract.Call(opts, result, method, params...)
 11653  }
 11654  
 11655  // Transfer initiates a plain transaction to move funds to the contract, calling
 11656  // its default method if one is available.
 11657  func (_IERC721Receiver *IERC721ReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 11658  	return _IERC721Receiver.Contract.IERC721ReceiverTransactor.contract.Transfer(opts)
 11659  }
 11660  
 11661  // Transact invokes the (paid) contract method with params as input values.
 11662  func (_IERC721Receiver *IERC721ReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 11663  	return _IERC721Receiver.Contract.IERC721ReceiverTransactor.contract.Transact(opts, method, params...)
 11664  }
 11665  
 11666  // Call invokes the (constant) contract method with params as input values and
 11667  // sets the output to result. The result type might be a single field for simple
 11668  // returns, a slice of interfaces for anonymous returns and a struct for named
 11669  // returns.
 11670  func (_IERC721Receiver *IERC721ReceiverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
 11671  	return _IERC721Receiver.Contract.contract.Call(opts, result, method, params...)
 11672  }
 11673  
 11674  // Transfer initiates a plain transaction to move funds to the contract, calling
 11675  // its default method if one is available.
 11676  func (_IERC721Receiver *IERC721ReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 11677  	return _IERC721Receiver.Contract.contract.Transfer(opts)
 11678  }
 11679  
 11680  // Transact invokes the (paid) contract method with params as input values.
 11681  func (_IERC721Receiver *IERC721ReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 11682  	return _IERC721Receiver.Contract.contract.Transact(opts, method, params...)
 11683  }
 11684  
 11685  // OnERC721Received is a paid mutator transaction binding the contract method 0x150b7a02.
 11686  //
 11687  // Solidity: function onERC721Received(address operator, address from, uint256 tokenId, bytes data) returns(bytes4)
 11688  func (_IERC721Receiver *IERC721ReceiverTransactor) OnERC721Received(opts *bind.TransactOpts, operator common.Address, from common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 11689  	return _IERC721Receiver.contract.Transact(opts, "onERC721Received", operator, from, tokenId, data)
 11690  }
 11691  
 11692  // OnERC721Received is a paid mutator transaction binding the contract method 0x150b7a02.
 11693  //
 11694  // Solidity: function onERC721Received(address operator, address from, uint256 tokenId, bytes data) returns(bytes4)
 11695  func (_IERC721Receiver *IERC721ReceiverSession) OnERC721Received(operator common.Address, from common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 11696  	return _IERC721Receiver.Contract.OnERC721Received(&_IERC721Receiver.TransactOpts, operator, from, tokenId, data)
 11697  }
 11698  
 11699  // OnERC721Received is a paid mutator transaction binding the contract method 0x150b7a02.
 11700  //
 11701  // Solidity: function onERC721Received(address operator, address from, uint256 tokenId, bytes data) returns(bytes4)
 11702  func (_IERC721Receiver *IERC721ReceiverTransactorSession) OnERC721Received(operator common.Address, from common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 11703  	return _IERC721Receiver.Contract.OnERC721Received(&_IERC721Receiver.TransactOpts, operator, from, tokenId, data)
 11704  }
 11705  
 11706  // MinterRoleMetaData contains all meta data concerning the MinterRole contract.
 11707  var MinterRoleMetaData = &bind.MetaData{
 11708  	ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"}]",
 11709  	Sigs: map[string]string{
 11710  		"983b2d56": "addMinter(address)",
 11711  		"aa271e1a": "isMinter(address)",
 11712  		"98650275": "renounceMinter()",
 11713  	},
 11714  }
 11715  
 11716  // MinterRoleABI is the input ABI used to generate the binding from.
 11717  // Deprecated: Use MinterRoleMetaData.ABI instead.
 11718  var MinterRoleABI = MinterRoleMetaData.ABI
 11719  
 11720  // MinterRoleBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 11721  const MinterRoleBinRuntime = ``
 11722  
 11723  // MinterRoleFuncSigs maps the 4-byte function signature to its string representation.
 11724  // Deprecated: Use MinterRoleMetaData.Sigs instead.
 11725  var MinterRoleFuncSigs = MinterRoleMetaData.Sigs
 11726  
 11727  // MinterRole is an auto generated Go binding around a Klaytn contract.
 11728  type MinterRole struct {
 11729  	MinterRoleCaller     // Read-only binding to the contract
 11730  	MinterRoleTransactor // Write-only binding to the contract
 11731  	MinterRoleFilterer   // Log filterer for contract events
 11732  }
 11733  
 11734  // MinterRoleCaller is an auto generated read-only Go binding around a Klaytn contract.
 11735  type MinterRoleCaller struct {
 11736  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11737  }
 11738  
 11739  // MinterRoleTransactor is an auto generated write-only Go binding around a Klaytn contract.
 11740  type MinterRoleTransactor struct {
 11741  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11742  }
 11743  
 11744  // MinterRoleFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 11745  type MinterRoleFilterer struct {
 11746  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11747  }
 11748  
 11749  // MinterRoleSession is an auto generated Go binding around a Klaytn contract,
 11750  // with pre-set call and transact options.
 11751  type MinterRoleSession struct {
 11752  	Contract     *MinterRole       // Generic contract binding to set the session for
 11753  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 11754  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 11755  }
 11756  
 11757  // MinterRoleCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 11758  // with pre-set call options.
 11759  type MinterRoleCallerSession struct {
 11760  	Contract *MinterRoleCaller // Generic contract caller binding to set the session for
 11761  	CallOpts bind.CallOpts     // Call options to use throughout this session
 11762  }
 11763  
 11764  // MinterRoleTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 11765  // with pre-set transact options.
 11766  type MinterRoleTransactorSession struct {
 11767  	Contract     *MinterRoleTransactor // Generic contract transactor binding to set the session for
 11768  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
 11769  }
 11770  
 11771  // MinterRoleRaw is an auto generated low-level Go binding around a Klaytn contract.
 11772  type MinterRoleRaw struct {
 11773  	Contract *MinterRole // Generic contract binding to access the raw methods on
 11774  }
 11775  
 11776  // MinterRoleCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 11777  type MinterRoleCallerRaw struct {
 11778  	Contract *MinterRoleCaller // Generic read-only contract binding to access the raw methods on
 11779  }
 11780  
 11781  // MinterRoleTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 11782  type MinterRoleTransactorRaw struct {
 11783  	Contract *MinterRoleTransactor // Generic write-only contract binding to access the raw methods on
 11784  }
 11785  
 11786  // NewMinterRole creates a new instance of MinterRole, bound to a specific deployed contract.
 11787  func NewMinterRole(address common.Address, backend bind.ContractBackend) (*MinterRole, error) {
 11788  	contract, err := bindMinterRole(address, backend, backend, backend)
 11789  	if err != nil {
 11790  		return nil, err
 11791  	}
 11792  	return &MinterRole{MinterRoleCaller: MinterRoleCaller{contract: contract}, MinterRoleTransactor: MinterRoleTransactor{contract: contract}, MinterRoleFilterer: MinterRoleFilterer{contract: contract}}, nil
 11793  }
 11794  
 11795  // NewMinterRoleCaller creates a new read-only instance of MinterRole, bound to a specific deployed contract.
 11796  func NewMinterRoleCaller(address common.Address, caller bind.ContractCaller) (*MinterRoleCaller, error) {
 11797  	contract, err := bindMinterRole(address, caller, nil, nil)
 11798  	if err != nil {
 11799  		return nil, err
 11800  	}
 11801  	return &MinterRoleCaller{contract: contract}, nil
 11802  }
 11803  
 11804  // NewMinterRoleTransactor creates a new write-only instance of MinterRole, bound to a specific deployed contract.
 11805  func NewMinterRoleTransactor(address common.Address, transactor bind.ContractTransactor) (*MinterRoleTransactor, error) {
 11806  	contract, err := bindMinterRole(address, nil, transactor, nil)
 11807  	if err != nil {
 11808  		return nil, err
 11809  	}
 11810  	return &MinterRoleTransactor{contract: contract}, nil
 11811  }
 11812  
 11813  // NewMinterRoleFilterer creates a new log filterer instance of MinterRole, bound to a specific deployed contract.
 11814  func NewMinterRoleFilterer(address common.Address, filterer bind.ContractFilterer) (*MinterRoleFilterer, error) {
 11815  	contract, err := bindMinterRole(address, nil, nil, filterer)
 11816  	if err != nil {
 11817  		return nil, err
 11818  	}
 11819  	return &MinterRoleFilterer{contract: contract}, nil
 11820  }
 11821  
 11822  // bindMinterRole binds a generic wrapper to an already deployed contract.
 11823  func bindMinterRole(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 11824  	parsed, err := MinterRoleMetaData.GetAbi()
 11825  	if err != nil {
 11826  		return nil, err
 11827  	}
 11828  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
 11829  }
 11830  
 11831  // Call invokes the (constant) contract method with params as input values and
 11832  // sets the output to result. The result type might be a single field for simple
 11833  // returns, a slice of interfaces for anonymous returns and a struct for named
 11834  // returns.
 11835  func (_MinterRole *MinterRoleRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
 11836  	return _MinterRole.Contract.MinterRoleCaller.contract.Call(opts, result, method, params...)
 11837  }
 11838  
 11839  // Transfer initiates a plain transaction to move funds to the contract, calling
 11840  // its default method if one is available.
 11841  func (_MinterRole *MinterRoleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 11842  	return _MinterRole.Contract.MinterRoleTransactor.contract.Transfer(opts)
 11843  }
 11844  
 11845  // Transact invokes the (paid) contract method with params as input values.
 11846  func (_MinterRole *MinterRoleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 11847  	return _MinterRole.Contract.MinterRoleTransactor.contract.Transact(opts, method, params...)
 11848  }
 11849  
 11850  // Call invokes the (constant) contract method with params as input values and
 11851  // sets the output to result. The result type might be a single field for simple
 11852  // returns, a slice of interfaces for anonymous returns and a struct for named
 11853  // returns.
 11854  func (_MinterRole *MinterRoleCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
 11855  	return _MinterRole.Contract.contract.Call(opts, result, method, params...)
 11856  }
 11857  
 11858  // Transfer initiates a plain transaction to move funds to the contract, calling
 11859  // its default method if one is available.
 11860  func (_MinterRole *MinterRoleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 11861  	return _MinterRole.Contract.contract.Transfer(opts)
 11862  }
 11863  
 11864  // Transact invokes the (paid) contract method with params as input values.
 11865  func (_MinterRole *MinterRoleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 11866  	return _MinterRole.Contract.contract.Transact(opts, method, params...)
 11867  }
 11868  
 11869  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 11870  //
 11871  // Solidity: function isMinter(address account) view returns(bool)
 11872  func (_MinterRole *MinterRoleCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
 11873  	var out []interface{}
 11874  	err := _MinterRole.contract.Call(opts, &out, "isMinter", account)
 11875  
 11876  	if err != nil {
 11877  		return *new(bool), err
 11878  	}
 11879  
 11880  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
 11881  
 11882  	return out0, err
 11883  
 11884  }
 11885  
 11886  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 11887  //
 11888  // Solidity: function isMinter(address account) view returns(bool)
 11889  func (_MinterRole *MinterRoleSession) IsMinter(account common.Address) (bool, error) {
 11890  	return _MinterRole.Contract.IsMinter(&_MinterRole.CallOpts, account)
 11891  }
 11892  
 11893  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 11894  //
 11895  // Solidity: function isMinter(address account) view returns(bool)
 11896  func (_MinterRole *MinterRoleCallerSession) IsMinter(account common.Address) (bool, error) {
 11897  	return _MinterRole.Contract.IsMinter(&_MinterRole.CallOpts, account)
 11898  }
 11899  
 11900  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 11901  //
 11902  // Solidity: function addMinter(address account) returns()
 11903  func (_MinterRole *MinterRoleTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
 11904  	return _MinterRole.contract.Transact(opts, "addMinter", account)
 11905  }
 11906  
 11907  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 11908  //
 11909  // Solidity: function addMinter(address account) returns()
 11910  func (_MinterRole *MinterRoleSession) AddMinter(account common.Address) (*types.Transaction, error) {
 11911  	return _MinterRole.Contract.AddMinter(&_MinterRole.TransactOpts, account)
 11912  }
 11913  
 11914  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 11915  //
 11916  // Solidity: function addMinter(address account) returns()
 11917  func (_MinterRole *MinterRoleTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
 11918  	return _MinterRole.Contract.AddMinter(&_MinterRole.TransactOpts, account)
 11919  }
 11920  
 11921  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 11922  //
 11923  // Solidity: function renounceMinter() returns()
 11924  func (_MinterRole *MinterRoleTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
 11925  	return _MinterRole.contract.Transact(opts, "renounceMinter")
 11926  }
 11927  
 11928  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 11929  //
 11930  // Solidity: function renounceMinter() returns()
 11931  func (_MinterRole *MinterRoleSession) RenounceMinter() (*types.Transaction, error) {
 11932  	return _MinterRole.Contract.RenounceMinter(&_MinterRole.TransactOpts)
 11933  }
 11934  
 11935  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 11936  //
 11937  // Solidity: function renounceMinter() returns()
 11938  func (_MinterRole *MinterRoleTransactorSession) RenounceMinter() (*types.Transaction, error) {
 11939  	return _MinterRole.Contract.RenounceMinter(&_MinterRole.TransactOpts)
 11940  }
 11941  
 11942  // 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.
 11943  type MinterRoleMinterAddedIterator struct {
 11944  	Event *MinterRoleMinterAdded // Event containing the contract specifics and raw log
 11945  
 11946  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11947  	event    string              // Event name to use for unpacking event data
 11948  
 11949  	logs chan types.Log      // Log channel receiving the found contract events
 11950  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 11951  	done bool                // Whether the subscription completed delivering logs
 11952  	fail error               // Occurred error to stop iteration
 11953  }
 11954  
 11955  // Next advances the iterator to the subsequent event, returning whether there
 11956  // are any more events found. In case of a retrieval or parsing error, false is
 11957  // returned and Error() can be queried for the exact failure.
 11958  func (it *MinterRoleMinterAddedIterator) Next() bool {
 11959  	// If the iterator failed, stop iterating
 11960  	if it.fail != nil {
 11961  		return false
 11962  	}
 11963  	// If the iterator completed, deliver directly whatever's available
 11964  	if it.done {
 11965  		select {
 11966  		case log := <-it.logs:
 11967  			it.Event = new(MinterRoleMinterAdded)
 11968  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11969  				it.fail = err
 11970  				return false
 11971  			}
 11972  			it.Event.Raw = log
 11973  			return true
 11974  
 11975  		default:
 11976  			return false
 11977  		}
 11978  	}
 11979  	// Iterator still in progress, wait for either a data or an error event
 11980  	select {
 11981  	case log := <-it.logs:
 11982  		it.Event = new(MinterRoleMinterAdded)
 11983  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11984  			it.fail = err
 11985  			return false
 11986  		}
 11987  		it.Event.Raw = log
 11988  		return true
 11989  
 11990  	case err := <-it.sub.Err():
 11991  		it.done = true
 11992  		it.fail = err
 11993  		return it.Next()
 11994  	}
 11995  }
 11996  
 11997  // Error returns any retrieval or parsing error occurred during filtering.
 11998  func (it *MinterRoleMinterAddedIterator) Error() error {
 11999  	return it.fail
 12000  }
 12001  
 12002  // Close terminates the iteration process, releasing any pending underlying
 12003  // resources.
 12004  func (it *MinterRoleMinterAddedIterator) Close() error {
 12005  	it.sub.Unsubscribe()
 12006  	return nil
 12007  }
 12008  
 12009  // MinterRoleMinterAdded represents a MinterAdded event raised by the MinterRole contract.
 12010  type MinterRoleMinterAdded struct {
 12011  	Account common.Address
 12012  	Raw     types.Log // Blockchain specific contextual infos
 12013  }
 12014  
 12015  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 12016  //
 12017  // Solidity: event MinterAdded(address indexed account)
 12018  func (_MinterRole *MinterRoleFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterAddedIterator, error) {
 12019  
 12020  	var accountRule []interface{}
 12021  	for _, accountItem := range account {
 12022  		accountRule = append(accountRule, accountItem)
 12023  	}
 12024  
 12025  	logs, sub, err := _MinterRole.contract.FilterLogs(opts, "MinterAdded", accountRule)
 12026  	if err != nil {
 12027  		return nil, err
 12028  	}
 12029  	return &MinterRoleMinterAddedIterator{contract: _MinterRole.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
 12030  }
 12031  
 12032  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 12033  //
 12034  // Solidity: event MinterAdded(address indexed account)
 12035  func (_MinterRole *MinterRoleFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterAdded, account []common.Address) (event.Subscription, error) {
 12036  
 12037  	var accountRule []interface{}
 12038  	for _, accountItem := range account {
 12039  		accountRule = append(accountRule, accountItem)
 12040  	}
 12041  
 12042  	logs, sub, err := _MinterRole.contract.WatchLogs(opts, "MinterAdded", accountRule)
 12043  	if err != nil {
 12044  		return nil, err
 12045  	}
 12046  	return event.NewSubscription(func(quit <-chan struct{}) error {
 12047  		defer sub.Unsubscribe()
 12048  		for {
 12049  			select {
 12050  			case log := <-logs:
 12051  				// New log arrived, parse the event and forward to the user
 12052  				event := new(MinterRoleMinterAdded)
 12053  				if err := _MinterRole.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 12054  					return err
 12055  				}
 12056  				event.Raw = log
 12057  
 12058  				select {
 12059  				case sink <- event:
 12060  				case err := <-sub.Err():
 12061  					return err
 12062  				case <-quit:
 12063  					return nil
 12064  				}
 12065  			case err := <-sub.Err():
 12066  				return err
 12067  			case <-quit:
 12068  				return nil
 12069  			}
 12070  		}
 12071  	}), nil
 12072  }
 12073  
 12074  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 12075  //
 12076  // Solidity: event MinterAdded(address indexed account)
 12077  func (_MinterRole *MinterRoleFilterer) ParseMinterAdded(log types.Log) (*MinterRoleMinterAdded, error) {
 12078  	event := new(MinterRoleMinterAdded)
 12079  	if err := _MinterRole.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 12080  		return nil, err
 12081  	}
 12082  	return event, nil
 12083  }
 12084  
 12085  // 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.
 12086  type MinterRoleMinterRemovedIterator struct {
 12087  	Event *MinterRoleMinterRemoved // Event containing the contract specifics and raw log
 12088  
 12089  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 12090  	event    string              // Event name to use for unpacking event data
 12091  
 12092  	logs chan types.Log      // Log channel receiving the found contract events
 12093  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 12094  	done bool                // Whether the subscription completed delivering logs
 12095  	fail error               // Occurred error to stop iteration
 12096  }
 12097  
 12098  // Next advances the iterator to the subsequent event, returning whether there
 12099  // are any more events found. In case of a retrieval or parsing error, false is
 12100  // returned and Error() can be queried for the exact failure.
 12101  func (it *MinterRoleMinterRemovedIterator) Next() bool {
 12102  	// If the iterator failed, stop iterating
 12103  	if it.fail != nil {
 12104  		return false
 12105  	}
 12106  	// If the iterator completed, deliver directly whatever's available
 12107  	if it.done {
 12108  		select {
 12109  		case log := <-it.logs:
 12110  			it.Event = new(MinterRoleMinterRemoved)
 12111  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12112  				it.fail = err
 12113  				return false
 12114  			}
 12115  			it.Event.Raw = log
 12116  			return true
 12117  
 12118  		default:
 12119  			return false
 12120  		}
 12121  	}
 12122  	// Iterator still in progress, wait for either a data or an error event
 12123  	select {
 12124  	case log := <-it.logs:
 12125  		it.Event = new(MinterRoleMinterRemoved)
 12126  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12127  			it.fail = err
 12128  			return false
 12129  		}
 12130  		it.Event.Raw = log
 12131  		return true
 12132  
 12133  	case err := <-it.sub.Err():
 12134  		it.done = true
 12135  		it.fail = err
 12136  		return it.Next()
 12137  	}
 12138  }
 12139  
 12140  // Error returns any retrieval or parsing error occurred during filtering.
 12141  func (it *MinterRoleMinterRemovedIterator) Error() error {
 12142  	return it.fail
 12143  }
 12144  
 12145  // Close terminates the iteration process, releasing any pending underlying
 12146  // resources.
 12147  func (it *MinterRoleMinterRemovedIterator) Close() error {
 12148  	it.sub.Unsubscribe()
 12149  	return nil
 12150  }
 12151  
 12152  // MinterRoleMinterRemoved represents a MinterRemoved event raised by the MinterRole contract.
 12153  type MinterRoleMinterRemoved struct {
 12154  	Account common.Address
 12155  	Raw     types.Log // Blockchain specific contextual infos
 12156  }
 12157  
 12158  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 12159  //
 12160  // Solidity: event MinterRemoved(address indexed account)
 12161  func (_MinterRole *MinterRoleFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterRemovedIterator, error) {
 12162  
 12163  	var accountRule []interface{}
 12164  	for _, accountItem := range account {
 12165  		accountRule = append(accountRule, accountItem)
 12166  	}
 12167  
 12168  	logs, sub, err := _MinterRole.contract.FilterLogs(opts, "MinterRemoved", accountRule)
 12169  	if err != nil {
 12170  		return nil, err
 12171  	}
 12172  	return &MinterRoleMinterRemovedIterator{contract: _MinterRole.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
 12173  }
 12174  
 12175  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 12176  //
 12177  // Solidity: event MinterRemoved(address indexed account)
 12178  func (_MinterRole *MinterRoleFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterRemoved, account []common.Address) (event.Subscription, error) {
 12179  
 12180  	var accountRule []interface{}
 12181  	for _, accountItem := range account {
 12182  		accountRule = append(accountRule, accountItem)
 12183  	}
 12184  
 12185  	logs, sub, err := _MinterRole.contract.WatchLogs(opts, "MinterRemoved", accountRule)
 12186  	if err != nil {
 12187  		return nil, err
 12188  	}
 12189  	return event.NewSubscription(func(quit <-chan struct{}) error {
 12190  		defer sub.Unsubscribe()
 12191  		for {
 12192  			select {
 12193  			case log := <-logs:
 12194  				// New log arrived, parse the event and forward to the user
 12195  				event := new(MinterRoleMinterRemoved)
 12196  				if err := _MinterRole.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 12197  					return err
 12198  				}
 12199  				event.Raw = log
 12200  
 12201  				select {
 12202  				case sink <- event:
 12203  				case err := <-sub.Err():
 12204  					return err
 12205  				case <-quit:
 12206  					return nil
 12207  				}
 12208  			case err := <-sub.Err():
 12209  				return err
 12210  			case <-quit:
 12211  				return nil
 12212  			}
 12213  		}
 12214  	}), nil
 12215  }
 12216  
 12217  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 12218  //
 12219  // Solidity: event MinterRemoved(address indexed account)
 12220  func (_MinterRole *MinterRoleFilterer) ParseMinterRemoved(log types.Log) (*MinterRoleMinterRemoved, error) {
 12221  	event := new(MinterRoleMinterRemoved)
 12222  	if err := _MinterRole.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 12223  		return nil, err
 12224  	}
 12225  	return event, nil
 12226  }
 12227  
 12228  // OwnableMetaData contains all meta data concerning the Ownable contract.
 12229  var OwnableMetaData = &bind.MetaData{
 12230  	ABI: "[{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}]",
 12231  	Sigs: map[string]string{
 12232  		"8f32d59b": "isOwner()",
 12233  		"8da5cb5b": "owner()",
 12234  		"715018a6": "renounceOwnership()",
 12235  		"f2fde38b": "transferOwnership(address)",
 12236  	},
 12237  }
 12238  
 12239  // OwnableABI is the input ABI used to generate the binding from.
 12240  // Deprecated: Use OwnableMetaData.ABI instead.
 12241  var OwnableABI = OwnableMetaData.ABI
 12242  
 12243  // OwnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 12244  const OwnableBinRuntime = ``
 12245  
 12246  // OwnableFuncSigs maps the 4-byte function signature to its string representation.
 12247  // Deprecated: Use OwnableMetaData.Sigs instead.
 12248  var OwnableFuncSigs = OwnableMetaData.Sigs
 12249  
 12250  // Ownable is an auto generated Go binding around a Klaytn contract.
 12251  type Ownable struct {
 12252  	OwnableCaller     // Read-only binding to the contract
 12253  	OwnableTransactor // Write-only binding to the contract
 12254  	OwnableFilterer   // Log filterer for contract events
 12255  }
 12256  
 12257  // OwnableCaller is an auto generated read-only Go binding around a Klaytn contract.
 12258  type OwnableCaller struct {
 12259  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12260  }
 12261  
 12262  // OwnableTransactor is an auto generated write-only Go binding around a Klaytn contract.
 12263  type OwnableTransactor struct {
 12264  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12265  }
 12266  
 12267  // OwnableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 12268  type OwnableFilterer struct {
 12269  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12270  }
 12271  
 12272  // OwnableSession is an auto generated Go binding around a Klaytn contract,
 12273  // with pre-set call and transact options.
 12274  type OwnableSession struct {
 12275  	Contract     *Ownable          // Generic contract binding to set the session for
 12276  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 12277  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 12278  }
 12279  
 12280  // OwnableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 12281  // with pre-set call options.
 12282  type OwnableCallerSession struct {
 12283  	Contract *OwnableCaller // Generic contract caller binding to set the session for
 12284  	CallOpts bind.CallOpts  // Call options to use throughout this session
 12285  }
 12286  
 12287  // OwnableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 12288  // with pre-set transact options.
 12289  type OwnableTransactorSession struct {
 12290  	Contract     *OwnableTransactor // Generic contract transactor binding to set the session for
 12291  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
 12292  }
 12293  
 12294  // OwnableRaw is an auto generated low-level Go binding around a Klaytn contract.
 12295  type OwnableRaw struct {
 12296  	Contract *Ownable // Generic contract binding to access the raw methods on
 12297  }
 12298  
 12299  // OwnableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 12300  type OwnableCallerRaw struct {
 12301  	Contract *OwnableCaller // Generic read-only contract binding to access the raw methods on
 12302  }
 12303  
 12304  // OwnableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 12305  type OwnableTransactorRaw struct {
 12306  	Contract *OwnableTransactor // Generic write-only contract binding to access the raw methods on
 12307  }
 12308  
 12309  // NewOwnable creates a new instance of Ownable, bound to a specific deployed contract.
 12310  func NewOwnable(address common.Address, backend bind.ContractBackend) (*Ownable, error) {
 12311  	contract, err := bindOwnable(address, backend, backend, backend)
 12312  	if err != nil {
 12313  		return nil, err
 12314  	}
 12315  	return &Ownable{OwnableCaller: OwnableCaller{contract: contract}, OwnableTransactor: OwnableTransactor{contract: contract}, OwnableFilterer: OwnableFilterer{contract: contract}}, nil
 12316  }
 12317  
 12318  // NewOwnableCaller creates a new read-only instance of Ownable, bound to a specific deployed contract.
 12319  func NewOwnableCaller(address common.Address, caller bind.ContractCaller) (*OwnableCaller, error) {
 12320  	contract, err := bindOwnable(address, caller, nil, nil)
 12321  	if err != nil {
 12322  		return nil, err
 12323  	}
 12324  	return &OwnableCaller{contract: contract}, nil
 12325  }
 12326  
 12327  // NewOwnableTransactor creates a new write-only instance of Ownable, bound to a specific deployed contract.
 12328  func NewOwnableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableTransactor, error) {
 12329  	contract, err := bindOwnable(address, nil, transactor, nil)
 12330  	if err != nil {
 12331  		return nil, err
 12332  	}
 12333  	return &OwnableTransactor{contract: contract}, nil
 12334  }
 12335  
 12336  // NewOwnableFilterer creates a new log filterer instance of Ownable, bound to a specific deployed contract.
 12337  func NewOwnableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableFilterer, error) {
 12338  	contract, err := bindOwnable(address, nil, nil, filterer)
 12339  	if err != nil {
 12340  		return nil, err
 12341  	}
 12342  	return &OwnableFilterer{contract: contract}, nil
 12343  }
 12344  
 12345  // bindOwnable binds a generic wrapper to an already deployed contract.
 12346  func bindOwnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 12347  	parsed, err := OwnableMetaData.GetAbi()
 12348  	if err != nil {
 12349  		return nil, err
 12350  	}
 12351  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
 12352  }
 12353  
 12354  // Call invokes the (constant) contract method with params as input values and
 12355  // sets the output to result. The result type might be a single field for simple
 12356  // returns, a slice of interfaces for anonymous returns and a struct for named
 12357  // returns.
 12358  func (_Ownable *OwnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
 12359  	return _Ownable.Contract.OwnableCaller.contract.Call(opts, result, method, params...)
 12360  }
 12361  
 12362  // Transfer initiates a plain transaction to move funds to the contract, calling
 12363  // its default method if one is available.
 12364  func (_Ownable *OwnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 12365  	return _Ownable.Contract.OwnableTransactor.contract.Transfer(opts)
 12366  }
 12367  
 12368  // Transact invokes the (paid) contract method with params as input values.
 12369  func (_Ownable *OwnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 12370  	return _Ownable.Contract.OwnableTransactor.contract.Transact(opts, method, params...)
 12371  }
 12372  
 12373  // Call invokes the (constant) contract method with params as input values and
 12374  // sets the output to result. The result type might be a single field for simple
 12375  // returns, a slice of interfaces for anonymous returns and a struct for named
 12376  // returns.
 12377  func (_Ownable *OwnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
 12378  	return _Ownable.Contract.contract.Call(opts, result, method, params...)
 12379  }
 12380  
 12381  // Transfer initiates a plain transaction to move funds to the contract, calling
 12382  // its default method if one is available.
 12383  func (_Ownable *OwnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 12384  	return _Ownable.Contract.contract.Transfer(opts)
 12385  }
 12386  
 12387  // Transact invokes the (paid) contract method with params as input values.
 12388  func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 12389  	return _Ownable.Contract.contract.Transact(opts, method, params...)
 12390  }
 12391  
 12392  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 12393  //
 12394  // Solidity: function isOwner() view returns(bool)
 12395  func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
 12396  	var out []interface{}
 12397  	err := _Ownable.contract.Call(opts, &out, "isOwner")
 12398  
 12399  	if err != nil {
 12400  		return *new(bool), err
 12401  	}
 12402  
 12403  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
 12404  
 12405  	return out0, err
 12406  
 12407  }
 12408  
 12409  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 12410  //
 12411  // Solidity: function isOwner() view returns(bool)
 12412  func (_Ownable *OwnableSession) IsOwner() (bool, error) {
 12413  	return _Ownable.Contract.IsOwner(&_Ownable.CallOpts)
 12414  }
 12415  
 12416  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 12417  //
 12418  // Solidity: function isOwner() view returns(bool)
 12419  func (_Ownable *OwnableCallerSession) IsOwner() (bool, error) {
 12420  	return _Ownable.Contract.IsOwner(&_Ownable.CallOpts)
 12421  }
 12422  
 12423  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 12424  //
 12425  // Solidity: function owner() view returns(address)
 12426  func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
 12427  	var out []interface{}
 12428  	err := _Ownable.contract.Call(opts, &out, "owner")
 12429  
 12430  	if err != nil {
 12431  		return *new(common.Address), err
 12432  	}
 12433  
 12434  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
 12435  
 12436  	return out0, err
 12437  
 12438  }
 12439  
 12440  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 12441  //
 12442  // Solidity: function owner() view returns(address)
 12443  func (_Ownable *OwnableSession) Owner() (common.Address, error) {
 12444  	return _Ownable.Contract.Owner(&_Ownable.CallOpts)
 12445  }
 12446  
 12447  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 12448  //
 12449  // Solidity: function owner() view returns(address)
 12450  func (_Ownable *OwnableCallerSession) Owner() (common.Address, error) {
 12451  	return _Ownable.Contract.Owner(&_Ownable.CallOpts)
 12452  }
 12453  
 12454  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 12455  //
 12456  // Solidity: function renounceOwnership() returns()
 12457  func (_Ownable *OwnableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
 12458  	return _Ownable.contract.Transact(opts, "renounceOwnership")
 12459  }
 12460  
 12461  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 12462  //
 12463  // Solidity: function renounceOwnership() returns()
 12464  func (_Ownable *OwnableSession) RenounceOwnership() (*types.Transaction, error) {
 12465  	return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts)
 12466  }
 12467  
 12468  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 12469  //
 12470  // Solidity: function renounceOwnership() returns()
 12471  func (_Ownable *OwnableTransactorSession) RenounceOwnership() (*types.Transaction, error) {
 12472  	return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts)
 12473  }
 12474  
 12475  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 12476  //
 12477  // Solidity: function transferOwnership(address newOwner) returns()
 12478  func (_Ownable *OwnableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
 12479  	return _Ownable.contract.Transact(opts, "transferOwnership", newOwner)
 12480  }
 12481  
 12482  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 12483  //
 12484  // Solidity: function transferOwnership(address newOwner) returns()
 12485  func (_Ownable *OwnableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
 12486  	return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner)
 12487  }
 12488  
 12489  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 12490  //
 12491  // Solidity: function transferOwnership(address newOwner) returns()
 12492  func (_Ownable *OwnableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
 12493  	return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner)
 12494  }
 12495  
 12496  // 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.
 12497  type OwnableOwnershipTransferredIterator struct {
 12498  	Event *OwnableOwnershipTransferred // Event containing the contract specifics and raw log
 12499  
 12500  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 12501  	event    string              // Event name to use for unpacking event data
 12502  
 12503  	logs chan types.Log      // Log channel receiving the found contract events
 12504  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 12505  	done bool                // Whether the subscription completed delivering logs
 12506  	fail error               // Occurred error to stop iteration
 12507  }
 12508  
 12509  // Next advances the iterator to the subsequent event, returning whether there
 12510  // are any more events found. In case of a retrieval or parsing error, false is
 12511  // returned and Error() can be queried for the exact failure.
 12512  func (it *OwnableOwnershipTransferredIterator) Next() bool {
 12513  	// If the iterator failed, stop iterating
 12514  	if it.fail != nil {
 12515  		return false
 12516  	}
 12517  	// If the iterator completed, deliver directly whatever's available
 12518  	if it.done {
 12519  		select {
 12520  		case log := <-it.logs:
 12521  			it.Event = new(OwnableOwnershipTransferred)
 12522  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12523  				it.fail = err
 12524  				return false
 12525  			}
 12526  			it.Event.Raw = log
 12527  			return true
 12528  
 12529  		default:
 12530  			return false
 12531  		}
 12532  	}
 12533  	// Iterator still in progress, wait for either a data or an error event
 12534  	select {
 12535  	case log := <-it.logs:
 12536  		it.Event = new(OwnableOwnershipTransferred)
 12537  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12538  			it.fail = err
 12539  			return false
 12540  		}
 12541  		it.Event.Raw = log
 12542  		return true
 12543  
 12544  	case err := <-it.sub.Err():
 12545  		it.done = true
 12546  		it.fail = err
 12547  		return it.Next()
 12548  	}
 12549  }
 12550  
 12551  // Error returns any retrieval or parsing error occurred during filtering.
 12552  func (it *OwnableOwnershipTransferredIterator) Error() error {
 12553  	return it.fail
 12554  }
 12555  
 12556  // Close terminates the iteration process, releasing any pending underlying
 12557  // resources.
 12558  func (it *OwnableOwnershipTransferredIterator) Close() error {
 12559  	it.sub.Unsubscribe()
 12560  	return nil
 12561  }
 12562  
 12563  // OwnableOwnershipTransferred represents a OwnershipTransferred event raised by the Ownable contract.
 12564  type OwnableOwnershipTransferred struct {
 12565  	PreviousOwner common.Address
 12566  	NewOwner      common.Address
 12567  	Raw           types.Log // Blockchain specific contextual infos
 12568  }
 12569  
 12570  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 12571  //
 12572  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 12573  func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) {
 12574  
 12575  	var previousOwnerRule []interface{}
 12576  	for _, previousOwnerItem := range previousOwner {
 12577  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 12578  	}
 12579  	var newOwnerRule []interface{}
 12580  	for _, newOwnerItem := range newOwner {
 12581  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 12582  	}
 12583  
 12584  	logs, sub, err := _Ownable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 12585  	if err != nil {
 12586  		return nil, err
 12587  	}
 12588  	return &OwnableOwnershipTransferredIterator{contract: _Ownable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
 12589  }
 12590  
 12591  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 12592  //
 12593  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 12594  func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
 12595  
 12596  	var previousOwnerRule []interface{}
 12597  	for _, previousOwnerItem := range previousOwner {
 12598  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 12599  	}
 12600  	var newOwnerRule []interface{}
 12601  	for _, newOwnerItem := range newOwner {
 12602  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 12603  	}
 12604  
 12605  	logs, sub, err := _Ownable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 12606  	if err != nil {
 12607  		return nil, err
 12608  	}
 12609  	return event.NewSubscription(func(quit <-chan struct{}) error {
 12610  		defer sub.Unsubscribe()
 12611  		for {
 12612  			select {
 12613  			case log := <-logs:
 12614  				// New log arrived, parse the event and forward to the user
 12615  				event := new(OwnableOwnershipTransferred)
 12616  				if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 12617  					return err
 12618  				}
 12619  				event.Raw = log
 12620  
 12621  				select {
 12622  				case sink <- event:
 12623  				case err := <-sub.Err():
 12624  					return err
 12625  				case <-quit:
 12626  					return nil
 12627  				}
 12628  			case err := <-sub.Err():
 12629  				return err
 12630  			case <-quit:
 12631  				return nil
 12632  			}
 12633  		}
 12634  	}), nil
 12635  }
 12636  
 12637  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 12638  //
 12639  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 12640  func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableOwnershipTransferred, error) {
 12641  	event := new(OwnableOwnershipTransferred)
 12642  	if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 12643  		return nil, err
 12644  	}
 12645  	return event, nil
 12646  }
 12647  
 12648  // RolesMetaData contains all meta data concerning the Roles contract.
 12649  var RolesMetaData = &bind.MetaData{
 12650  	ABI: "[]",
 12651  	Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058206fdeeec4a4b0b444bd488c924c927184696cea63963686d57a13cf42f3830d840029",
 12652  }
 12653  
 12654  // RolesABI is the input ABI used to generate the binding from.
 12655  // Deprecated: Use RolesMetaData.ABI instead.
 12656  var RolesABI = RolesMetaData.ABI
 12657  
 12658  // RolesBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 12659  const RolesBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058206fdeeec4a4b0b444bd488c924c927184696cea63963686d57a13cf42f3830d840029`
 12660  
 12661  // RolesBin is the compiled bytecode used for deploying new contracts.
 12662  // Deprecated: Use RolesMetaData.Bin instead.
 12663  var RolesBin = RolesMetaData.Bin
 12664  
 12665  // DeployRoles deploys a new Klaytn contract, binding an instance of Roles to it.
 12666  func DeployRoles(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Roles, error) {
 12667  	parsed, err := RolesMetaData.GetAbi()
 12668  	if err != nil {
 12669  		return common.Address{}, nil, nil, err
 12670  	}
 12671  	if parsed == nil {
 12672  		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
 12673  	}
 12674  
 12675  	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(RolesBin), backend)
 12676  	if err != nil {
 12677  		return common.Address{}, nil, nil, err
 12678  	}
 12679  	return address, tx, &Roles{RolesCaller: RolesCaller{contract: contract}, RolesTransactor: RolesTransactor{contract: contract}, RolesFilterer: RolesFilterer{contract: contract}}, nil
 12680  }
 12681  
 12682  // Roles is an auto generated Go binding around a Klaytn contract.
 12683  type Roles struct {
 12684  	RolesCaller     // Read-only binding to the contract
 12685  	RolesTransactor // Write-only binding to the contract
 12686  	RolesFilterer   // Log filterer for contract events
 12687  }
 12688  
 12689  // RolesCaller is an auto generated read-only Go binding around a Klaytn contract.
 12690  type RolesCaller struct {
 12691  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12692  }
 12693  
 12694  // RolesTransactor is an auto generated write-only Go binding around a Klaytn contract.
 12695  type RolesTransactor struct {
 12696  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12697  }
 12698  
 12699  // RolesFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 12700  type RolesFilterer struct {
 12701  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12702  }
 12703  
 12704  // RolesSession is an auto generated Go binding around a Klaytn contract,
 12705  // with pre-set call and transact options.
 12706  type RolesSession struct {
 12707  	Contract     *Roles            // Generic contract binding to set the session for
 12708  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 12709  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 12710  }
 12711  
 12712  // RolesCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 12713  // with pre-set call options.
 12714  type RolesCallerSession struct {
 12715  	Contract *RolesCaller  // Generic contract caller binding to set the session for
 12716  	CallOpts bind.CallOpts // Call options to use throughout this session
 12717  }
 12718  
 12719  // RolesTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 12720  // with pre-set transact options.
 12721  type RolesTransactorSession struct {
 12722  	Contract     *RolesTransactor  // Generic contract transactor binding to set the session for
 12723  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 12724  }
 12725  
 12726  // RolesRaw is an auto generated low-level Go binding around a Klaytn contract.
 12727  type RolesRaw struct {
 12728  	Contract *Roles // Generic contract binding to access the raw methods on
 12729  }
 12730  
 12731  // RolesCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 12732  type RolesCallerRaw struct {
 12733  	Contract *RolesCaller // Generic read-only contract binding to access the raw methods on
 12734  }
 12735  
 12736  // RolesTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 12737  type RolesTransactorRaw struct {
 12738  	Contract *RolesTransactor // Generic write-only contract binding to access the raw methods on
 12739  }
 12740  
 12741  // NewRoles creates a new instance of Roles, bound to a specific deployed contract.
 12742  func NewRoles(address common.Address, backend bind.ContractBackend) (*Roles, error) {
 12743  	contract, err := bindRoles(address, backend, backend, backend)
 12744  	if err != nil {
 12745  		return nil, err
 12746  	}
 12747  	return &Roles{RolesCaller: RolesCaller{contract: contract}, RolesTransactor: RolesTransactor{contract: contract}, RolesFilterer: RolesFilterer{contract: contract}}, nil
 12748  }
 12749  
 12750  // NewRolesCaller creates a new read-only instance of Roles, bound to a specific deployed contract.
 12751  func NewRolesCaller(address common.Address, caller bind.ContractCaller) (*RolesCaller, error) {
 12752  	contract, err := bindRoles(address, caller, nil, nil)
 12753  	if err != nil {
 12754  		return nil, err
 12755  	}
 12756  	return &RolesCaller{contract: contract}, nil
 12757  }
 12758  
 12759  // NewRolesTransactor creates a new write-only instance of Roles, bound to a specific deployed contract.
 12760  func NewRolesTransactor(address common.Address, transactor bind.ContractTransactor) (*RolesTransactor, error) {
 12761  	contract, err := bindRoles(address, nil, transactor, nil)
 12762  	if err != nil {
 12763  		return nil, err
 12764  	}
 12765  	return &RolesTransactor{contract: contract}, nil
 12766  }
 12767  
 12768  // NewRolesFilterer creates a new log filterer instance of Roles, bound to a specific deployed contract.
 12769  func NewRolesFilterer(address common.Address, filterer bind.ContractFilterer) (*RolesFilterer, error) {
 12770  	contract, err := bindRoles(address, nil, nil, filterer)
 12771  	if err != nil {
 12772  		return nil, err
 12773  	}
 12774  	return &RolesFilterer{contract: contract}, nil
 12775  }
 12776  
 12777  // bindRoles binds a generic wrapper to an already deployed contract.
 12778  func bindRoles(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 12779  	parsed, err := RolesMetaData.GetAbi()
 12780  	if err != nil {
 12781  		return nil, err
 12782  	}
 12783  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
 12784  }
 12785  
 12786  // Call invokes the (constant) contract method with params as input values and
 12787  // sets the output to result. The result type might be a single field for simple
 12788  // returns, a slice of interfaces for anonymous returns and a struct for named
 12789  // returns.
 12790  func (_Roles *RolesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
 12791  	return _Roles.Contract.RolesCaller.contract.Call(opts, result, method, params...)
 12792  }
 12793  
 12794  // Transfer initiates a plain transaction to move funds to the contract, calling
 12795  // its default method if one is available.
 12796  func (_Roles *RolesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 12797  	return _Roles.Contract.RolesTransactor.contract.Transfer(opts)
 12798  }
 12799  
 12800  // Transact invokes the (paid) contract method with params as input values.
 12801  func (_Roles *RolesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 12802  	return _Roles.Contract.RolesTransactor.contract.Transact(opts, method, params...)
 12803  }
 12804  
 12805  // Call invokes the (constant) contract method with params as input values and
 12806  // sets the output to result. The result type might be a single field for simple
 12807  // returns, a slice of interfaces for anonymous returns and a struct for named
 12808  // returns.
 12809  func (_Roles *RolesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
 12810  	return _Roles.Contract.contract.Call(opts, result, method, params...)
 12811  }
 12812  
 12813  // Transfer initiates a plain transaction to move funds to the contract, calling
 12814  // its default method if one is available.
 12815  func (_Roles *RolesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 12816  	return _Roles.Contract.contract.Transfer(opts)
 12817  }
 12818  
 12819  // Transact invokes the (paid) contract method with params as input values.
 12820  func (_Roles *RolesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 12821  	return _Roles.Contract.contract.Transact(opts, method, params...)
 12822  }
 12823  
 12824  // SafeMathMetaData contains all meta data concerning the SafeMath contract.
 12825  var SafeMathMetaData = &bind.MetaData{
 12826  	ABI: "[]",
 12827  	Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582052c975835d8618888691b14d52ff822fc00b24a3637e28a17d824cf0361b62b90029",
 12828  }
 12829  
 12830  // SafeMathABI is the input ABI used to generate the binding from.
 12831  // Deprecated: Use SafeMathMetaData.ABI instead.
 12832  var SafeMathABI = SafeMathMetaData.ABI
 12833  
 12834  // SafeMathBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 12835  const SafeMathBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582052c975835d8618888691b14d52ff822fc00b24a3637e28a17d824cf0361b62b90029`
 12836  
 12837  // SafeMathBin is the compiled bytecode used for deploying new contracts.
 12838  // Deprecated: Use SafeMathMetaData.Bin instead.
 12839  var SafeMathBin = SafeMathMetaData.Bin
 12840  
 12841  // DeploySafeMath deploys a new Klaytn contract, binding an instance of SafeMath to it.
 12842  func DeploySafeMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeMath, error) {
 12843  	parsed, err := SafeMathMetaData.GetAbi()
 12844  	if err != nil {
 12845  		return common.Address{}, nil, nil, err
 12846  	}
 12847  	if parsed == nil {
 12848  		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
 12849  	}
 12850  
 12851  	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeMathBin), backend)
 12852  	if err != nil {
 12853  		return common.Address{}, nil, nil, err
 12854  	}
 12855  	return address, tx, &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
 12856  }
 12857  
 12858  // SafeMath is an auto generated Go binding around a Klaytn contract.
 12859  type SafeMath struct {
 12860  	SafeMathCaller     // Read-only binding to the contract
 12861  	SafeMathTransactor // Write-only binding to the contract
 12862  	SafeMathFilterer   // Log filterer for contract events
 12863  }
 12864  
 12865  // SafeMathCaller is an auto generated read-only Go binding around a Klaytn contract.
 12866  type SafeMathCaller struct {
 12867  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12868  }
 12869  
 12870  // SafeMathTransactor is an auto generated write-only Go binding around a Klaytn contract.
 12871  type SafeMathTransactor struct {
 12872  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12873  }
 12874  
 12875  // SafeMathFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 12876  type SafeMathFilterer struct {
 12877  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12878  }
 12879  
 12880  // SafeMathSession is an auto generated Go binding around a Klaytn contract,
 12881  // with pre-set call and transact options.
 12882  type SafeMathSession struct {
 12883  	Contract     *SafeMath         // Generic contract binding to set the session for
 12884  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 12885  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 12886  }
 12887  
 12888  // SafeMathCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 12889  // with pre-set call options.
 12890  type SafeMathCallerSession struct {
 12891  	Contract *SafeMathCaller // Generic contract caller binding to set the session for
 12892  	CallOpts bind.CallOpts   // Call options to use throughout this session
 12893  }
 12894  
 12895  // SafeMathTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 12896  // with pre-set transact options.
 12897  type SafeMathTransactorSession struct {
 12898  	Contract     *SafeMathTransactor // Generic contract transactor binding to set the session for
 12899  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
 12900  }
 12901  
 12902  // SafeMathRaw is an auto generated low-level Go binding around a Klaytn contract.
 12903  type SafeMathRaw struct {
 12904  	Contract *SafeMath // Generic contract binding to access the raw methods on
 12905  }
 12906  
 12907  // SafeMathCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 12908  type SafeMathCallerRaw struct {
 12909  	Contract *SafeMathCaller // Generic read-only contract binding to access the raw methods on
 12910  }
 12911  
 12912  // SafeMathTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 12913  type SafeMathTransactorRaw struct {
 12914  	Contract *SafeMathTransactor // Generic write-only contract binding to access the raw methods on
 12915  }
 12916  
 12917  // NewSafeMath creates a new instance of SafeMath, bound to a specific deployed contract.
 12918  func NewSafeMath(address common.Address, backend bind.ContractBackend) (*SafeMath, error) {
 12919  	contract, err := bindSafeMath(address, backend, backend, backend)
 12920  	if err != nil {
 12921  		return nil, err
 12922  	}
 12923  	return &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
 12924  }
 12925  
 12926  // NewSafeMathCaller creates a new read-only instance of SafeMath, bound to a specific deployed contract.
 12927  func NewSafeMathCaller(address common.Address, caller bind.ContractCaller) (*SafeMathCaller, error) {
 12928  	contract, err := bindSafeMath(address, caller, nil, nil)
 12929  	if err != nil {
 12930  		return nil, err
 12931  	}
 12932  	return &SafeMathCaller{contract: contract}, nil
 12933  }
 12934  
 12935  // NewSafeMathTransactor creates a new write-only instance of SafeMath, bound to a specific deployed contract.
 12936  func NewSafeMathTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeMathTransactor, error) {
 12937  	contract, err := bindSafeMath(address, nil, transactor, nil)
 12938  	if err != nil {
 12939  		return nil, err
 12940  	}
 12941  	return &SafeMathTransactor{contract: contract}, nil
 12942  }
 12943  
 12944  // NewSafeMathFilterer creates a new log filterer instance of SafeMath, bound to a specific deployed contract.
 12945  func NewSafeMathFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeMathFilterer, error) {
 12946  	contract, err := bindSafeMath(address, nil, nil, filterer)
 12947  	if err != nil {
 12948  		return nil, err
 12949  	}
 12950  	return &SafeMathFilterer{contract: contract}, nil
 12951  }
 12952  
 12953  // bindSafeMath binds a generic wrapper to an already deployed contract.
 12954  func bindSafeMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 12955  	parsed, err := SafeMathMetaData.GetAbi()
 12956  	if err != nil {
 12957  		return nil, err
 12958  	}
 12959  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
 12960  }
 12961  
 12962  // Call invokes the (constant) contract method with params as input values and
 12963  // sets the output to result. The result type might be a single field for simple
 12964  // returns, a slice of interfaces for anonymous returns and a struct for named
 12965  // returns.
 12966  func (_SafeMath *SafeMathRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
 12967  	return _SafeMath.Contract.SafeMathCaller.contract.Call(opts, result, method, params...)
 12968  }
 12969  
 12970  // Transfer initiates a plain transaction to move funds to the contract, calling
 12971  // its default method if one is available.
 12972  func (_SafeMath *SafeMathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 12973  	return _SafeMath.Contract.SafeMathTransactor.contract.Transfer(opts)
 12974  }
 12975  
 12976  // Transact invokes the (paid) contract method with params as input values.
 12977  func (_SafeMath *SafeMathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 12978  	return _SafeMath.Contract.SafeMathTransactor.contract.Transact(opts, method, params...)
 12979  }
 12980  
 12981  // Call invokes the (constant) contract method with params as input values and
 12982  // sets the output to result. The result type might be a single field for simple
 12983  // returns, a slice of interfaces for anonymous returns and a struct for named
 12984  // returns.
 12985  func (_SafeMath *SafeMathCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
 12986  	return _SafeMath.Contract.contract.Call(opts, result, method, params...)
 12987  }
 12988  
 12989  // Transfer initiates a plain transaction to move funds to the contract, calling
 12990  // its default method if one is available.
 12991  func (_SafeMath *SafeMathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 12992  	return _SafeMath.Contract.contract.Transfer(opts)
 12993  }
 12994  
 12995  // Transact invokes the (paid) contract method with params as input values.
 12996  func (_SafeMath *SafeMathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 12997  	return _SafeMath.Contract.contract.Transact(opts, method, params...)
 12998  }
 12999  
 13000  // ServiceChainNFTMetaData contains all meta data concerning the ServiceChainNFT contract.
 13001  var ServiceChainNFTMetaData = &bind.MetaData{
 13002  	ABI: "[{\"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\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"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\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_uid\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestValueTransfer\",\"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\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"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\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_user\",\"type\":\"address\"},{\"name\":\"_startID\",\"type\":\"uint256\"},{\"name\":\"_endID\",\"type\":\"uint256\"}],\"name\":\"registerBulk\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\"}],\"name\":\"setBridge\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":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\":\"bridge\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"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\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"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\"}]",
 13003  	Sigs: map[string]string{
 13004  		"983b2d56": "addMinter(address)",
 13005  		"095ea7b3": "approve(address,uint256)",
 13006  		"70a08231": "balanceOf(address)",
 13007  		"e78cea92": "bridge()",
 13008  		"42966c68": "burn(uint256)",
 13009  		"081812fc": "getApproved(uint256)",
 13010  		"e985e9c5": "isApprovedForAll(address,address)",
 13011  		"aa271e1a": "isMinter(address)",
 13012  		"8f32d59b": "isOwner()",
 13013  		"50bb4e7f": "mintWithTokenURI(address,uint256,string)",
 13014  		"06fdde03": "name()",
 13015  		"8da5cb5b": "owner()",
 13016  		"6352211e": "ownerOf(uint256)",
 13017  		"7a9adac6": "registerBulk(address,uint256,uint256)",
 13018  		"98650275": "renounceMinter()",
 13019  		"715018a6": "renounceOwnership()",
 13020  		"3f4c4e3d": "requestValueTransfer(uint256,address,bytes)",
 13021  		"42842e0e": "safeTransferFrom(address,address,uint256)",
 13022  		"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
 13023  		"a22cb465": "setApprovalForAll(address,bool)",
 13024  		"8dd14802": "setBridge(address)",
 13025  		"01ffc9a7": "supportsInterface(bytes4)",
 13026  		"95d89b41": "symbol()",
 13027  		"4f6ccce7": "tokenByIndex(uint256)",
 13028  		"2f745c59": "tokenOfOwnerByIndex(address,uint256)",
 13029  		"c87b56dd": "tokenURI(uint256)",
 13030  		"18160ddd": "totalSupply()",
 13031  		"23b872dd": "transferFrom(address,address,uint256)",
 13032  		"f2fde38b": "transferOwnership(address)",
 13033  	},
 13034  	Bin: "0x60806040523480156200001157600080fd5b50604051602080620029a6833981018060405260208110156200003357600080fd5b5051604080518082018252600f81527f53657276696365436861696e4e465400000000000000000000000000000000006020828101919091528251808401909352600383527f53434e00000000000000000000000000000000000000000000000000000000008382015283929082908290620000d5907f01ffc9a70000000000000000000000000000000000000000000000000000000090620001c3811b901c565b620000ed6380ac58cd60e01b620001c360201b60201c565b6200010563780e9d6360e01b620001c360201b60201c565b81516200011a9060099060208501906200054c565b5080516200013090600a9060208401906200054c565b5062000149635b5e139f60e01b620001c360201b60201c565b505050506200015e336200029260201b60201c565b600d80546001600160a01b0319163317908190556040516001600160a01b0391909116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3620001bb81620002e460201b60201c565b5050620005ee565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156200025557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b620002ad81600c6200040d60201b62001b9f1790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b620002f4620004b160201b60201c565b6200036057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6200037f816001600160a01b0316620004c360201b620014821760201c565b620003eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6200041f8282620004c960201b60201c565b156200048c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b600d546001600160a01b031633145b90565b3b151590565b60006001600160a01b0382166200052c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620029846022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200058f57805160ff1916838001178555620005bf565b82800160010185558215620005bf579182015b82811115620005bf578251825591602001919060010190620005a2565b50620005cd929150620005d1565b5090565b620004c091905b80821115620005cd5760008155600101620005d8565b61238680620005fe6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a61161010457806398650275116100a2578063c87b56dd11610071578063c87b56dd14610722578063e78cea921461073f578063e985e9c514610747578063f2fde38b14610775576101cf565b80639865027514610600578063a22cb46514610608578063aa271e1a14610636578063b88d4fde1461065c576101cf565b80638dd14802116100de5780638dd14802146105a45780638f32d59b146105ca57806395d89b41146105d2578063983b2d56146105da576101cf565b8063715018a6146105625780637a9adac61461056a5780638da5cb5b1461059c576101cf565b80633f4c4e3d116101715780634f6ccce71161014b5780634f6ccce71461044757806350bb4e7f146104645780636352211e1461051f57806370a082311461053c576101cf565b80633f4c4e3d1461036f57806342842e0e146103f457806342966c681461042a576101cf565b8063095ea7b3116101ad578063095ea7b3146102c557806318160ddd146102f357806323b872dd1461030d5780632f745c5914610343576101cf565b806301ffc9a7146101d457806306fdde031461020f578063081812fc1461028c575b600080fd5b6101fb600480360360208110156101ea57600080fd5b50356001600160e01b03191661079b565b604080519115158252519081900360200190f35b6102176107ba565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610251578181015183820152602001610239565b50505050905090810190601f16801561027e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102a9600480360360208110156102a257600080fd5b5035610851565b604080516001600160a01b039092168252519081900360200190f35b6102f1600480360360408110156102db57600080fd5b506001600160a01b0381351690602001356108b6565b005b6102fb6109cd565b60408051918252519081900360200190f35b6102f16004803603606081101561032357600080fd5b506001600160a01b038135811691602081013590911690604001356109d3565b6102fb6004803603604081101561035957600080fd5b506001600160a01b038135169060200135610a2b565b6102f16004803603606081101561038557600080fd5b8135916001600160a01b03602082013516918101906060810160408201356401000000008111156103b557600080fd5b8201836020820111156103c757600080fd5b803590602001918460018302840111640100000000831117156103e957600080fd5b509092509050610aad565b6102f16004803603606081101561040a57600080fd5b506001600160a01b03813581169160208101359091169060400135610b7a565b6102f16004803603602081101561044057600080fd5b5035610b95565b6102fb6004803603602081101561045d57600080fd5b5035610be9565b6101fb6004803603606081101561047a57600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156104aa57600080fd5b8201836020820111156104bc57600080fd5b803590602001918460018302840111640100000000831117156104de57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c52945050505050565b6102a96004803603602081101561053557600080fd5b5035610cb9565b6102fb6004803603602081101561055257600080fd5b50356001600160a01b0316610d16565b6102f1610d81565b6102f16004803603606081101561058057600080fd5b506001600160a01b038135169060208101359060400135610e15565b6102a9610ea5565b6102f1600480360360208110156105ba57600080fd5b50356001600160a01b0316610eb4565b6101fb610f86565b610217610f97565b6102f1600480360360208110156105f057600080fd5b50356001600160a01b0316610ff8565b6102f1611048565b6102f16004803603604081101561061e57600080fd5b506001600160a01b0381351690602001351515611053565b6101fb6004803603602081101561064c57600080fd5b50356001600160a01b0316611122565b6102f16004803603608081101561067257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156106ad57600080fd5b8201836020820111156106bf57600080fd5b803590602001918460018302840111640100000000831117156106e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611135945050505050565b6102176004803603602081101561073857600080fd5b503561118a565b6102a9611272565b6101fb6004803603604081101561075d57600080fd5b506001600160a01b0381358116916020013516611281565b6102f16004803603602081101561078b57600080fd5b50356001600160a01b03166112af565b6001600160e01b03191660009081526020819052604090205460ff1690565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108465780601f1061081b57610100808354040283529160200191610846565b820191906000526020600020905b81548152906001019060200180831161082957829003601f168201915b505050505090505b90565b600061085c82611302565b61089a57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180612196602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006108c182610cb9565b9050806001600160a01b0316836001600160a01b0316141561091757604051600160e51b62461bcd0281526004018080602001828103825260218152602001806122886021913960400191505060405180910390fd5b336001600160a01b038216148061093357506109338133611281565b61097157604051600160e51b62461bcd0281526004018080602001828103825260388152602001806120ba6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60075490565b6109dd338261131f565b610a1b57604051600160e51b62461bcd0281526004018080602001828103825260318152602001806122a96031913960400191505060405180910390fd5b610a268383836113c6565b505050565b6000610a3683610d16565b8210610a7657604051600160e51b62461bcd02815260040180806020018281038252602b815260200180611fe7602b913960400191505060405180910390fd5b6001600160a01b0383166000908152600560205260409020805483908110610a9a57fe5b9060005260206000200154905092915050565b600e54610ac59033906001600160a01b0316866109d3565b600e54604051600160e41b630cf0da290281523360048201818152602483018890526001600160a01b0387811660448501526080606485019081526084850187905294169363cf0da290938992899289928992919060a401848480828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610b5c57600080fd5b505af1158015610b70573d6000803e3d6000fd5b5050505050505050565b610a2683838360405180602001604052806000815250611135565b610b9f338261131f565b610bdd57604051600160e51b62461bcd02815260040180806020018281038252603081526020018061232b6030913960400191505060405180910390fd5b610be6816113e5565b50565b6000610bf36109cd565b8210610c3357604051600160e51b62461bcd02815260040180806020018281038252602c8152602001806122da602c913960400191505060405180910390fd5b60078281548110610c4057fe5b90600052602060002001549050919050565b6000610c5d33611122565b610c9b57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806121456030913960400191505060405180910390fd5b610ca584846113f7565b610caf8383611418565b5060019392505050565b6000818152600160205260408120546001600160a01b031680610d1057604051600160e51b62461bcd02815260040180806020018281038252602981526020018061211c6029913960400191505060405180910390fd5b92915050565b60006001600160a01b038216610d6057604051600160e51b62461bcd02815260040180806020018281038252602a8152602001806120f2602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610d109061147e565b610d89610f86565b610dcb5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b600d546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600d80546001600160a01b0319169055565b610e1d610f86565b610e5f5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b815b81811015610e9f57610e968482604051806040016040528060078152602001600160c81b667465737455524902815250610c52565b50600101610e61565b50505050565b600d546001600160a01b031690565b610ebc610f86565b610efe5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b610f10816001600160a01b0316611482565b610f645760408051600160e51b62461bcd02815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b0316331490565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108465780601f1061081b57610100808354040283529160200191610846565b61100133611122565b61103f57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806121456030913960400191505060405180910390fd5b610be681611488565b611051336114d0565b565b6001600160a01b0382163314156110b45760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6000610d10600c8363ffffffff61151816565b6111408484846109d3565b61114c84848484611582565b610e9f57604051600160e51b62461bcd0281526004018080602001828103825260328152602001806120126032913960400191505060405180910390fd5b606061119582611302565b6111d357604051600160e51b62461bcd02815260040180806020018281038252602f815260200180612259602f913960400191505060405180910390fd5b6000828152600b602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156112665780601f1061123b57610100808354040283529160200191611266565b820191906000526020600020905b81548152906001019060200180831161124957829003601f168201915b50505050509050919050565b600e546001600160a01b031681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6112b7610f86565b6112f95760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b610be6816116bb565b6000908152600160205260409020546001600160a01b0316151590565b600061132a82611302565b61136857604051600160e51b62461bcd02815260040180806020018281038252602c81526020018061208e602c913960400191505060405180910390fd5b600061137383610cb9565b9050806001600160a01b0316846001600160a01b031614806113ae5750836001600160a01b03166113a384610851565b6001600160a01b0316145b806113be57506113be8185611281565b949350505050565b6113d183838361175f565b6113db83826118a9565b610a26828261199e565b610be66113f182610cb9565b826119dc565b6114018282611a24565b61140b828261199e565b61141481611b5b565b5050565b61142182611302565b61145f57604051600160e51b62461bcd02815260040180806020018281038252602c8152602001806121c2602c913960400191505060405180910390fd5b6000828152600b602090815260409091208251610a2692840190611eea565b5490565b3b151590565b611499600c8263ffffffff611b9f16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6114e1600c8263ffffffff611c2316565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661156257604051600160e51b62461bcd02815260040180806020018281038252602281526020018061220e6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6000611596846001600160a01b0316611482565b6115a2575060016113be565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b8381101561161f578181015183820152602001611607565b50505050905090810190601f16801561164c5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561166e57600080fd5b505af1158015611682573d6000803e3d6000fd5b505050506040513d602081101561169857600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6001600160a01b03811661170357604051600160e51b62461bcd0281526004018080602001828103825260268152602001806120446026913960400191505060405180910390fd5b600d546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600d80546001600160a01b0319166001600160a01b0392909216919091179055565b826001600160a01b031661177282610cb9565b6001600160a01b0316146117ba57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806122306029913960400191505060405180910390fd5b6001600160a01b03821661180257604051600160e51b62461bcd02815260040180806020018281038252602481526020018061206a6024913960400191505060405180910390fd5b61180b81611c8d565b6001600160a01b038316600090815260036020526040902061182c90611cc8565b6001600160a01b038216600090815260036020526040902061184d90611cdf565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b0382166000908152600560205260408120546118d390600163ffffffff611ce816565b60008381526006602052604090205490915080821461196e576001600160a01b038416600090815260056020526040812080548490811061191057fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b03168152602001908152602001600020838154811061194e57fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490611997906000198301611f68565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b6119e68282611d48565b6000818152600b60205260409020546002600019610100600184161502019091160415611414576000818152600b6020526040812061141491611f8c565b6001600160a01b038216611a825760408051600160e51b62461bcd02815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b611a8b81611302565b15611ae05760408051600160e51b62461bcd02815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b038716908117909155835260039091529020611b1f90611cdf565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600780546000838152600860205260408120829055600182018355919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880155565b611ba98282611518565b15611bfe5760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b611c2d8282611518565b611c6b57604051600160e51b62461bcd0281526004018080602001828103825260218152602001806121756021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6000818152600260205260409020546001600160a01b031615610be657600090815260026020526040902080546001600160a01b0319169055565b8054611cdb90600163ffffffff611ce816565b9055565b80546001019055565b600082821115611d425760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b611d528282611d74565b611d5c82826118a9565b60008181526006602052604081205561141481611e4e565b816001600160a01b0316611d8782610cb9565b6001600160a01b031614611dcf57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806123066025913960400191505060405180910390fd5b611dd881611c8d565b6001600160a01b0382166000908152600360205260409020611df990611cc8565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600754600090611e6590600163ffffffff611ce816565b60008381526008602052604081205460078054939450909284908110611e8757fe5b906000526020600020015490508060078381548110611ea257fe5b60009182526020808320909101929092558281526008909152604090208290556007805490611ed5906000198301611f68565b50505060009182525060086020526040812055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611f2b57805160ff1916838001178555611f58565b82800160010185558215611f58579182015b82811115611f58578251825591602001919060010190611f3d565b50611f64929150611fcc565b5090565b815481835581811115610a2657600083815260209020610a26918101908301611fcc565b50805460018160011615610100020316600290046000825580601f10611fb25750610be6565b601f016020900490600052602060002090810190610be691905b61084e91905b80821115611f645760008155600101611fd256fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e64734552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820032306241b3cccba21fdcf87e3b2bf569b6dece599dd576928df55e517c30de90029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373",
 13035  }
 13036  
 13037  // ServiceChainNFTABI is the input ABI used to generate the binding from.
 13038  // Deprecated: Use ServiceChainNFTMetaData.ABI instead.
 13039  var ServiceChainNFTABI = ServiceChainNFTMetaData.ABI
 13040  
 13041  // ServiceChainNFTBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 13042  const ServiceChainNFTBinRuntime = `608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a61161010457806398650275116100a2578063c87b56dd11610071578063c87b56dd14610722578063e78cea921461073f578063e985e9c514610747578063f2fde38b14610775576101cf565b80639865027514610600578063a22cb46514610608578063aa271e1a14610636578063b88d4fde1461065c576101cf565b80638dd14802116100de5780638dd14802146105a45780638f32d59b146105ca57806395d89b41146105d2578063983b2d56146105da576101cf565b8063715018a6146105625780637a9adac61461056a5780638da5cb5b1461059c576101cf565b80633f4c4e3d116101715780634f6ccce71161014b5780634f6ccce71461044757806350bb4e7f146104645780636352211e1461051f57806370a082311461053c576101cf565b80633f4c4e3d1461036f57806342842e0e146103f457806342966c681461042a576101cf565b8063095ea7b3116101ad578063095ea7b3146102c557806318160ddd146102f357806323b872dd1461030d5780632f745c5914610343576101cf565b806301ffc9a7146101d457806306fdde031461020f578063081812fc1461028c575b600080fd5b6101fb600480360360208110156101ea57600080fd5b50356001600160e01b03191661079b565b604080519115158252519081900360200190f35b6102176107ba565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610251578181015183820152602001610239565b50505050905090810190601f16801561027e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102a9600480360360208110156102a257600080fd5b5035610851565b604080516001600160a01b039092168252519081900360200190f35b6102f1600480360360408110156102db57600080fd5b506001600160a01b0381351690602001356108b6565b005b6102fb6109cd565b60408051918252519081900360200190f35b6102f16004803603606081101561032357600080fd5b506001600160a01b038135811691602081013590911690604001356109d3565b6102fb6004803603604081101561035957600080fd5b506001600160a01b038135169060200135610a2b565b6102f16004803603606081101561038557600080fd5b8135916001600160a01b03602082013516918101906060810160408201356401000000008111156103b557600080fd5b8201836020820111156103c757600080fd5b803590602001918460018302840111640100000000831117156103e957600080fd5b509092509050610aad565b6102f16004803603606081101561040a57600080fd5b506001600160a01b03813581169160208101359091169060400135610b7a565b6102f16004803603602081101561044057600080fd5b5035610b95565b6102fb6004803603602081101561045d57600080fd5b5035610be9565b6101fb6004803603606081101561047a57600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156104aa57600080fd5b8201836020820111156104bc57600080fd5b803590602001918460018302840111640100000000831117156104de57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c52945050505050565b6102a96004803603602081101561053557600080fd5b5035610cb9565b6102fb6004803603602081101561055257600080fd5b50356001600160a01b0316610d16565b6102f1610d81565b6102f16004803603606081101561058057600080fd5b506001600160a01b038135169060208101359060400135610e15565b6102a9610ea5565b6102f1600480360360208110156105ba57600080fd5b50356001600160a01b0316610eb4565b6101fb610f86565b610217610f97565b6102f1600480360360208110156105f057600080fd5b50356001600160a01b0316610ff8565b6102f1611048565b6102f16004803603604081101561061e57600080fd5b506001600160a01b0381351690602001351515611053565b6101fb6004803603602081101561064c57600080fd5b50356001600160a01b0316611122565b6102f16004803603608081101561067257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156106ad57600080fd5b8201836020820111156106bf57600080fd5b803590602001918460018302840111640100000000831117156106e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611135945050505050565b6102176004803603602081101561073857600080fd5b503561118a565b6102a9611272565b6101fb6004803603604081101561075d57600080fd5b506001600160a01b0381358116916020013516611281565b6102f16004803603602081101561078b57600080fd5b50356001600160a01b03166112af565b6001600160e01b03191660009081526020819052604090205460ff1690565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108465780601f1061081b57610100808354040283529160200191610846565b820191906000526020600020905b81548152906001019060200180831161082957829003601f168201915b505050505090505b90565b600061085c82611302565b61089a57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180612196602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006108c182610cb9565b9050806001600160a01b0316836001600160a01b0316141561091757604051600160e51b62461bcd0281526004018080602001828103825260218152602001806122886021913960400191505060405180910390fd5b336001600160a01b038216148061093357506109338133611281565b61097157604051600160e51b62461bcd0281526004018080602001828103825260388152602001806120ba6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60075490565b6109dd338261131f565b610a1b57604051600160e51b62461bcd0281526004018080602001828103825260318152602001806122a96031913960400191505060405180910390fd5b610a268383836113c6565b505050565b6000610a3683610d16565b8210610a7657604051600160e51b62461bcd02815260040180806020018281038252602b815260200180611fe7602b913960400191505060405180910390fd5b6001600160a01b0383166000908152600560205260409020805483908110610a9a57fe5b9060005260206000200154905092915050565b600e54610ac59033906001600160a01b0316866109d3565b600e54604051600160e41b630cf0da290281523360048201818152602483018890526001600160a01b0387811660448501526080606485019081526084850187905294169363cf0da290938992899289928992919060a401848480828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610b5c57600080fd5b505af1158015610b70573d6000803e3d6000fd5b5050505050505050565b610a2683838360405180602001604052806000815250611135565b610b9f338261131f565b610bdd57604051600160e51b62461bcd02815260040180806020018281038252603081526020018061232b6030913960400191505060405180910390fd5b610be6816113e5565b50565b6000610bf36109cd565b8210610c3357604051600160e51b62461bcd02815260040180806020018281038252602c8152602001806122da602c913960400191505060405180910390fd5b60078281548110610c4057fe5b90600052602060002001549050919050565b6000610c5d33611122565b610c9b57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806121456030913960400191505060405180910390fd5b610ca584846113f7565b610caf8383611418565b5060019392505050565b6000818152600160205260408120546001600160a01b031680610d1057604051600160e51b62461bcd02815260040180806020018281038252602981526020018061211c6029913960400191505060405180910390fd5b92915050565b60006001600160a01b038216610d6057604051600160e51b62461bcd02815260040180806020018281038252602a8152602001806120f2602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610d109061147e565b610d89610f86565b610dcb5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b600d546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600d80546001600160a01b0319169055565b610e1d610f86565b610e5f5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b815b81811015610e9f57610e968482604051806040016040528060078152602001600160c81b667465737455524902815250610c52565b50600101610e61565b50505050565b600d546001600160a01b031690565b610ebc610f86565b610efe5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b610f10816001600160a01b0316611482565b610f645760408051600160e51b62461bcd02815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b0316331490565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108465780601f1061081b57610100808354040283529160200191610846565b61100133611122565b61103f57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806121456030913960400191505060405180910390fd5b610be681611488565b611051336114d0565b565b6001600160a01b0382163314156110b45760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6000610d10600c8363ffffffff61151816565b6111408484846109d3565b61114c84848484611582565b610e9f57604051600160e51b62461bcd0281526004018080602001828103825260328152602001806120126032913960400191505060405180910390fd5b606061119582611302565b6111d357604051600160e51b62461bcd02815260040180806020018281038252602f815260200180612259602f913960400191505060405180910390fd5b6000828152600b602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156112665780601f1061123b57610100808354040283529160200191611266565b820191906000526020600020905b81548152906001019060200180831161124957829003601f168201915b50505050509050919050565b600e546001600160a01b031681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6112b7610f86565b6112f95760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b610be6816116bb565b6000908152600160205260409020546001600160a01b0316151590565b600061132a82611302565b61136857604051600160e51b62461bcd02815260040180806020018281038252602c81526020018061208e602c913960400191505060405180910390fd5b600061137383610cb9565b9050806001600160a01b0316846001600160a01b031614806113ae5750836001600160a01b03166113a384610851565b6001600160a01b0316145b806113be57506113be8185611281565b949350505050565b6113d183838361175f565b6113db83826118a9565b610a26828261199e565b610be66113f182610cb9565b826119dc565b6114018282611a24565b61140b828261199e565b61141481611b5b565b5050565b61142182611302565b61145f57604051600160e51b62461bcd02815260040180806020018281038252602c8152602001806121c2602c913960400191505060405180910390fd5b6000828152600b602090815260409091208251610a2692840190611eea565b5490565b3b151590565b611499600c8263ffffffff611b9f16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6114e1600c8263ffffffff611c2316565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661156257604051600160e51b62461bcd02815260040180806020018281038252602281526020018061220e6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6000611596846001600160a01b0316611482565b6115a2575060016113be565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b8381101561161f578181015183820152602001611607565b50505050905090810190601f16801561164c5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561166e57600080fd5b505af1158015611682573d6000803e3d6000fd5b505050506040513d602081101561169857600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6001600160a01b03811661170357604051600160e51b62461bcd0281526004018080602001828103825260268152602001806120446026913960400191505060405180910390fd5b600d546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600d80546001600160a01b0319166001600160a01b0392909216919091179055565b826001600160a01b031661177282610cb9565b6001600160a01b0316146117ba57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806122306029913960400191505060405180910390fd5b6001600160a01b03821661180257604051600160e51b62461bcd02815260040180806020018281038252602481526020018061206a6024913960400191505060405180910390fd5b61180b81611c8d565b6001600160a01b038316600090815260036020526040902061182c90611cc8565b6001600160a01b038216600090815260036020526040902061184d90611cdf565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b0382166000908152600560205260408120546118d390600163ffffffff611ce816565b60008381526006602052604090205490915080821461196e576001600160a01b038416600090815260056020526040812080548490811061191057fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b03168152602001908152602001600020838154811061194e57fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490611997906000198301611f68565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b6119e68282611d48565b6000818152600b60205260409020546002600019610100600184161502019091160415611414576000818152600b6020526040812061141491611f8c565b6001600160a01b038216611a825760408051600160e51b62461bcd02815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b611a8b81611302565b15611ae05760408051600160e51b62461bcd02815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b038716908117909155835260039091529020611b1f90611cdf565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600780546000838152600860205260408120829055600182018355919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880155565b611ba98282611518565b15611bfe5760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b611c2d8282611518565b611c6b57604051600160e51b62461bcd0281526004018080602001828103825260218152602001806121756021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6000818152600260205260409020546001600160a01b031615610be657600090815260026020526040902080546001600160a01b0319169055565b8054611cdb90600163ffffffff611ce816565b9055565b80546001019055565b600082821115611d425760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b611d528282611d74565b611d5c82826118a9565b60008181526006602052604081205561141481611e4e565b816001600160a01b0316611d8782610cb9565b6001600160a01b031614611dcf57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806123066025913960400191505060405180910390fd5b611dd881611c8d565b6001600160a01b0382166000908152600360205260409020611df990611cc8565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600754600090611e6590600163ffffffff611ce816565b60008381526008602052604081205460078054939450909284908110611e8757fe5b906000526020600020015490508060078381548110611ea257fe5b60009182526020808320909101929092558281526008909152604090208290556007805490611ed5906000198301611f68565b50505060009182525060086020526040812055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611f2b57805160ff1916838001178555611f58565b82800160010185558215611f58579182015b82811115611f58578251825591602001919060010190611f3d565b50611f64929150611fcc565b5090565b815481835581811115610a2657600083815260209020610a26918101908301611fcc565b50805460018160011615610100020316600290046000825580601f10611fb25750610be6565b601f016020900490600052602060002090810190610be691905b61084e91905b80821115611f645760008155600101611fd256fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e64734552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820032306241b3cccba21fdcf87e3b2bf569b6dece599dd576928df55e517c30de90029`
 13043  
 13044  // ServiceChainNFTFuncSigs maps the 4-byte function signature to its string representation.
 13045  // Deprecated: Use ServiceChainNFTMetaData.Sigs instead.
 13046  var ServiceChainNFTFuncSigs = ServiceChainNFTMetaData.Sigs
 13047  
 13048  // ServiceChainNFTBin is the compiled bytecode used for deploying new contracts.
 13049  // Deprecated: Use ServiceChainNFTMetaData.Bin instead.
 13050  var ServiceChainNFTBin = ServiceChainNFTMetaData.Bin
 13051  
 13052  // DeployServiceChainNFT deploys a new Klaytn contract, binding an instance of ServiceChainNFT to it.
 13053  func DeployServiceChainNFT(auth *bind.TransactOpts, backend bind.ContractBackend, _bridge common.Address) (common.Address, *types.Transaction, *ServiceChainNFT, error) {
 13054  	parsed, err := ServiceChainNFTMetaData.GetAbi()
 13055  	if err != nil {
 13056  		return common.Address{}, nil, nil, err
 13057  	}
 13058  	if parsed == nil {
 13059  		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
 13060  	}
 13061  
 13062  	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ServiceChainNFTBin), backend, _bridge)
 13063  	if err != nil {
 13064  		return common.Address{}, nil, nil, err
 13065  	}
 13066  	return address, tx, &ServiceChainNFT{ServiceChainNFTCaller: ServiceChainNFTCaller{contract: contract}, ServiceChainNFTTransactor: ServiceChainNFTTransactor{contract: contract}, ServiceChainNFTFilterer: ServiceChainNFTFilterer{contract: contract}}, nil
 13067  }
 13068  
 13069  // ServiceChainNFT is an auto generated Go binding around a Klaytn contract.
 13070  type ServiceChainNFT struct {
 13071  	ServiceChainNFTCaller     // Read-only binding to the contract
 13072  	ServiceChainNFTTransactor // Write-only binding to the contract
 13073  	ServiceChainNFTFilterer   // Log filterer for contract events
 13074  }
 13075  
 13076  // ServiceChainNFTCaller is an auto generated read-only Go binding around a Klaytn contract.
 13077  type ServiceChainNFTCaller struct {
 13078  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 13079  }
 13080  
 13081  // ServiceChainNFTTransactor is an auto generated write-only Go binding around a Klaytn contract.
 13082  type ServiceChainNFTTransactor struct {
 13083  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 13084  }
 13085  
 13086  // ServiceChainNFTFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 13087  type ServiceChainNFTFilterer struct {
 13088  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 13089  }
 13090  
 13091  // ServiceChainNFTSession is an auto generated Go binding around a Klaytn contract,
 13092  // with pre-set call and transact options.
 13093  type ServiceChainNFTSession struct {
 13094  	Contract     *ServiceChainNFT  // Generic contract binding to set the session for
 13095  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 13096  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 13097  }
 13098  
 13099  // ServiceChainNFTCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 13100  // with pre-set call options.
 13101  type ServiceChainNFTCallerSession struct {
 13102  	Contract *ServiceChainNFTCaller // Generic contract caller binding to set the session for
 13103  	CallOpts bind.CallOpts          // Call options to use throughout this session
 13104  }
 13105  
 13106  // ServiceChainNFTTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 13107  // with pre-set transact options.
 13108  type ServiceChainNFTTransactorSession struct {
 13109  	Contract     *ServiceChainNFTTransactor // Generic contract transactor binding to set the session for
 13110  	TransactOpts bind.TransactOpts          // Transaction auth options to use throughout this session
 13111  }
 13112  
 13113  // ServiceChainNFTRaw is an auto generated low-level Go binding around a Klaytn contract.
 13114  type ServiceChainNFTRaw struct {
 13115  	Contract *ServiceChainNFT // Generic contract binding to access the raw methods on
 13116  }
 13117  
 13118  // ServiceChainNFTCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 13119  type ServiceChainNFTCallerRaw struct {
 13120  	Contract *ServiceChainNFTCaller // Generic read-only contract binding to access the raw methods on
 13121  }
 13122  
 13123  // ServiceChainNFTTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 13124  type ServiceChainNFTTransactorRaw struct {
 13125  	Contract *ServiceChainNFTTransactor // Generic write-only contract binding to access the raw methods on
 13126  }
 13127  
 13128  // NewServiceChainNFT creates a new instance of ServiceChainNFT, bound to a specific deployed contract.
 13129  func NewServiceChainNFT(address common.Address, backend bind.ContractBackend) (*ServiceChainNFT, error) {
 13130  	contract, err := bindServiceChainNFT(address, backend, backend, backend)
 13131  	if err != nil {
 13132  		return nil, err
 13133  	}
 13134  	return &ServiceChainNFT{ServiceChainNFTCaller: ServiceChainNFTCaller{contract: contract}, ServiceChainNFTTransactor: ServiceChainNFTTransactor{contract: contract}, ServiceChainNFTFilterer: ServiceChainNFTFilterer{contract: contract}}, nil
 13135  }
 13136  
 13137  // NewServiceChainNFTCaller creates a new read-only instance of ServiceChainNFT, bound to a specific deployed contract.
 13138  func NewServiceChainNFTCaller(address common.Address, caller bind.ContractCaller) (*ServiceChainNFTCaller, error) {
 13139  	contract, err := bindServiceChainNFT(address, caller, nil, nil)
 13140  	if err != nil {
 13141  		return nil, err
 13142  	}
 13143  	return &ServiceChainNFTCaller{contract: contract}, nil
 13144  }
 13145  
 13146  // NewServiceChainNFTTransactor creates a new write-only instance of ServiceChainNFT, bound to a specific deployed contract.
 13147  func NewServiceChainNFTTransactor(address common.Address, transactor bind.ContractTransactor) (*ServiceChainNFTTransactor, error) {
 13148  	contract, err := bindServiceChainNFT(address, nil, transactor, nil)
 13149  	if err != nil {
 13150  		return nil, err
 13151  	}
 13152  	return &ServiceChainNFTTransactor{contract: contract}, nil
 13153  }
 13154  
 13155  // NewServiceChainNFTFilterer creates a new log filterer instance of ServiceChainNFT, bound to a specific deployed contract.
 13156  func NewServiceChainNFTFilterer(address common.Address, filterer bind.ContractFilterer) (*ServiceChainNFTFilterer, error) {
 13157  	contract, err := bindServiceChainNFT(address, nil, nil, filterer)
 13158  	if err != nil {
 13159  		return nil, err
 13160  	}
 13161  	return &ServiceChainNFTFilterer{contract: contract}, nil
 13162  }
 13163  
 13164  // bindServiceChainNFT binds a generic wrapper to an already deployed contract.
 13165  func bindServiceChainNFT(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 13166  	parsed, err := ServiceChainNFTMetaData.GetAbi()
 13167  	if err != nil {
 13168  		return nil, err
 13169  	}
 13170  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
 13171  }
 13172  
 13173  // Call invokes the (constant) contract method with params as input values and
 13174  // sets the output to result. The result type might be a single field for simple
 13175  // returns, a slice of interfaces for anonymous returns and a struct for named
 13176  // returns.
 13177  func (_ServiceChainNFT *ServiceChainNFTRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
 13178  	return _ServiceChainNFT.Contract.ServiceChainNFTCaller.contract.Call(opts, result, method, params...)
 13179  }
 13180  
 13181  // Transfer initiates a plain transaction to move funds to the contract, calling
 13182  // its default method if one is available.
 13183  func (_ServiceChainNFT *ServiceChainNFTRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 13184  	return _ServiceChainNFT.Contract.ServiceChainNFTTransactor.contract.Transfer(opts)
 13185  }
 13186  
 13187  // Transact invokes the (paid) contract method with params as input values.
 13188  func (_ServiceChainNFT *ServiceChainNFTRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 13189  	return _ServiceChainNFT.Contract.ServiceChainNFTTransactor.contract.Transact(opts, method, params...)
 13190  }
 13191  
 13192  // Call invokes the (constant) contract method with params as input values and
 13193  // sets the output to result. The result type might be a single field for simple
 13194  // returns, a slice of interfaces for anonymous returns and a struct for named
 13195  // returns.
 13196  func (_ServiceChainNFT *ServiceChainNFTCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
 13197  	return _ServiceChainNFT.Contract.contract.Call(opts, result, method, params...)
 13198  }
 13199  
 13200  // Transfer initiates a plain transaction to move funds to the contract, calling
 13201  // its default method if one is available.
 13202  func (_ServiceChainNFT *ServiceChainNFTTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 13203  	return _ServiceChainNFT.Contract.contract.Transfer(opts)
 13204  }
 13205  
 13206  // Transact invokes the (paid) contract method with params as input values.
 13207  func (_ServiceChainNFT *ServiceChainNFTTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 13208  	return _ServiceChainNFT.Contract.contract.Transact(opts, method, params...)
 13209  }
 13210  
 13211  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 13212  //
 13213  // Solidity: function balanceOf(address owner) view returns(uint256)
 13214  func (_ServiceChainNFT *ServiceChainNFTCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
 13215  	var out []interface{}
 13216  	err := _ServiceChainNFT.contract.Call(opts, &out, "balanceOf", owner)
 13217  
 13218  	if err != nil {
 13219  		return *new(*big.Int), err
 13220  	}
 13221  
 13222  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
 13223  
 13224  	return out0, err
 13225  
 13226  }
 13227  
 13228  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 13229  //
 13230  // Solidity: function balanceOf(address owner) view returns(uint256)
 13231  func (_ServiceChainNFT *ServiceChainNFTSession) BalanceOf(owner common.Address) (*big.Int, error) {
 13232  	return _ServiceChainNFT.Contract.BalanceOf(&_ServiceChainNFT.CallOpts, owner)
 13233  }
 13234  
 13235  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 13236  //
 13237  // Solidity: function balanceOf(address owner) view returns(uint256)
 13238  func (_ServiceChainNFT *ServiceChainNFTCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
 13239  	return _ServiceChainNFT.Contract.BalanceOf(&_ServiceChainNFT.CallOpts, owner)
 13240  }
 13241  
 13242  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
 13243  //
 13244  // Solidity: function bridge() view returns(address)
 13245  func (_ServiceChainNFT *ServiceChainNFTCaller) Bridge(opts *bind.CallOpts) (common.Address, error) {
 13246  	var out []interface{}
 13247  	err := _ServiceChainNFT.contract.Call(opts, &out, "bridge")
 13248  
 13249  	if err != nil {
 13250  		return *new(common.Address), err
 13251  	}
 13252  
 13253  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
 13254  
 13255  	return out0, err
 13256  
 13257  }
 13258  
 13259  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
 13260  //
 13261  // Solidity: function bridge() view returns(address)
 13262  func (_ServiceChainNFT *ServiceChainNFTSession) Bridge() (common.Address, error) {
 13263  	return _ServiceChainNFT.Contract.Bridge(&_ServiceChainNFT.CallOpts)
 13264  }
 13265  
 13266  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
 13267  //
 13268  // Solidity: function bridge() view returns(address)
 13269  func (_ServiceChainNFT *ServiceChainNFTCallerSession) Bridge() (common.Address, error) {
 13270  	return _ServiceChainNFT.Contract.Bridge(&_ServiceChainNFT.CallOpts)
 13271  }
 13272  
 13273  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 13274  //
 13275  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 13276  func (_ServiceChainNFT *ServiceChainNFTCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 13277  	var out []interface{}
 13278  	err := _ServiceChainNFT.contract.Call(opts, &out, "getApproved", tokenId)
 13279  
 13280  	if err != nil {
 13281  		return *new(common.Address), err
 13282  	}
 13283  
 13284  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
 13285  
 13286  	return out0, err
 13287  
 13288  }
 13289  
 13290  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 13291  //
 13292  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 13293  func (_ServiceChainNFT *ServiceChainNFTSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 13294  	return _ServiceChainNFT.Contract.GetApproved(&_ServiceChainNFT.CallOpts, tokenId)
 13295  }
 13296  
 13297  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 13298  //
 13299  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 13300  func (_ServiceChainNFT *ServiceChainNFTCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 13301  	return _ServiceChainNFT.Contract.GetApproved(&_ServiceChainNFT.CallOpts, tokenId)
 13302  }
 13303  
 13304  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 13305  //
 13306  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 13307  func (_ServiceChainNFT *ServiceChainNFTCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
 13308  	var out []interface{}
 13309  	err := _ServiceChainNFT.contract.Call(opts, &out, "isApprovedForAll", owner, operator)
 13310  
 13311  	if err != nil {
 13312  		return *new(bool), err
 13313  	}
 13314  
 13315  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
 13316  
 13317  	return out0, err
 13318  
 13319  }
 13320  
 13321  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 13322  //
 13323  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 13324  func (_ServiceChainNFT *ServiceChainNFTSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 13325  	return _ServiceChainNFT.Contract.IsApprovedForAll(&_ServiceChainNFT.CallOpts, owner, operator)
 13326  }
 13327  
 13328  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 13329  //
 13330  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 13331  func (_ServiceChainNFT *ServiceChainNFTCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 13332  	return _ServiceChainNFT.Contract.IsApprovedForAll(&_ServiceChainNFT.CallOpts, owner, operator)
 13333  }
 13334  
 13335  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 13336  //
 13337  // Solidity: function isMinter(address account) view returns(bool)
 13338  func (_ServiceChainNFT *ServiceChainNFTCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
 13339  	var out []interface{}
 13340  	err := _ServiceChainNFT.contract.Call(opts, &out, "isMinter", account)
 13341  
 13342  	if err != nil {
 13343  		return *new(bool), err
 13344  	}
 13345  
 13346  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
 13347  
 13348  	return out0, err
 13349  
 13350  }
 13351  
 13352  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 13353  //
 13354  // Solidity: function isMinter(address account) view returns(bool)
 13355  func (_ServiceChainNFT *ServiceChainNFTSession) IsMinter(account common.Address) (bool, error) {
 13356  	return _ServiceChainNFT.Contract.IsMinter(&_ServiceChainNFT.CallOpts, account)
 13357  }
 13358  
 13359  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 13360  //
 13361  // Solidity: function isMinter(address account) view returns(bool)
 13362  func (_ServiceChainNFT *ServiceChainNFTCallerSession) IsMinter(account common.Address) (bool, error) {
 13363  	return _ServiceChainNFT.Contract.IsMinter(&_ServiceChainNFT.CallOpts, account)
 13364  }
 13365  
 13366  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 13367  //
 13368  // Solidity: function isOwner() view returns(bool)
 13369  func (_ServiceChainNFT *ServiceChainNFTCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
 13370  	var out []interface{}
 13371  	err := _ServiceChainNFT.contract.Call(opts, &out, "isOwner")
 13372  
 13373  	if err != nil {
 13374  		return *new(bool), err
 13375  	}
 13376  
 13377  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
 13378  
 13379  	return out0, err
 13380  
 13381  }
 13382  
 13383  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 13384  //
 13385  // Solidity: function isOwner() view returns(bool)
 13386  func (_ServiceChainNFT *ServiceChainNFTSession) IsOwner() (bool, error) {
 13387  	return _ServiceChainNFT.Contract.IsOwner(&_ServiceChainNFT.CallOpts)
 13388  }
 13389  
 13390  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 13391  //
 13392  // Solidity: function isOwner() view returns(bool)
 13393  func (_ServiceChainNFT *ServiceChainNFTCallerSession) IsOwner() (bool, error) {
 13394  	return _ServiceChainNFT.Contract.IsOwner(&_ServiceChainNFT.CallOpts)
 13395  }
 13396  
 13397  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 13398  //
 13399  // Solidity: function name() view returns(string)
 13400  func (_ServiceChainNFT *ServiceChainNFTCaller) Name(opts *bind.CallOpts) (string, error) {
 13401  	var out []interface{}
 13402  	err := _ServiceChainNFT.contract.Call(opts, &out, "name")
 13403  
 13404  	if err != nil {
 13405  		return *new(string), err
 13406  	}
 13407  
 13408  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
 13409  
 13410  	return out0, err
 13411  
 13412  }
 13413  
 13414  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 13415  //
 13416  // Solidity: function name() view returns(string)
 13417  func (_ServiceChainNFT *ServiceChainNFTSession) Name() (string, error) {
 13418  	return _ServiceChainNFT.Contract.Name(&_ServiceChainNFT.CallOpts)
 13419  }
 13420  
 13421  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 13422  //
 13423  // Solidity: function name() view returns(string)
 13424  func (_ServiceChainNFT *ServiceChainNFTCallerSession) Name() (string, error) {
 13425  	return _ServiceChainNFT.Contract.Name(&_ServiceChainNFT.CallOpts)
 13426  }
 13427  
 13428  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 13429  //
 13430  // Solidity: function owner() view returns(address)
 13431  func (_ServiceChainNFT *ServiceChainNFTCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
 13432  	var out []interface{}
 13433  	err := _ServiceChainNFT.contract.Call(opts, &out, "owner")
 13434  
 13435  	if err != nil {
 13436  		return *new(common.Address), err
 13437  	}
 13438  
 13439  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
 13440  
 13441  	return out0, err
 13442  
 13443  }
 13444  
 13445  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 13446  //
 13447  // Solidity: function owner() view returns(address)
 13448  func (_ServiceChainNFT *ServiceChainNFTSession) Owner() (common.Address, error) {
 13449  	return _ServiceChainNFT.Contract.Owner(&_ServiceChainNFT.CallOpts)
 13450  }
 13451  
 13452  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 13453  //
 13454  // Solidity: function owner() view returns(address)
 13455  func (_ServiceChainNFT *ServiceChainNFTCallerSession) Owner() (common.Address, error) {
 13456  	return _ServiceChainNFT.Contract.Owner(&_ServiceChainNFT.CallOpts)
 13457  }
 13458  
 13459  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 13460  //
 13461  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 13462  func (_ServiceChainNFT *ServiceChainNFTCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 13463  	var out []interface{}
 13464  	err := _ServiceChainNFT.contract.Call(opts, &out, "ownerOf", tokenId)
 13465  
 13466  	if err != nil {
 13467  		return *new(common.Address), err
 13468  	}
 13469  
 13470  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
 13471  
 13472  	return out0, err
 13473  
 13474  }
 13475  
 13476  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 13477  //
 13478  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 13479  func (_ServiceChainNFT *ServiceChainNFTSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 13480  	return _ServiceChainNFT.Contract.OwnerOf(&_ServiceChainNFT.CallOpts, tokenId)
 13481  }
 13482  
 13483  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 13484  //
 13485  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 13486  func (_ServiceChainNFT *ServiceChainNFTCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 13487  	return _ServiceChainNFT.Contract.OwnerOf(&_ServiceChainNFT.CallOpts, tokenId)
 13488  }
 13489  
 13490  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 13491  //
 13492  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 13493  func (_ServiceChainNFT *ServiceChainNFTCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
 13494  	var out []interface{}
 13495  	err := _ServiceChainNFT.contract.Call(opts, &out, "supportsInterface", interfaceId)
 13496  
 13497  	if err != nil {
 13498  		return *new(bool), err
 13499  	}
 13500  
 13501  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
 13502  
 13503  	return out0, err
 13504  
 13505  }
 13506  
 13507  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 13508  //
 13509  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 13510  func (_ServiceChainNFT *ServiceChainNFTSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 13511  	return _ServiceChainNFT.Contract.SupportsInterface(&_ServiceChainNFT.CallOpts, interfaceId)
 13512  }
 13513  
 13514  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 13515  //
 13516  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 13517  func (_ServiceChainNFT *ServiceChainNFTCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 13518  	return _ServiceChainNFT.Contract.SupportsInterface(&_ServiceChainNFT.CallOpts, interfaceId)
 13519  }
 13520  
 13521  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 13522  //
 13523  // Solidity: function symbol() view returns(string)
 13524  func (_ServiceChainNFT *ServiceChainNFTCaller) Symbol(opts *bind.CallOpts) (string, error) {
 13525  	var out []interface{}
 13526  	err := _ServiceChainNFT.contract.Call(opts, &out, "symbol")
 13527  
 13528  	if err != nil {
 13529  		return *new(string), err
 13530  	}
 13531  
 13532  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
 13533  
 13534  	return out0, err
 13535  
 13536  }
 13537  
 13538  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 13539  //
 13540  // Solidity: function symbol() view returns(string)
 13541  func (_ServiceChainNFT *ServiceChainNFTSession) Symbol() (string, error) {
 13542  	return _ServiceChainNFT.Contract.Symbol(&_ServiceChainNFT.CallOpts)
 13543  }
 13544  
 13545  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 13546  //
 13547  // Solidity: function symbol() view returns(string)
 13548  func (_ServiceChainNFT *ServiceChainNFTCallerSession) Symbol() (string, error) {
 13549  	return _ServiceChainNFT.Contract.Symbol(&_ServiceChainNFT.CallOpts)
 13550  }
 13551  
 13552  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
 13553  //
 13554  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
 13555  func (_ServiceChainNFT *ServiceChainNFTCaller) TokenByIndex(opts *bind.CallOpts, index *big.Int) (*big.Int, error) {
 13556  	var out []interface{}
 13557  	err := _ServiceChainNFT.contract.Call(opts, &out, "tokenByIndex", index)
 13558  
 13559  	if err != nil {
 13560  		return *new(*big.Int), err
 13561  	}
 13562  
 13563  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
 13564  
 13565  	return out0, err
 13566  
 13567  }
 13568  
 13569  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
 13570  //
 13571  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
 13572  func (_ServiceChainNFT *ServiceChainNFTSession) TokenByIndex(index *big.Int) (*big.Int, error) {
 13573  	return _ServiceChainNFT.Contract.TokenByIndex(&_ServiceChainNFT.CallOpts, index)
 13574  }
 13575  
 13576  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
 13577  //
 13578  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
 13579  func (_ServiceChainNFT *ServiceChainNFTCallerSession) TokenByIndex(index *big.Int) (*big.Int, error) {
 13580  	return _ServiceChainNFT.Contract.TokenByIndex(&_ServiceChainNFT.CallOpts, index)
 13581  }
 13582  
 13583  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
 13584  //
 13585  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
 13586  func (_ServiceChainNFT *ServiceChainNFTCaller) TokenOfOwnerByIndex(opts *bind.CallOpts, owner common.Address, index *big.Int) (*big.Int, error) {
 13587  	var out []interface{}
 13588  	err := _ServiceChainNFT.contract.Call(opts, &out, "tokenOfOwnerByIndex", owner, index)
 13589  
 13590  	if err != nil {
 13591  		return *new(*big.Int), err
 13592  	}
 13593  
 13594  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
 13595  
 13596  	return out0, err
 13597  
 13598  }
 13599  
 13600  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
 13601  //
 13602  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
 13603  func (_ServiceChainNFT *ServiceChainNFTSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) {
 13604  	return _ServiceChainNFT.Contract.TokenOfOwnerByIndex(&_ServiceChainNFT.CallOpts, owner, index)
 13605  }
 13606  
 13607  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
 13608  //
 13609  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
 13610  func (_ServiceChainNFT *ServiceChainNFTCallerSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) {
 13611  	return _ServiceChainNFT.Contract.TokenOfOwnerByIndex(&_ServiceChainNFT.CallOpts, owner, index)
 13612  }
 13613  
 13614  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 13615  //
 13616  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 13617  func (_ServiceChainNFT *ServiceChainNFTCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) {
 13618  	var out []interface{}
 13619  	err := _ServiceChainNFT.contract.Call(opts, &out, "tokenURI", tokenId)
 13620  
 13621  	if err != nil {
 13622  		return *new(string), err
 13623  	}
 13624  
 13625  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
 13626  
 13627  	return out0, err
 13628  
 13629  }
 13630  
 13631  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 13632  //
 13633  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 13634  func (_ServiceChainNFT *ServiceChainNFTSession) TokenURI(tokenId *big.Int) (string, error) {
 13635  	return _ServiceChainNFT.Contract.TokenURI(&_ServiceChainNFT.CallOpts, tokenId)
 13636  }
 13637  
 13638  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 13639  //
 13640  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 13641  func (_ServiceChainNFT *ServiceChainNFTCallerSession) TokenURI(tokenId *big.Int) (string, error) {
 13642  	return _ServiceChainNFT.Contract.TokenURI(&_ServiceChainNFT.CallOpts, tokenId)
 13643  }
 13644  
 13645  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 13646  //
 13647  // Solidity: function totalSupply() view returns(uint256)
 13648  func (_ServiceChainNFT *ServiceChainNFTCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
 13649  	var out []interface{}
 13650  	err := _ServiceChainNFT.contract.Call(opts, &out, "totalSupply")
 13651  
 13652  	if err != nil {
 13653  		return *new(*big.Int), err
 13654  	}
 13655  
 13656  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
 13657  
 13658  	return out0, err
 13659  
 13660  }
 13661  
 13662  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 13663  //
 13664  // Solidity: function totalSupply() view returns(uint256)
 13665  func (_ServiceChainNFT *ServiceChainNFTSession) TotalSupply() (*big.Int, error) {
 13666  	return _ServiceChainNFT.Contract.TotalSupply(&_ServiceChainNFT.CallOpts)
 13667  }
 13668  
 13669  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 13670  //
 13671  // Solidity: function totalSupply() view returns(uint256)
 13672  func (_ServiceChainNFT *ServiceChainNFTCallerSession) TotalSupply() (*big.Int, error) {
 13673  	return _ServiceChainNFT.Contract.TotalSupply(&_ServiceChainNFT.CallOpts)
 13674  }
 13675  
 13676  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 13677  //
 13678  // Solidity: function addMinter(address account) returns()
 13679  func (_ServiceChainNFT *ServiceChainNFTTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
 13680  	return _ServiceChainNFT.contract.Transact(opts, "addMinter", account)
 13681  }
 13682  
 13683  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 13684  //
 13685  // Solidity: function addMinter(address account) returns()
 13686  func (_ServiceChainNFT *ServiceChainNFTSession) AddMinter(account common.Address) (*types.Transaction, error) {
 13687  	return _ServiceChainNFT.Contract.AddMinter(&_ServiceChainNFT.TransactOpts, account)
 13688  }
 13689  
 13690  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 13691  //
 13692  // Solidity: function addMinter(address account) returns()
 13693  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
 13694  	return _ServiceChainNFT.Contract.AddMinter(&_ServiceChainNFT.TransactOpts, account)
 13695  }
 13696  
 13697  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 13698  //
 13699  // Solidity: function approve(address to, uint256 tokenId) returns()
 13700  func (_ServiceChainNFT *ServiceChainNFTTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13701  	return _ServiceChainNFT.contract.Transact(opts, "approve", to, tokenId)
 13702  }
 13703  
 13704  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 13705  //
 13706  // Solidity: function approve(address to, uint256 tokenId) returns()
 13707  func (_ServiceChainNFT *ServiceChainNFTSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13708  	return _ServiceChainNFT.Contract.Approve(&_ServiceChainNFT.TransactOpts, to, tokenId)
 13709  }
 13710  
 13711  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 13712  //
 13713  // Solidity: function approve(address to, uint256 tokenId) returns()
 13714  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13715  	return _ServiceChainNFT.Contract.Approve(&_ServiceChainNFT.TransactOpts, to, tokenId)
 13716  }
 13717  
 13718  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 13719  //
 13720  // Solidity: function burn(uint256 tokenId) returns()
 13721  func (_ServiceChainNFT *ServiceChainNFTTransactor) Burn(opts *bind.TransactOpts, tokenId *big.Int) (*types.Transaction, error) {
 13722  	return _ServiceChainNFT.contract.Transact(opts, "burn", tokenId)
 13723  }
 13724  
 13725  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 13726  //
 13727  // Solidity: function burn(uint256 tokenId) returns()
 13728  func (_ServiceChainNFT *ServiceChainNFTSession) Burn(tokenId *big.Int) (*types.Transaction, error) {
 13729  	return _ServiceChainNFT.Contract.Burn(&_ServiceChainNFT.TransactOpts, tokenId)
 13730  }
 13731  
 13732  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 13733  //
 13734  // Solidity: function burn(uint256 tokenId) returns()
 13735  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) Burn(tokenId *big.Int) (*types.Transaction, error) {
 13736  	return _ServiceChainNFT.Contract.Burn(&_ServiceChainNFT.TransactOpts, tokenId)
 13737  }
 13738  
 13739  // MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f.
 13740  //
 13741  // Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool)
 13742  func (_ServiceChainNFT *ServiceChainNFTTransactor) MintWithTokenURI(opts *bind.TransactOpts, to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) {
 13743  	return _ServiceChainNFT.contract.Transact(opts, "mintWithTokenURI", to, tokenId, tokenURI)
 13744  }
 13745  
 13746  // MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f.
 13747  //
 13748  // Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool)
 13749  func (_ServiceChainNFT *ServiceChainNFTSession) MintWithTokenURI(to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) {
 13750  	return _ServiceChainNFT.Contract.MintWithTokenURI(&_ServiceChainNFT.TransactOpts, to, tokenId, tokenURI)
 13751  }
 13752  
 13753  // MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f.
 13754  //
 13755  // Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool)
 13756  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) MintWithTokenURI(to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) {
 13757  	return _ServiceChainNFT.Contract.MintWithTokenURI(&_ServiceChainNFT.TransactOpts, to, tokenId, tokenURI)
 13758  }
 13759  
 13760  // RegisterBulk is a paid mutator transaction binding the contract method 0x7a9adac6.
 13761  //
 13762  // Solidity: function registerBulk(address _user, uint256 _startID, uint256 _endID) returns()
 13763  func (_ServiceChainNFT *ServiceChainNFTTransactor) RegisterBulk(opts *bind.TransactOpts, _user common.Address, _startID *big.Int, _endID *big.Int) (*types.Transaction, error) {
 13764  	return _ServiceChainNFT.contract.Transact(opts, "registerBulk", _user, _startID, _endID)
 13765  }
 13766  
 13767  // RegisterBulk is a paid mutator transaction binding the contract method 0x7a9adac6.
 13768  //
 13769  // Solidity: function registerBulk(address _user, uint256 _startID, uint256 _endID) returns()
 13770  func (_ServiceChainNFT *ServiceChainNFTSession) RegisterBulk(_user common.Address, _startID *big.Int, _endID *big.Int) (*types.Transaction, error) {
 13771  	return _ServiceChainNFT.Contract.RegisterBulk(&_ServiceChainNFT.TransactOpts, _user, _startID, _endID)
 13772  }
 13773  
 13774  // RegisterBulk is a paid mutator transaction binding the contract method 0x7a9adac6.
 13775  //
 13776  // Solidity: function registerBulk(address _user, uint256 _startID, uint256 _endID) returns()
 13777  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) RegisterBulk(_user common.Address, _startID *big.Int, _endID *big.Int) (*types.Transaction, error) {
 13778  	return _ServiceChainNFT.Contract.RegisterBulk(&_ServiceChainNFT.TransactOpts, _user, _startID, _endID)
 13779  }
 13780  
 13781  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 13782  //
 13783  // Solidity: function renounceMinter() returns()
 13784  func (_ServiceChainNFT *ServiceChainNFTTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
 13785  	return _ServiceChainNFT.contract.Transact(opts, "renounceMinter")
 13786  }
 13787  
 13788  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 13789  //
 13790  // Solidity: function renounceMinter() returns()
 13791  func (_ServiceChainNFT *ServiceChainNFTSession) RenounceMinter() (*types.Transaction, error) {
 13792  	return _ServiceChainNFT.Contract.RenounceMinter(&_ServiceChainNFT.TransactOpts)
 13793  }
 13794  
 13795  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 13796  //
 13797  // Solidity: function renounceMinter() returns()
 13798  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) RenounceMinter() (*types.Transaction, error) {
 13799  	return _ServiceChainNFT.Contract.RenounceMinter(&_ServiceChainNFT.TransactOpts)
 13800  }
 13801  
 13802  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 13803  //
 13804  // Solidity: function renounceOwnership() returns()
 13805  func (_ServiceChainNFT *ServiceChainNFTTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
 13806  	return _ServiceChainNFT.contract.Transact(opts, "renounceOwnership")
 13807  }
 13808  
 13809  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 13810  //
 13811  // Solidity: function renounceOwnership() returns()
 13812  func (_ServiceChainNFT *ServiceChainNFTSession) RenounceOwnership() (*types.Transaction, error) {
 13813  	return _ServiceChainNFT.Contract.RenounceOwnership(&_ServiceChainNFT.TransactOpts)
 13814  }
 13815  
 13816  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 13817  //
 13818  // Solidity: function renounceOwnership() returns()
 13819  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) RenounceOwnership() (*types.Transaction, error) {
 13820  	return _ServiceChainNFT.Contract.RenounceOwnership(&_ServiceChainNFT.TransactOpts)
 13821  }
 13822  
 13823  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3f4c4e3d.
 13824  //
 13825  // Solidity: function requestValueTransfer(uint256 _uid, address _to, bytes _extraData) returns()
 13826  func (_ServiceChainNFT *ServiceChainNFTTransactor) RequestValueTransfer(opts *bind.TransactOpts, _uid *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
 13827  	return _ServiceChainNFT.contract.Transact(opts, "requestValueTransfer", _uid, _to, _extraData)
 13828  }
 13829  
 13830  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3f4c4e3d.
 13831  //
 13832  // Solidity: function requestValueTransfer(uint256 _uid, address _to, bytes _extraData) returns()
 13833  func (_ServiceChainNFT *ServiceChainNFTSession) RequestValueTransfer(_uid *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
 13834  	return _ServiceChainNFT.Contract.RequestValueTransfer(&_ServiceChainNFT.TransactOpts, _uid, _to, _extraData)
 13835  }
 13836  
 13837  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3f4c4e3d.
 13838  //
 13839  // Solidity: function requestValueTransfer(uint256 _uid, address _to, bytes _extraData) returns()
 13840  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) RequestValueTransfer(_uid *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
 13841  	return _ServiceChainNFT.Contract.RequestValueTransfer(&_ServiceChainNFT.TransactOpts, _uid, _to, _extraData)
 13842  }
 13843  
 13844  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 13845  //
 13846  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 13847  func (_ServiceChainNFT *ServiceChainNFTTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13848  	return _ServiceChainNFT.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
 13849  }
 13850  
 13851  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 13852  //
 13853  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 13854  func (_ServiceChainNFT *ServiceChainNFTSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13855  	return _ServiceChainNFT.Contract.SafeTransferFrom(&_ServiceChainNFT.TransactOpts, from, to, tokenId)
 13856  }
 13857  
 13858  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 13859  //
 13860  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 13861  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13862  	return _ServiceChainNFT.Contract.SafeTransferFrom(&_ServiceChainNFT.TransactOpts, from, to, tokenId)
 13863  }
 13864  
 13865  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 13866  //
 13867  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 13868  func (_ServiceChainNFT *ServiceChainNFTTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 13869  	return _ServiceChainNFT.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
 13870  }
 13871  
 13872  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 13873  //
 13874  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 13875  func (_ServiceChainNFT *ServiceChainNFTSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 13876  	return _ServiceChainNFT.Contract.SafeTransferFrom0(&_ServiceChainNFT.TransactOpts, from, to, tokenId, _data)
 13877  }
 13878  
 13879  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 13880  //
 13881  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 13882  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 13883  	return _ServiceChainNFT.Contract.SafeTransferFrom0(&_ServiceChainNFT.TransactOpts, from, to, tokenId, _data)
 13884  }
 13885  
 13886  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 13887  //
 13888  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 13889  func (_ServiceChainNFT *ServiceChainNFTTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
 13890  	return _ServiceChainNFT.contract.Transact(opts, "setApprovalForAll", to, approved)
 13891  }
 13892  
 13893  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 13894  //
 13895  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 13896  func (_ServiceChainNFT *ServiceChainNFTSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
 13897  	return _ServiceChainNFT.Contract.SetApprovalForAll(&_ServiceChainNFT.TransactOpts, to, approved)
 13898  }
 13899  
 13900  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 13901  //
 13902  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 13903  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
 13904  	return _ServiceChainNFT.Contract.SetApprovalForAll(&_ServiceChainNFT.TransactOpts, to, approved)
 13905  }
 13906  
 13907  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
 13908  //
 13909  // Solidity: function setBridge(address _bridge) returns()
 13910  func (_ServiceChainNFT *ServiceChainNFTTransactor) SetBridge(opts *bind.TransactOpts, _bridge common.Address) (*types.Transaction, error) {
 13911  	return _ServiceChainNFT.contract.Transact(opts, "setBridge", _bridge)
 13912  }
 13913  
 13914  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
 13915  //
 13916  // Solidity: function setBridge(address _bridge) returns()
 13917  func (_ServiceChainNFT *ServiceChainNFTSession) SetBridge(_bridge common.Address) (*types.Transaction, error) {
 13918  	return _ServiceChainNFT.Contract.SetBridge(&_ServiceChainNFT.TransactOpts, _bridge)
 13919  }
 13920  
 13921  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
 13922  //
 13923  // Solidity: function setBridge(address _bridge) returns()
 13924  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) SetBridge(_bridge common.Address) (*types.Transaction, error) {
 13925  	return _ServiceChainNFT.Contract.SetBridge(&_ServiceChainNFT.TransactOpts, _bridge)
 13926  }
 13927  
 13928  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 13929  //
 13930  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 13931  func (_ServiceChainNFT *ServiceChainNFTTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13932  	return _ServiceChainNFT.contract.Transact(opts, "transferFrom", from, to, tokenId)
 13933  }
 13934  
 13935  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 13936  //
 13937  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 13938  func (_ServiceChainNFT *ServiceChainNFTSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13939  	return _ServiceChainNFT.Contract.TransferFrom(&_ServiceChainNFT.TransactOpts, from, to, tokenId)
 13940  }
 13941  
 13942  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 13943  //
 13944  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 13945  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13946  	return _ServiceChainNFT.Contract.TransferFrom(&_ServiceChainNFT.TransactOpts, from, to, tokenId)
 13947  }
 13948  
 13949  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 13950  //
 13951  // Solidity: function transferOwnership(address newOwner) returns()
 13952  func (_ServiceChainNFT *ServiceChainNFTTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
 13953  	return _ServiceChainNFT.contract.Transact(opts, "transferOwnership", newOwner)
 13954  }
 13955  
 13956  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 13957  //
 13958  // Solidity: function transferOwnership(address newOwner) returns()
 13959  func (_ServiceChainNFT *ServiceChainNFTSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
 13960  	return _ServiceChainNFT.Contract.TransferOwnership(&_ServiceChainNFT.TransactOpts, newOwner)
 13961  }
 13962  
 13963  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 13964  //
 13965  // Solidity: function transferOwnership(address newOwner) returns()
 13966  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
 13967  	return _ServiceChainNFT.Contract.TransferOwnership(&_ServiceChainNFT.TransactOpts, newOwner)
 13968  }
 13969  
 13970  // ServiceChainNFTApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ServiceChainNFT contract.
 13971  type ServiceChainNFTApprovalIterator struct {
 13972  	Event *ServiceChainNFTApproval // Event containing the contract specifics and raw log
 13973  
 13974  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 13975  	event    string              // Event name to use for unpacking event data
 13976  
 13977  	logs chan types.Log      // Log channel receiving the found contract events
 13978  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 13979  	done bool                // Whether the subscription completed delivering logs
 13980  	fail error               // Occurred error to stop iteration
 13981  }
 13982  
 13983  // Next advances the iterator to the subsequent event, returning whether there
 13984  // are any more events found. In case of a retrieval or parsing error, false is
 13985  // returned and Error() can be queried for the exact failure.
 13986  func (it *ServiceChainNFTApprovalIterator) Next() bool {
 13987  	// If the iterator failed, stop iterating
 13988  	if it.fail != nil {
 13989  		return false
 13990  	}
 13991  	// If the iterator completed, deliver directly whatever's available
 13992  	if it.done {
 13993  		select {
 13994  		case log := <-it.logs:
 13995  			it.Event = new(ServiceChainNFTApproval)
 13996  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13997  				it.fail = err
 13998  				return false
 13999  			}
 14000  			it.Event.Raw = log
 14001  			return true
 14002  
 14003  		default:
 14004  			return false
 14005  		}
 14006  	}
 14007  	// Iterator still in progress, wait for either a data or an error event
 14008  	select {
 14009  	case log := <-it.logs:
 14010  		it.Event = new(ServiceChainNFTApproval)
 14011  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14012  			it.fail = err
 14013  			return false
 14014  		}
 14015  		it.Event.Raw = log
 14016  		return true
 14017  
 14018  	case err := <-it.sub.Err():
 14019  		it.done = true
 14020  		it.fail = err
 14021  		return it.Next()
 14022  	}
 14023  }
 14024  
 14025  // Error returns any retrieval or parsing error occurred during filtering.
 14026  func (it *ServiceChainNFTApprovalIterator) Error() error {
 14027  	return it.fail
 14028  }
 14029  
 14030  // Close terminates the iteration process, releasing any pending underlying
 14031  // resources.
 14032  func (it *ServiceChainNFTApprovalIterator) Close() error {
 14033  	it.sub.Unsubscribe()
 14034  	return nil
 14035  }
 14036  
 14037  // ServiceChainNFTApproval represents a Approval event raised by the ServiceChainNFT contract.
 14038  type ServiceChainNFTApproval struct {
 14039  	Owner    common.Address
 14040  	Approved common.Address
 14041  	TokenId  *big.Int
 14042  	Raw      types.Log // Blockchain specific contextual infos
 14043  }
 14044  
 14045  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 14046  //
 14047  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 14048  func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ServiceChainNFTApprovalIterator, error) {
 14049  
 14050  	var ownerRule []interface{}
 14051  	for _, ownerItem := range owner {
 14052  		ownerRule = append(ownerRule, ownerItem)
 14053  	}
 14054  	var approvedRule []interface{}
 14055  	for _, approvedItem := range approved {
 14056  		approvedRule = append(approvedRule, approvedItem)
 14057  	}
 14058  	var tokenIdRule []interface{}
 14059  	for _, tokenIdItem := range tokenId {
 14060  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 14061  	}
 14062  
 14063  	logs, sub, err := _ServiceChainNFT.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 14064  	if err != nil {
 14065  		return nil, err
 14066  	}
 14067  	return &ServiceChainNFTApprovalIterator{contract: _ServiceChainNFT.contract, event: "Approval", logs: logs, sub: sub}, nil
 14068  }
 14069  
 14070  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 14071  //
 14072  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 14073  func (_ServiceChainNFT *ServiceChainNFTFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 14074  
 14075  	var ownerRule []interface{}
 14076  	for _, ownerItem := range owner {
 14077  		ownerRule = append(ownerRule, ownerItem)
 14078  	}
 14079  	var approvedRule []interface{}
 14080  	for _, approvedItem := range approved {
 14081  		approvedRule = append(approvedRule, approvedItem)
 14082  	}
 14083  	var tokenIdRule []interface{}
 14084  	for _, tokenIdItem := range tokenId {
 14085  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 14086  	}
 14087  
 14088  	logs, sub, err := _ServiceChainNFT.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 14089  	if err != nil {
 14090  		return nil, err
 14091  	}
 14092  	return event.NewSubscription(func(quit <-chan struct{}) error {
 14093  		defer sub.Unsubscribe()
 14094  		for {
 14095  			select {
 14096  			case log := <-logs:
 14097  				// New log arrived, parse the event and forward to the user
 14098  				event := new(ServiceChainNFTApproval)
 14099  				if err := _ServiceChainNFT.contract.UnpackLog(event, "Approval", log); err != nil {
 14100  					return err
 14101  				}
 14102  				event.Raw = log
 14103  
 14104  				select {
 14105  				case sink <- event:
 14106  				case err := <-sub.Err():
 14107  					return err
 14108  				case <-quit:
 14109  					return nil
 14110  				}
 14111  			case err := <-sub.Err():
 14112  				return err
 14113  			case <-quit:
 14114  				return nil
 14115  			}
 14116  		}
 14117  	}), nil
 14118  }
 14119  
 14120  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 14121  //
 14122  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 14123  func (_ServiceChainNFT *ServiceChainNFTFilterer) ParseApproval(log types.Log) (*ServiceChainNFTApproval, error) {
 14124  	event := new(ServiceChainNFTApproval)
 14125  	if err := _ServiceChainNFT.contract.UnpackLog(event, "Approval", log); err != nil {
 14126  		return nil, err
 14127  	}
 14128  	return event, nil
 14129  }
 14130  
 14131  // ServiceChainNFTApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ServiceChainNFT contract.
 14132  type ServiceChainNFTApprovalForAllIterator struct {
 14133  	Event *ServiceChainNFTApprovalForAll // Event containing the contract specifics and raw log
 14134  
 14135  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 14136  	event    string              // Event name to use for unpacking event data
 14137  
 14138  	logs chan types.Log      // Log channel receiving the found contract events
 14139  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 14140  	done bool                // Whether the subscription completed delivering logs
 14141  	fail error               // Occurred error to stop iteration
 14142  }
 14143  
 14144  // Next advances the iterator to the subsequent event, returning whether there
 14145  // are any more events found. In case of a retrieval or parsing error, false is
 14146  // returned and Error() can be queried for the exact failure.
 14147  func (it *ServiceChainNFTApprovalForAllIterator) Next() bool {
 14148  	// If the iterator failed, stop iterating
 14149  	if it.fail != nil {
 14150  		return false
 14151  	}
 14152  	// If the iterator completed, deliver directly whatever's available
 14153  	if it.done {
 14154  		select {
 14155  		case log := <-it.logs:
 14156  			it.Event = new(ServiceChainNFTApprovalForAll)
 14157  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14158  				it.fail = err
 14159  				return false
 14160  			}
 14161  			it.Event.Raw = log
 14162  			return true
 14163  
 14164  		default:
 14165  			return false
 14166  		}
 14167  	}
 14168  	// Iterator still in progress, wait for either a data or an error event
 14169  	select {
 14170  	case log := <-it.logs:
 14171  		it.Event = new(ServiceChainNFTApprovalForAll)
 14172  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14173  			it.fail = err
 14174  			return false
 14175  		}
 14176  		it.Event.Raw = log
 14177  		return true
 14178  
 14179  	case err := <-it.sub.Err():
 14180  		it.done = true
 14181  		it.fail = err
 14182  		return it.Next()
 14183  	}
 14184  }
 14185  
 14186  // Error returns any retrieval or parsing error occurred during filtering.
 14187  func (it *ServiceChainNFTApprovalForAllIterator) Error() error {
 14188  	return it.fail
 14189  }
 14190  
 14191  // Close terminates the iteration process, releasing any pending underlying
 14192  // resources.
 14193  func (it *ServiceChainNFTApprovalForAllIterator) Close() error {
 14194  	it.sub.Unsubscribe()
 14195  	return nil
 14196  }
 14197  
 14198  // ServiceChainNFTApprovalForAll represents a ApprovalForAll event raised by the ServiceChainNFT contract.
 14199  type ServiceChainNFTApprovalForAll struct {
 14200  	Owner    common.Address
 14201  	Operator common.Address
 14202  	Approved bool
 14203  	Raw      types.Log // Blockchain specific contextual infos
 14204  }
 14205  
 14206  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 14207  //
 14208  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 14209  func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ServiceChainNFTApprovalForAllIterator, error) {
 14210  
 14211  	var ownerRule []interface{}
 14212  	for _, ownerItem := range owner {
 14213  		ownerRule = append(ownerRule, ownerItem)
 14214  	}
 14215  	var operatorRule []interface{}
 14216  	for _, operatorItem := range operator {
 14217  		operatorRule = append(operatorRule, operatorItem)
 14218  	}
 14219  
 14220  	logs, sub, err := _ServiceChainNFT.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 14221  	if err != nil {
 14222  		return nil, err
 14223  	}
 14224  	return &ServiceChainNFTApprovalForAllIterator{contract: _ServiceChainNFT.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
 14225  }
 14226  
 14227  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 14228  //
 14229  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 14230  func (_ServiceChainNFT *ServiceChainNFTFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
 14231  
 14232  	var ownerRule []interface{}
 14233  	for _, ownerItem := range owner {
 14234  		ownerRule = append(ownerRule, ownerItem)
 14235  	}
 14236  	var operatorRule []interface{}
 14237  	for _, operatorItem := range operator {
 14238  		operatorRule = append(operatorRule, operatorItem)
 14239  	}
 14240  
 14241  	logs, sub, err := _ServiceChainNFT.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 14242  	if err != nil {
 14243  		return nil, err
 14244  	}
 14245  	return event.NewSubscription(func(quit <-chan struct{}) error {
 14246  		defer sub.Unsubscribe()
 14247  		for {
 14248  			select {
 14249  			case log := <-logs:
 14250  				// New log arrived, parse the event and forward to the user
 14251  				event := new(ServiceChainNFTApprovalForAll)
 14252  				if err := _ServiceChainNFT.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 14253  					return err
 14254  				}
 14255  				event.Raw = log
 14256  
 14257  				select {
 14258  				case sink <- event:
 14259  				case err := <-sub.Err():
 14260  					return err
 14261  				case <-quit:
 14262  					return nil
 14263  				}
 14264  			case err := <-sub.Err():
 14265  				return err
 14266  			case <-quit:
 14267  				return nil
 14268  			}
 14269  		}
 14270  	}), nil
 14271  }
 14272  
 14273  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 14274  //
 14275  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 14276  func (_ServiceChainNFT *ServiceChainNFTFilterer) ParseApprovalForAll(log types.Log) (*ServiceChainNFTApprovalForAll, error) {
 14277  	event := new(ServiceChainNFTApprovalForAll)
 14278  	if err := _ServiceChainNFT.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 14279  		return nil, err
 14280  	}
 14281  	return event, nil
 14282  }
 14283  
 14284  // ServiceChainNFTMinterAddedIterator is returned from FilterMinterAdded and is used to iterate over the raw logs and unpacked data for MinterAdded events raised by the ServiceChainNFT contract.
 14285  type ServiceChainNFTMinterAddedIterator struct {
 14286  	Event *ServiceChainNFTMinterAdded // Event containing the contract specifics and raw log
 14287  
 14288  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 14289  	event    string              // Event name to use for unpacking event data
 14290  
 14291  	logs chan types.Log      // Log channel receiving the found contract events
 14292  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 14293  	done bool                // Whether the subscription completed delivering logs
 14294  	fail error               // Occurred error to stop iteration
 14295  }
 14296  
 14297  // Next advances the iterator to the subsequent event, returning whether there
 14298  // are any more events found. In case of a retrieval or parsing error, false is
 14299  // returned and Error() can be queried for the exact failure.
 14300  func (it *ServiceChainNFTMinterAddedIterator) Next() bool {
 14301  	// If the iterator failed, stop iterating
 14302  	if it.fail != nil {
 14303  		return false
 14304  	}
 14305  	// If the iterator completed, deliver directly whatever's available
 14306  	if it.done {
 14307  		select {
 14308  		case log := <-it.logs:
 14309  			it.Event = new(ServiceChainNFTMinterAdded)
 14310  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14311  				it.fail = err
 14312  				return false
 14313  			}
 14314  			it.Event.Raw = log
 14315  			return true
 14316  
 14317  		default:
 14318  			return false
 14319  		}
 14320  	}
 14321  	// Iterator still in progress, wait for either a data or an error event
 14322  	select {
 14323  	case log := <-it.logs:
 14324  		it.Event = new(ServiceChainNFTMinterAdded)
 14325  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14326  			it.fail = err
 14327  			return false
 14328  		}
 14329  		it.Event.Raw = log
 14330  		return true
 14331  
 14332  	case err := <-it.sub.Err():
 14333  		it.done = true
 14334  		it.fail = err
 14335  		return it.Next()
 14336  	}
 14337  }
 14338  
 14339  // Error returns any retrieval or parsing error occurred during filtering.
 14340  func (it *ServiceChainNFTMinterAddedIterator) Error() error {
 14341  	return it.fail
 14342  }
 14343  
 14344  // Close terminates the iteration process, releasing any pending underlying
 14345  // resources.
 14346  func (it *ServiceChainNFTMinterAddedIterator) Close() error {
 14347  	it.sub.Unsubscribe()
 14348  	return nil
 14349  }
 14350  
 14351  // ServiceChainNFTMinterAdded represents a MinterAdded event raised by the ServiceChainNFT contract.
 14352  type ServiceChainNFTMinterAdded struct {
 14353  	Account common.Address
 14354  	Raw     types.Log // Blockchain specific contextual infos
 14355  }
 14356  
 14357  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 14358  //
 14359  // Solidity: event MinterAdded(address indexed account)
 14360  func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ServiceChainNFTMinterAddedIterator, error) {
 14361  
 14362  	var accountRule []interface{}
 14363  	for _, accountItem := range account {
 14364  		accountRule = append(accountRule, accountItem)
 14365  	}
 14366  
 14367  	logs, sub, err := _ServiceChainNFT.contract.FilterLogs(opts, "MinterAdded", accountRule)
 14368  	if err != nil {
 14369  		return nil, err
 14370  	}
 14371  	return &ServiceChainNFTMinterAddedIterator{contract: _ServiceChainNFT.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
 14372  }
 14373  
 14374  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 14375  //
 14376  // Solidity: event MinterAdded(address indexed account)
 14377  func (_ServiceChainNFT *ServiceChainNFTFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTMinterAdded, account []common.Address) (event.Subscription, error) {
 14378  
 14379  	var accountRule []interface{}
 14380  	for _, accountItem := range account {
 14381  		accountRule = append(accountRule, accountItem)
 14382  	}
 14383  
 14384  	logs, sub, err := _ServiceChainNFT.contract.WatchLogs(opts, "MinterAdded", accountRule)
 14385  	if err != nil {
 14386  		return nil, err
 14387  	}
 14388  	return event.NewSubscription(func(quit <-chan struct{}) error {
 14389  		defer sub.Unsubscribe()
 14390  		for {
 14391  			select {
 14392  			case log := <-logs:
 14393  				// New log arrived, parse the event and forward to the user
 14394  				event := new(ServiceChainNFTMinterAdded)
 14395  				if err := _ServiceChainNFT.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 14396  					return err
 14397  				}
 14398  				event.Raw = log
 14399  
 14400  				select {
 14401  				case sink <- event:
 14402  				case err := <-sub.Err():
 14403  					return err
 14404  				case <-quit:
 14405  					return nil
 14406  				}
 14407  			case err := <-sub.Err():
 14408  				return err
 14409  			case <-quit:
 14410  				return nil
 14411  			}
 14412  		}
 14413  	}), nil
 14414  }
 14415  
 14416  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 14417  //
 14418  // Solidity: event MinterAdded(address indexed account)
 14419  func (_ServiceChainNFT *ServiceChainNFTFilterer) ParseMinterAdded(log types.Log) (*ServiceChainNFTMinterAdded, error) {
 14420  	event := new(ServiceChainNFTMinterAdded)
 14421  	if err := _ServiceChainNFT.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 14422  		return nil, err
 14423  	}
 14424  	return event, nil
 14425  }
 14426  
 14427  // ServiceChainNFTMinterRemovedIterator is returned from FilterMinterRemoved and is used to iterate over the raw logs and unpacked data for MinterRemoved events raised by the ServiceChainNFT contract.
 14428  type ServiceChainNFTMinterRemovedIterator struct {
 14429  	Event *ServiceChainNFTMinterRemoved // Event containing the contract specifics and raw log
 14430  
 14431  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 14432  	event    string              // Event name to use for unpacking event data
 14433  
 14434  	logs chan types.Log      // Log channel receiving the found contract events
 14435  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 14436  	done bool                // Whether the subscription completed delivering logs
 14437  	fail error               // Occurred error to stop iteration
 14438  }
 14439  
 14440  // Next advances the iterator to the subsequent event, returning whether there
 14441  // are any more events found. In case of a retrieval or parsing error, false is
 14442  // returned and Error() can be queried for the exact failure.
 14443  func (it *ServiceChainNFTMinterRemovedIterator) Next() bool {
 14444  	// If the iterator failed, stop iterating
 14445  	if it.fail != nil {
 14446  		return false
 14447  	}
 14448  	// If the iterator completed, deliver directly whatever's available
 14449  	if it.done {
 14450  		select {
 14451  		case log := <-it.logs:
 14452  			it.Event = new(ServiceChainNFTMinterRemoved)
 14453  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14454  				it.fail = err
 14455  				return false
 14456  			}
 14457  			it.Event.Raw = log
 14458  			return true
 14459  
 14460  		default:
 14461  			return false
 14462  		}
 14463  	}
 14464  	// Iterator still in progress, wait for either a data or an error event
 14465  	select {
 14466  	case log := <-it.logs:
 14467  		it.Event = new(ServiceChainNFTMinterRemoved)
 14468  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14469  			it.fail = err
 14470  			return false
 14471  		}
 14472  		it.Event.Raw = log
 14473  		return true
 14474  
 14475  	case err := <-it.sub.Err():
 14476  		it.done = true
 14477  		it.fail = err
 14478  		return it.Next()
 14479  	}
 14480  }
 14481  
 14482  // Error returns any retrieval or parsing error occurred during filtering.
 14483  func (it *ServiceChainNFTMinterRemovedIterator) Error() error {
 14484  	return it.fail
 14485  }
 14486  
 14487  // Close terminates the iteration process, releasing any pending underlying
 14488  // resources.
 14489  func (it *ServiceChainNFTMinterRemovedIterator) Close() error {
 14490  	it.sub.Unsubscribe()
 14491  	return nil
 14492  }
 14493  
 14494  // ServiceChainNFTMinterRemoved represents a MinterRemoved event raised by the ServiceChainNFT contract.
 14495  type ServiceChainNFTMinterRemoved struct {
 14496  	Account common.Address
 14497  	Raw     types.Log // Blockchain specific contextual infos
 14498  }
 14499  
 14500  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 14501  //
 14502  // Solidity: event MinterRemoved(address indexed account)
 14503  func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ServiceChainNFTMinterRemovedIterator, error) {
 14504  
 14505  	var accountRule []interface{}
 14506  	for _, accountItem := range account {
 14507  		accountRule = append(accountRule, accountItem)
 14508  	}
 14509  
 14510  	logs, sub, err := _ServiceChainNFT.contract.FilterLogs(opts, "MinterRemoved", accountRule)
 14511  	if err != nil {
 14512  		return nil, err
 14513  	}
 14514  	return &ServiceChainNFTMinterRemovedIterator{contract: _ServiceChainNFT.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
 14515  }
 14516  
 14517  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 14518  //
 14519  // Solidity: event MinterRemoved(address indexed account)
 14520  func (_ServiceChainNFT *ServiceChainNFTFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTMinterRemoved, account []common.Address) (event.Subscription, error) {
 14521  
 14522  	var accountRule []interface{}
 14523  	for _, accountItem := range account {
 14524  		accountRule = append(accountRule, accountItem)
 14525  	}
 14526  
 14527  	logs, sub, err := _ServiceChainNFT.contract.WatchLogs(opts, "MinterRemoved", accountRule)
 14528  	if err != nil {
 14529  		return nil, err
 14530  	}
 14531  	return event.NewSubscription(func(quit <-chan struct{}) error {
 14532  		defer sub.Unsubscribe()
 14533  		for {
 14534  			select {
 14535  			case log := <-logs:
 14536  				// New log arrived, parse the event and forward to the user
 14537  				event := new(ServiceChainNFTMinterRemoved)
 14538  				if err := _ServiceChainNFT.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 14539  					return err
 14540  				}
 14541  				event.Raw = log
 14542  
 14543  				select {
 14544  				case sink <- event:
 14545  				case err := <-sub.Err():
 14546  					return err
 14547  				case <-quit:
 14548  					return nil
 14549  				}
 14550  			case err := <-sub.Err():
 14551  				return err
 14552  			case <-quit:
 14553  				return nil
 14554  			}
 14555  		}
 14556  	}), nil
 14557  }
 14558  
 14559  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 14560  //
 14561  // Solidity: event MinterRemoved(address indexed account)
 14562  func (_ServiceChainNFT *ServiceChainNFTFilterer) ParseMinterRemoved(log types.Log) (*ServiceChainNFTMinterRemoved, error) {
 14563  	event := new(ServiceChainNFTMinterRemoved)
 14564  	if err := _ServiceChainNFT.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 14565  		return nil, err
 14566  	}
 14567  	return event, nil
 14568  }
 14569  
 14570  // ServiceChainNFTOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ServiceChainNFT contract.
 14571  type ServiceChainNFTOwnershipTransferredIterator struct {
 14572  	Event *ServiceChainNFTOwnershipTransferred // Event containing the contract specifics and raw log
 14573  
 14574  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 14575  	event    string              // Event name to use for unpacking event data
 14576  
 14577  	logs chan types.Log      // Log channel receiving the found contract events
 14578  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 14579  	done bool                // Whether the subscription completed delivering logs
 14580  	fail error               // Occurred error to stop iteration
 14581  }
 14582  
 14583  // Next advances the iterator to the subsequent event, returning whether there
 14584  // are any more events found. In case of a retrieval or parsing error, false is
 14585  // returned and Error() can be queried for the exact failure.
 14586  func (it *ServiceChainNFTOwnershipTransferredIterator) Next() bool {
 14587  	// If the iterator failed, stop iterating
 14588  	if it.fail != nil {
 14589  		return false
 14590  	}
 14591  	// If the iterator completed, deliver directly whatever's available
 14592  	if it.done {
 14593  		select {
 14594  		case log := <-it.logs:
 14595  			it.Event = new(ServiceChainNFTOwnershipTransferred)
 14596  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14597  				it.fail = err
 14598  				return false
 14599  			}
 14600  			it.Event.Raw = log
 14601  			return true
 14602  
 14603  		default:
 14604  			return false
 14605  		}
 14606  	}
 14607  	// Iterator still in progress, wait for either a data or an error event
 14608  	select {
 14609  	case log := <-it.logs:
 14610  		it.Event = new(ServiceChainNFTOwnershipTransferred)
 14611  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14612  			it.fail = err
 14613  			return false
 14614  		}
 14615  		it.Event.Raw = log
 14616  		return true
 14617  
 14618  	case err := <-it.sub.Err():
 14619  		it.done = true
 14620  		it.fail = err
 14621  		return it.Next()
 14622  	}
 14623  }
 14624  
 14625  // Error returns any retrieval or parsing error occurred during filtering.
 14626  func (it *ServiceChainNFTOwnershipTransferredIterator) Error() error {
 14627  	return it.fail
 14628  }
 14629  
 14630  // Close terminates the iteration process, releasing any pending underlying
 14631  // resources.
 14632  func (it *ServiceChainNFTOwnershipTransferredIterator) Close() error {
 14633  	it.sub.Unsubscribe()
 14634  	return nil
 14635  }
 14636  
 14637  // ServiceChainNFTOwnershipTransferred represents a OwnershipTransferred event raised by the ServiceChainNFT contract.
 14638  type ServiceChainNFTOwnershipTransferred struct {
 14639  	PreviousOwner common.Address
 14640  	NewOwner      common.Address
 14641  	Raw           types.Log // Blockchain specific contextual infos
 14642  }
 14643  
 14644  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 14645  //
 14646  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 14647  func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ServiceChainNFTOwnershipTransferredIterator, error) {
 14648  
 14649  	var previousOwnerRule []interface{}
 14650  	for _, previousOwnerItem := range previousOwner {
 14651  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 14652  	}
 14653  	var newOwnerRule []interface{}
 14654  	for _, newOwnerItem := range newOwner {
 14655  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 14656  	}
 14657  
 14658  	logs, sub, err := _ServiceChainNFT.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 14659  	if err != nil {
 14660  		return nil, err
 14661  	}
 14662  	return &ServiceChainNFTOwnershipTransferredIterator{contract: _ServiceChainNFT.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
 14663  }
 14664  
 14665  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 14666  //
 14667  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 14668  func (_ServiceChainNFT *ServiceChainNFTFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
 14669  
 14670  	var previousOwnerRule []interface{}
 14671  	for _, previousOwnerItem := range previousOwner {
 14672  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 14673  	}
 14674  	var newOwnerRule []interface{}
 14675  	for _, newOwnerItem := range newOwner {
 14676  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 14677  	}
 14678  
 14679  	logs, sub, err := _ServiceChainNFT.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 14680  	if err != nil {
 14681  		return nil, err
 14682  	}
 14683  	return event.NewSubscription(func(quit <-chan struct{}) error {
 14684  		defer sub.Unsubscribe()
 14685  		for {
 14686  			select {
 14687  			case log := <-logs:
 14688  				// New log arrived, parse the event and forward to the user
 14689  				event := new(ServiceChainNFTOwnershipTransferred)
 14690  				if err := _ServiceChainNFT.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 14691  					return err
 14692  				}
 14693  				event.Raw = log
 14694  
 14695  				select {
 14696  				case sink <- event:
 14697  				case err := <-sub.Err():
 14698  					return err
 14699  				case <-quit:
 14700  					return nil
 14701  				}
 14702  			case err := <-sub.Err():
 14703  				return err
 14704  			case <-quit:
 14705  				return nil
 14706  			}
 14707  		}
 14708  	}), nil
 14709  }
 14710  
 14711  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 14712  //
 14713  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 14714  func (_ServiceChainNFT *ServiceChainNFTFilterer) ParseOwnershipTransferred(log types.Log) (*ServiceChainNFTOwnershipTransferred, error) {
 14715  	event := new(ServiceChainNFTOwnershipTransferred)
 14716  	if err := _ServiceChainNFT.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 14717  		return nil, err
 14718  	}
 14719  	return event, nil
 14720  }
 14721  
 14722  // ServiceChainNFTTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ServiceChainNFT contract.
 14723  type ServiceChainNFTTransferIterator struct {
 14724  	Event *ServiceChainNFTTransfer // Event containing the contract specifics and raw log
 14725  
 14726  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 14727  	event    string              // Event name to use for unpacking event data
 14728  
 14729  	logs chan types.Log      // Log channel receiving the found contract events
 14730  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 14731  	done bool                // Whether the subscription completed delivering logs
 14732  	fail error               // Occurred error to stop iteration
 14733  }
 14734  
 14735  // Next advances the iterator to the subsequent event, returning whether there
 14736  // are any more events found. In case of a retrieval or parsing error, false is
 14737  // returned and Error() can be queried for the exact failure.
 14738  func (it *ServiceChainNFTTransferIterator) Next() bool {
 14739  	// If the iterator failed, stop iterating
 14740  	if it.fail != nil {
 14741  		return false
 14742  	}
 14743  	// If the iterator completed, deliver directly whatever's available
 14744  	if it.done {
 14745  		select {
 14746  		case log := <-it.logs:
 14747  			it.Event = new(ServiceChainNFTTransfer)
 14748  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14749  				it.fail = err
 14750  				return false
 14751  			}
 14752  			it.Event.Raw = log
 14753  			return true
 14754  
 14755  		default:
 14756  			return false
 14757  		}
 14758  	}
 14759  	// Iterator still in progress, wait for either a data or an error event
 14760  	select {
 14761  	case log := <-it.logs:
 14762  		it.Event = new(ServiceChainNFTTransfer)
 14763  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14764  			it.fail = err
 14765  			return false
 14766  		}
 14767  		it.Event.Raw = log
 14768  		return true
 14769  
 14770  	case err := <-it.sub.Err():
 14771  		it.done = true
 14772  		it.fail = err
 14773  		return it.Next()
 14774  	}
 14775  }
 14776  
 14777  // Error returns any retrieval or parsing error occurred during filtering.
 14778  func (it *ServiceChainNFTTransferIterator) Error() error {
 14779  	return it.fail
 14780  }
 14781  
 14782  // Close terminates the iteration process, releasing any pending underlying
 14783  // resources.
 14784  func (it *ServiceChainNFTTransferIterator) Close() error {
 14785  	it.sub.Unsubscribe()
 14786  	return nil
 14787  }
 14788  
 14789  // ServiceChainNFTTransfer represents a Transfer event raised by the ServiceChainNFT contract.
 14790  type ServiceChainNFTTransfer struct {
 14791  	From    common.Address
 14792  	To      common.Address
 14793  	TokenId *big.Int
 14794  	Raw     types.Log // Blockchain specific contextual infos
 14795  }
 14796  
 14797  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 14798  //
 14799  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 14800  func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ServiceChainNFTTransferIterator, error) {
 14801  
 14802  	var fromRule []interface{}
 14803  	for _, fromItem := range from {
 14804  		fromRule = append(fromRule, fromItem)
 14805  	}
 14806  	var toRule []interface{}
 14807  	for _, toItem := range to {
 14808  		toRule = append(toRule, toItem)
 14809  	}
 14810  	var tokenIdRule []interface{}
 14811  	for _, tokenIdItem := range tokenId {
 14812  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 14813  	}
 14814  
 14815  	logs, sub, err := _ServiceChainNFT.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 14816  	if err != nil {
 14817  		return nil, err
 14818  	}
 14819  	return &ServiceChainNFTTransferIterator{contract: _ServiceChainNFT.contract, event: "Transfer", logs: logs, sub: sub}, nil
 14820  }
 14821  
 14822  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 14823  //
 14824  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 14825  func (_ServiceChainNFT *ServiceChainNFTFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 14826  
 14827  	var fromRule []interface{}
 14828  	for _, fromItem := range from {
 14829  		fromRule = append(fromRule, fromItem)
 14830  	}
 14831  	var toRule []interface{}
 14832  	for _, toItem := range to {
 14833  		toRule = append(toRule, toItem)
 14834  	}
 14835  	var tokenIdRule []interface{}
 14836  	for _, tokenIdItem := range tokenId {
 14837  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 14838  	}
 14839  
 14840  	logs, sub, err := _ServiceChainNFT.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 14841  	if err != nil {
 14842  		return nil, err
 14843  	}
 14844  	return event.NewSubscription(func(quit <-chan struct{}) error {
 14845  		defer sub.Unsubscribe()
 14846  		for {
 14847  			select {
 14848  			case log := <-logs:
 14849  				// New log arrived, parse the event and forward to the user
 14850  				event := new(ServiceChainNFTTransfer)
 14851  				if err := _ServiceChainNFT.contract.UnpackLog(event, "Transfer", log); err != nil {
 14852  					return err
 14853  				}
 14854  				event.Raw = log
 14855  
 14856  				select {
 14857  				case sink <- event:
 14858  				case err := <-sub.Err():
 14859  					return err
 14860  				case <-quit:
 14861  					return nil
 14862  				}
 14863  			case err := <-sub.Err():
 14864  				return err
 14865  			case <-quit:
 14866  				return nil
 14867  			}
 14868  		}
 14869  	}), nil
 14870  }
 14871  
 14872  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 14873  //
 14874  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 14875  func (_ServiceChainNFT *ServiceChainNFTFilterer) ParseTransfer(log types.Log) (*ServiceChainNFTTransfer, error) {
 14876  	event := new(ServiceChainNFTTransfer)
 14877  	if err := _ServiceChainNFT.contract.UnpackLog(event, "Transfer", log); err != nil {
 14878  		return nil, err
 14879  	}
 14880  	return event, nil
 14881  }