github.com/kisexp/xdchain@v0.0.0-20211206025815-490d6b732aa7/permission/v2/bind/nodes.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 bind
     5  
     6  import (
     7  	"math/big"
     8  	"strings"
     9  
    10  	ethereum "github.com/kisexp/xdchain"
    11  	"github.com/kisexp/xdchain/accounts/abi"
    12  	"github.com/kisexp/xdchain/accounts/abi/bind"
    13  	"github.com/kisexp/xdchain/common"
    14  	"github.com/kisexp/xdchain/core/types"
    15  	"github.com/kisexp/xdchain/event"
    16  )
    17  
    18  // Reference imports to suppress errors if they are not otherwise used.
    19  var (
    20  	_ = big.NewInt
    21  	_ = strings.NewReader
    22  	_ = ethereum.NotFound
    23  	_ = bind.Bind
    24  	_ = common.Big1
    25  	_ = types.BloomLookup
    26  	_ = event.NewSubscription
    27  )
    28  
    29  // NodeManagerABI is the input ABI used to generate the binding from.
    30  const NodeManagerABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"updateNodeStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"enodeId\",\"type\":\"string\"}],\"name\":\"getNodeDetails\",\"outputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_nodeStatus\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addAdminNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"}],\"name\":\"connectionAllowed\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addOrgNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_nodeIndex\",\"type\":\"uint256\"}],\"name\":\"getNodeDetailsFromIndex\",\"outputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_nodeStatus\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumberOfNodes\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_ip\",\"type\":\"string\"},{\"name\":\"_port\",\"type\":\"uint16\"},{\"name\":\"_raftport\",\"type\":\"uint16\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"approveNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ip\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_port\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_raftport\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ip\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_port\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_raftport\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ip\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_port\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_raftport\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ip\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_port\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_raftport\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ip\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_port\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_raftport\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeBlacklisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ip\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_port\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_raftport\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeRecoveryInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ip\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_port\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_raftport\",\"type\":\"uint16\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeRecoveryCompleted\",\"type\":\"event\"}]"
    31  
    32  var NodeManagerParsedABI, _ = abi.JSON(strings.NewReader(NodeManagerABI))
    33  
    34  // NodeManagerBin is the compiled bytecode used for deploying new contracts.
    35  var NodeManagerBin = "0x608060405234801561001057600080fd5b5060405160208061338f8339810180604052602081101561003057600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561332d806100626000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80634c573311116100665780634c5733111461042b578063549583df1461073057806397c07a9b146108f2578063b81c806a1461090f578063f82e08ac1461092957610093565b806337d50b27146100985780633f0e0e471461025e5780634530abe11461042b57806345a59e5b146105ed575b600080fd5b61025c600480360360c08110156100ae57600080fd5b810190602081018135600160201b8111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111600160201b831117156100fb57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561014d57600080fd5b82018360208201111561015f57600080fd5b803590602001918460018302840111600160201b8311171561018057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929561ffff8535811696602087013590911695919450925060608101915060400135600160201b8111156101e657600080fd5b8201836020820111156101f857600080fd5b803590602001918460018302840111600160201b8311171561021957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610aeb915050565b005b6102cc6004803603602081101561027457600080fd5b810190602081018135600160201b81111561028e57600080fd5b8201836020820111156102a057600080fd5b803590602001918460018302840111600160201b831117156102c157600080fd5b50909250905061160a565b6040805161ffff80861660608301528416608082015260a0810183905260c080825288519082015287519091829160208084019284019160e08501918c019080838360005b83811015610329578181015183820152602001610311565b50505050905090810190601f1680156103565780820380516001836020036101000a031916815260200191505b5084810383528951815289516020918201918b019080838360005b83811015610389578181015183820152602001610371565b50505050905090810190601f1680156103b65780820380516001836020036101000a031916815260200191505b5084810382528851815288516020918201918a019080838360005b838110156103e95781810151838201526020016103d1565b50505050905090810190601f1680156104165780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b61025c600480360360a081101561044157600080fd5b810190602081018135600160201b81111561045b57600080fd5b82018360208201111561046d57600080fd5b803590602001918460018302840111600160201b8311171561048e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156104e057600080fd5b8201836020820111156104f257600080fd5b803590602001918460018302840111600160201b8311171561051357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929561ffff8535811696602087013590911695919450925060608101915060400135600160201b81111561057957600080fd5b82018360208201111561058b57600080fd5b803590602001918460018302840111600160201b831117156105ac57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506119d1945050505050565b61071c6004803603606081101561060357600080fd5b810190602081018135600160201b81111561061d57600080fd5b82018360208201111561062f57600080fd5b803590602001918460018302840111600160201b8311171561065057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156106a257600080fd5b8201836020820111156106b457600080fd5b803590602001918460018302840111600160201b831117156106d557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903561ffff169150611ec79050565b604080519115158252519081900360200190f35b61025c600480360360a081101561074657600080fd5b810190602081018135600160201b81111561076057600080fd5b82018360208201111561077257600080fd5b803590602001918460018302840111600160201b8311171561079357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156107e557600080fd5b8201836020820111156107f757600080fd5b803590602001918460018302840111600160201b8311171561081857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929561ffff8535811696602087013590911695919450925060608101915060400135600160201b81111561087e57600080fd5b82018360208201111561089057600080fd5b803590602001918460018302840111600160201b831117156108b157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506121e8945050505050565b6102cc6004803603602081101561090857600080fd5b50356125d5565b610917612879565b60408051918252519081900360200190f35b61025c600480360360a081101561093f57600080fd5b810190602081018135600160201b81111561095957600080fd5b82018360208201111561096b57600080fd5b803590602001918460018302840111600160201b8311171561098c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156109de57600080fd5b8201836020820111156109f057600080fd5b803590602001918460018302840111600160201b83111715610a1157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929561ffff8535811696602087013590911695919450925060608101915060400135600160201b811115610a7757600080fd5b820183602082011115610a8957600080fd5b803590602001918460018302840111600160201b83111715610aaa57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612880945050505050565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3857600080fd5b505afa158015610b4c573d6000803e3d6000fd5b505050506040513d6020811015610b6257600080fd5b50516001600160a01b03163314610bb75760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b8560036000826040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610bfd578181015183820152602001610be5565b50505050905090810190601f168015610c2a5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152815160209283012086529085019590955250505001600020541515610caa5760408051600160e51b62461bcd02815260206004820152601e60248201527f70617373656420656e6f646520696420646f6573206e6f742065786973740000604482015290519081900360640190fd5b610cb48784612eed565b1515610cf457604051600160e51b62461bcd02815260040180806020018281038252602a815260200180613265602a913960400191505060405180910390fd5b8160011480610d035750816002145b80610d0e5750816003145b80610d195750816004145b80610d245750816005145b1515610d6457604051600160e51b62461bcd0281526004018080602001828103825260268152602001806132af6026913960400191505060405180910390fd5b6000610d6f88613047565b9050866040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610db2578181015183820152602001610d9a565b50505050905090810190601f168015610ddf5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120600182815481101515610e0957fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610ea65780601f10610e7b57610100808354040283529160200191610ea6565b820191906000526020600020905b815481529060010190602001808311610e8957829003601f168201915b50509250505060405160208183030381529060405280519060200120141580610ef957508561ffff16600182815481101515610ede57fe5b600091825260209091206002600590920201015461ffff1614155b80610f3457508461ffff16600182815481101515610f1357fe5b600091825260209091206005909102016002015462010000900461ffff1614155b15610f3f5750611601565b826001141561114857610f51886130f0565b600214610f965760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061328f833981519152604482015290519081900360640190fd5b6003600182815481101515610fa757fe5b9060005260206000209060050201600401819055507ff631019be71bc682c59150635d714061185232e98e60de8bdd87bbee239cc5c888888888886040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff16815260200180602001848103845289818151815260200191508051906020019080838360005b8381101561104357818101518382015260200161102b565b50505050905090810190601f1680156110705780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b838110156110a357818101518382015260200161108b565b50505050905090810190601f1680156110d05780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b838110156111035781810151838201526020016110eb565b50505050905090810190601f1680156111305780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390a16115ff565b826002141561124b5761115a886130f0565b60031461119f5760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061328f833981519152604482015290519081900360640190fd5b60026001828154811015156111b057fe5b9060005260206000209060050201600401819055507ffb98f62dea866f0c373574c8523f611d0db1d8f19cc1b95d07a221d36a6a45de88888888886040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff16815260200180602001848103845289818151815260200191508051906020019080838360008381101561104357818101518382015260200161102b565b826003141561130057600460018281548110151561126557fe5b9060005260206000209060050201600401819055507f25300d4d785e654bc9b7979700cfa0fdc9ace890a46841fecfce661fd2c41a3388888888886040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff16815260200180602001848103845289818151815260200191508051906020019080838360008381101561104357818101518382015260200161102b565b826004141561140357611312886130f0565b6004146113575760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061328f833981519152604482015290519081900360640190fd5b600560018281548110151561136857fe5b9060005260206000209060050201600401819055507f72779f66ea90e28bae76fbfe03eaef5ae01699976c7493f93186ab9560ccfaa488888888886040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff16815260200180602001848103845289818151815260200191508051906020019080838360008381101561104357818101518382015260200161102b565b61140c886130f0565b6005146114515760408051600160e51b62461bcd02815260206004820152601d602482015260008051602061328f833981519152604482015290519081900360640190fd5b600260018281548110151561146257fe5b9060005260206000209060050201600401819055507f60aac8c36efdaabf125dc9ec2124bde8b3ceafe5c8b4fc8063fc4ac9017eb0be88888888886040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff16815260200180602001848103845289818151815260200191508051906020019080838360005b838110156114fe5781810151838201526020016114e6565b50505050905090810190601f16801561152b5780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b8381101561155e578181015183820152602001611546565b50505050905090810190601f16801561158b5780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b838110156115be5781810151838201526020016115a6565b50505050905090810190601f1680156115eb5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390a15b505b50505050505050565b6060806060600080600060026000866040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611659578181015183820152602001611641565b50505050905090810190601f1680156116865780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054600014156116f157505060408051602080820183526000808352835180830185528181528451928301909452808252919650919450909250905080806119c7565b600061173289898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061304792505050565b905060018181548110151561174357fe5b906000526020600020906005020160030160018281548110151561176357fe5b906000526020600020906005020160000160018381548110151561178357fe5b90600052602060002090600502016001016001848154811015156117a357fe5b60009182526020909120600260059092020101546001805461ffff90921691869081106117cc57fe5b906000526020600020906005020160020160029054906101000a900461ffff166001868154811015156117fb57fe5b600091825260209182902060046005909202010154865460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815291928891908301828280156118965780601f1061186b57610100808354040283529160200191611896565b820191906000526020600020905b81548152906001019060200180831161187957829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a9450925084019050828280156119245780601f106118f957610100808354040283529160200191611924565b820191906000526020600020905b81548152906001019060200180831161190757829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a50899450925084019050828280156119b25780601f10611987576101008083540402835291602001916119b2565b820191906000526020600020905b81548152906001019060200180831161199557829003601f168201915b50505050509350965096509650965096509650505b9295509295509295565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015611a1e57600080fd5b505afa158015611a32573d6000803e3d6000fd5b505050506040513d6020811015611a4857600080fd5b50516001600160a01b03163314611a9d5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b8460036000826040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611ae3578181015183820152602001611acb565b50505050905090810190601f168015611b105780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181528151602092830120865290850195909552505050016000205415611b8f5760408051600160e51b62461bcd02815260206004820152601660248201527f70617373656420656e6f64652069642065786973747300000000000000000000604482015290519081900360640190fd5b60048054600101908190556040805160208082018181528a519383019390935289516003936000938c9391928392606090920191850190808383895b83811015611be3578181015183820152602001611bcb565b50505050905090810190601f168015611c105780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652858201969096529385016000908120969096555050825160c0810184528a81528083018a905261ffff808a169482019490945292871660608401525060808201859052600260a083015260018054808201808355919094528251805191946005027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60192611cbe928492909101906131cc565b506020828101518051611cd792600185019201906131cc565b506040820151600282018054606085015161ffff908116620100000263ffff0000199190941661ffff19909216919091171691909117905560808201518051611d2a9160038401916020909101906131cc565b5060a082015181600401555050507f9394c836a3325586270659f6aa3b9f835abca9afe7fec5abfc69760bb12bce0d86868686866040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff16815260200180602001848103845289818151815260200191508051906020019080838360005b83811015611dbf578181015183820152602001611da7565b50505050905090810190601f168015611dec5780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b83811015611e1f578181015183820152602001611e07565b50505050905090810190601f168015611e4c5780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015611e7f578181015183820152602001611e67565b50505050905090810190601f168015611eac5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390a1505050505050565b60008060009054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b158015611f1657600080fd5b505afa158015611f2a573d6000803e3d6000fd5b505050506040513d6020811015611f4057600080fd5b50516001600160a01b03163314611f955760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b60036000856040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611fda578181015183820152602001611fc2565b50505050905090810190601f1680156120075780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012081526020019081526020016000205460001415612041575060006121e1565b600061204c85613047565b905060018181548110151561205d57fe5b90600052602060002090600502016004015460021480156121cc5750836040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156120ba5781810151838201526020016120a2565b50505050905090810190601f1680156120e75780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012060018281548110151561211157fe5b906000526020600020906005020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156121ae5780601f10612183576101008083540402835291602001916121ae565b820191906000526020600020905b81548152906001019060200180831161219157829003601f168201915b50509250505060405160208183030381529060405280519060200120145b156121db5760019150506121e1565b60009150505b9392505050565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b15801561223557600080fd5b505afa158015612249573d6000803e3d6000fd5b505050506040513d602081101561225f57600080fd5b50516001600160a01b031633146122b45760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b8460036000826040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156122fa5781810151838201526020016122e2565b50505050905090810190601f1680156123275780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054156123a65760408051600160e51b62461bcd02815260206004820152601660248201527f70617373656420656e6f64652069642065786973747300000000000000000000604482015290519081900360640190fd5b60048054600101908190556040805160208082018181528a519383019390935289516003936000938c9391928392606090920191850190808383895b838110156123fa5781810151838201526020016123e2565b50505050905090810190601f1680156124275780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652858201969096529385016000908120969096555050825160c0810184528a81528083018a905261ffff808a169482019490945292871660608401525060808201859052600160a083018190528054808201808355919094528251805191946005027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601926124d5928492909101906131cc565b5060208281015180516124ee92600185019201906131cc565b506040820151600282018054606085015161ffff908116620100000263ffff0000199190941661ffff199092169190911716919091179055608082015180516125419160038401916020909101906131cc565b5060a082015181600401555050507ff9bad9f8a2dccc52fad61273a7fd673335b420319506c19b87df9ce7a19732da86868686866040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff168152602001806020018481038452898181518152602001915080519060200190808383600083811015611dbf578181015183820152602001611da7565b606080606060008060006001878154811015156125ee57fe5b906000526020600020906005020160030160018881548110151561260e57fe5b906000526020600020906005020160000160018981548110151561262e57fe5b906000526020600020906005020160010160018a81548110151561264e57fe5b60009182526020909120600260059092020101546001805461ffff909216918c90811061267757fe5b906000526020600020906005020160020160029054906101000a900461ffff1660018c8154811015156126a657fe5b600091825260209182902060046005909202010154865460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815291928891908301828280156127415780601f1061271657610100808354040283529160200191612741565b820191906000526020600020905b81548152906001019060200180831161272457829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a9450925084019050828280156127cf5780601f106127a4576101008083540402835291602001916127cf565b820191906000526020600020905b8154815290600101906020018083116127b257829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a508994509250840190508282801561285d5780601f106128325761010080835404028352916020019161285d565b820191906000526020600020905b81548152906001019060200180831161284057829003601f168201915b5050505050935095509550955095509550955091939550919395565b6004545b90565b6000809054906101000a90046001600160a01b03166001600160a01b0316630e32cf906040518163ffffffff1660e01b815260040160206040518083038186803b1580156128cd57600080fd5b505afa1580156128e1573d6000803e3d6000fd5b505050506040513d60208110156128f757600080fd5b50516001600160a01b0316331461294c5760408051600160e51b62461bcd02815260206004820152600e6024820152600160911b6d34b73b30b634b21031b0b63632b902604482015290519081900360640190fd5b8460036000826040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561299257818101518382015260200161297a565b50505050905090810190601f1680156129bf5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152918152815160209283012086529085019590955250505001600020541515612a3f5760408051600160e51b62461bcd02815260206004820152601e60248201527f70617373656420656e6f646520696420646f6573206e6f742065786973740000604482015290519081900360640190fd5b612a498683612eed565b1515612a8957604051600160e51b62461bcd02815260040180806020018281038252602d8152602001806132d5602d913960400191505060405180910390fd5b612a92866130f0565b600114612ae95760408051600160e51b62461bcd02815260206004820152601c60248201527f6e6f7468696e672070656e64696e6720666f7220617070726f76616c00000000604482015290519081900360640190fd5b6000612af487613047565b9050856040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612b37578181015183820152602001612b1f565b50505050905090810190601f168015612b645780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120600182815481101515612b8e57fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612c2b5780601f10612c0057610100808354040283529160200191612c2b565b820191906000526020600020905b815481529060010190602001808311612c0e57829003601f168201915b50509250505060405160208183030381529060405280519060200120141580612c7e57508461ffff16600182815481101515612c6357fe5b600091825260209091206002600590920201015461ffff1614155b80612cb957508361ffff16600182815481101515612c9857fe5b600091825260209091206005909102016002015462010000900461ffff1614155b15612cc45750612ee5565b6002600182815481101515612cd557fe5b9060005260206000209060050201600401819055507f9394c836a3325586270659f6aa3b9f835abca9afe7fec5abfc69760bb12bce0d600182815481101515612d1a57fe5b9060005260206000209060050201600001878787600186815481101515612d3d57fe5b90600052602060002090600502016003016040518080602001806020018661ffff1661ffff1681526020018561ffff1661ffff16815260200180602001848103845289818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612dfb5780601f10612dd057610100808354040283529160200191612dfb565b820191906000526020600020905b815481529060010190602001808311612dde57829003601f168201915b505084810383528851815288516020918201918a019080838360005b83811015612e2f578181015183820152602001612e17565b50505050905090810190601f168015612e5c5780820380516001836020036101000a031916815260200191505b50848103825285546002600019610100600184161502019091160480825260209091019086908015612ecf5780601f10612ea457610100808354040283529160200191612ecf565b820191906000526020600020905b815481529060010190602001808311612eb257829003601f168201915b50509850505050505050505060405180910390a1505b505050505050565b6000816040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612f30578181015183820152602001612f18565b50505050905090810190601f168015612f5d5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001612f8385613047565b81548110612f8d57fe5b60009182526020918290206040805180850194855260036005909402909201929092018054600260001961010060018416150201909116049282018390529291829160600190849080156130225780601f10612ff757610100808354040283529160200191613022565b820191906000526020600020905b81548152906001019060200180831161300557829003601f168201915b5050925050506040516020818303038152906040528051906020012014905092915050565b6000600160036000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613090578181015183820152602001613078565b50505050905090810190601f1680156130bd5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001208152602001908152602001600020540390505b919050565b600060036000836040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561313757818101518382015260200161311f565b50505050905090810190601f1680156131645780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001208152602001908152602001600020546000141561319e575060006130eb565b60016131a983613047565b815481106131b357fe5b9060005260206000209060050201600401549050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061320d57805160ff191683800117855561323a565b8280016001018555821561323a579182015b8281111561323a57825182559160200191906001019061321f565b5061324692915061324a565b5090565b61287d91905b80821115613246576000815560010161325056fe656e6f646520696420646f6573206e6f742062656c6f6e6720746f2074686520706173736564206f72676f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000696e76616c6964206f7065726174696f6e2e2077726f6e6720616374696f6e20706173736564656e6f646520696420646f6573206e6f742062656c6f6e6720746f2074686520706173736564206f7267206964a165627a7a7230582033fd8af5439a9af79764088da6847651cc33d3b41698fff5d54b3e47419c5c6a0029"
    36  
    37  // DeployNodeManager deploys a new Ethereum contract, binding an instance of NodeManager to it.
    38  func DeployNodeManager(auth *bind.TransactOpts, backend bind.ContractBackend, _permUpgradable common.Address) (common.Address, *types.Transaction, *NodeManager, error) {
    39  	parsed, err := abi.JSON(strings.NewReader(NodeManagerABI))
    40  	if err != nil {
    41  		return common.Address{}, nil, nil, err
    42  	}
    43  
    44  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(NodeManagerBin), backend, _permUpgradable)
    45  	if err != nil {
    46  		return common.Address{}, nil, nil, err
    47  	}
    48  	return address, tx, &NodeManager{NodeManagerCaller: NodeManagerCaller{contract: contract}, NodeManagerTransactor: NodeManagerTransactor{contract: contract}, NodeManagerFilterer: NodeManagerFilterer{contract: contract}}, nil
    49  }
    50  
    51  // NodeManager is an auto generated Go binding around an Ethereum contract.
    52  type NodeManager struct {
    53  	NodeManagerCaller     // Read-only binding to the contract
    54  	NodeManagerTransactor // Write-only binding to the contract
    55  	NodeManagerFilterer   // Log filterer for contract events
    56  }
    57  
    58  // NodeManagerCaller is an auto generated read-only Go binding around an Ethereum contract.
    59  type NodeManagerCaller struct {
    60  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    61  }
    62  
    63  // NodeManagerTransactor is an auto generated write-only Go binding around an Ethereum contract.
    64  type NodeManagerTransactor struct {
    65  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    66  }
    67  
    68  // NodeManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
    69  type NodeManagerFilterer struct {
    70  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    71  }
    72  
    73  // NodeManagerSession is an auto generated Go binding around an Ethereum contract,
    74  // with pre-set call and transact options.
    75  type NodeManagerSession struct {
    76  	Contract     *NodeManager      // Generic contract binding to set the session for
    77  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    78  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    79  }
    80  
    81  // NodeManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract,
    82  // with pre-set call options.
    83  type NodeManagerCallerSession struct {
    84  	Contract *NodeManagerCaller // Generic contract caller binding to set the session for
    85  	CallOpts bind.CallOpts      // Call options to use throughout this session
    86  }
    87  
    88  // NodeManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    89  // with pre-set transact options.
    90  type NodeManagerTransactorSession struct {
    91  	Contract     *NodeManagerTransactor // Generic contract transactor binding to set the session for
    92  	TransactOpts bind.TransactOpts      // Transaction auth options to use throughout this session
    93  }
    94  
    95  // NodeManagerRaw is an auto generated low-level Go binding around an Ethereum contract.
    96  type NodeManagerRaw struct {
    97  	Contract *NodeManager // Generic contract binding to access the raw methods on
    98  }
    99  
   100  // NodeManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   101  type NodeManagerCallerRaw struct {
   102  	Contract *NodeManagerCaller // Generic read-only contract binding to access the raw methods on
   103  }
   104  
   105  // NodeManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   106  type NodeManagerTransactorRaw struct {
   107  	Contract *NodeManagerTransactor // Generic write-only contract binding to access the raw methods on
   108  }
   109  
   110  // NewNodeManager creates a new instance of NodeManager, bound to a specific deployed contract.
   111  func NewNodeManager(address common.Address, backend bind.ContractBackend) (*NodeManager, error) {
   112  	contract, err := bindNodeManager(address, backend, backend, backend)
   113  	if err != nil {
   114  		return nil, err
   115  	}
   116  	return &NodeManager{NodeManagerCaller: NodeManagerCaller{contract: contract}, NodeManagerTransactor: NodeManagerTransactor{contract: contract}, NodeManagerFilterer: NodeManagerFilterer{contract: contract}}, nil
   117  }
   118  
   119  // NewNodeManagerCaller creates a new read-only instance of NodeManager, bound to a specific deployed contract.
   120  func NewNodeManagerCaller(address common.Address, caller bind.ContractCaller) (*NodeManagerCaller, error) {
   121  	contract, err := bindNodeManager(address, caller, nil, nil)
   122  	if err != nil {
   123  		return nil, err
   124  	}
   125  	return &NodeManagerCaller{contract: contract}, nil
   126  }
   127  
   128  // NewNodeManagerTransactor creates a new write-only instance of NodeManager, bound to a specific deployed contract.
   129  func NewNodeManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*NodeManagerTransactor, error) {
   130  	contract, err := bindNodeManager(address, nil, transactor, nil)
   131  	if err != nil {
   132  		return nil, err
   133  	}
   134  	return &NodeManagerTransactor{contract: contract}, nil
   135  }
   136  
   137  // NewNodeManagerFilterer creates a new log filterer instance of NodeManager, bound to a specific deployed contract.
   138  func NewNodeManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*NodeManagerFilterer, error) {
   139  	contract, err := bindNodeManager(address, nil, nil, filterer)
   140  	if err != nil {
   141  		return nil, err
   142  	}
   143  	return &NodeManagerFilterer{contract: contract}, nil
   144  }
   145  
   146  // bindNodeManager binds a generic wrapper to an already deployed contract.
   147  func bindNodeManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   148  	parsed, err := abi.JSON(strings.NewReader(NodeManagerABI))
   149  	if err != nil {
   150  		return nil, err
   151  	}
   152  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   153  }
   154  
   155  // Call invokes the (constant) contract method with params as input values and
   156  // sets the output to result. The result type might be a single field for simple
   157  // returns, a slice of interfaces for anonymous returns and a struct for named
   158  // returns.
   159  func (_NodeManager *NodeManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   160  	return _NodeManager.Contract.NodeManagerCaller.contract.Call(opts, result, method, params...)
   161  }
   162  
   163  // Transfer initiates a plain transaction to move funds to the contract, calling
   164  // its default method if one is available.
   165  func (_NodeManager *NodeManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   166  	return _NodeManager.Contract.NodeManagerTransactor.contract.Transfer(opts)
   167  }
   168  
   169  // Transact invokes the (paid) contract method with params as input values.
   170  func (_NodeManager *NodeManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   171  	return _NodeManager.Contract.NodeManagerTransactor.contract.Transact(opts, method, params...)
   172  }
   173  
   174  // Call invokes the (constant) contract method with params as input values and
   175  // sets the output to result. The result type might be a single field for simple
   176  // returns, a slice of interfaces for anonymous returns and a struct for named
   177  // returns.
   178  func (_NodeManager *NodeManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   179  	return _NodeManager.Contract.contract.Call(opts, result, method, params...)
   180  }
   181  
   182  // Transfer initiates a plain transaction to move funds to the contract, calling
   183  // its default method if one is available.
   184  func (_NodeManager *NodeManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   185  	return _NodeManager.Contract.contract.Transfer(opts)
   186  }
   187  
   188  // Transact invokes the (paid) contract method with params as input values.
   189  func (_NodeManager *NodeManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   190  	return _NodeManager.Contract.contract.Transact(opts, method, params...)
   191  }
   192  
   193  // ConnectionAllowed is a free data retrieval call binding the contract method 0x45a59e5b.
   194  //
   195  // Solidity: function connectionAllowed(string _enodeId, string _ip, uint16 _port) view returns(bool)
   196  func (_NodeManager *NodeManagerCaller) ConnectionAllowed(opts *bind.CallOpts, _enodeId string, _ip string, _port uint16) (bool, error) {
   197  	var out []interface{}
   198  	err := _NodeManager.contract.Call(opts, &out, "connectionAllowed", _enodeId, _ip, _port)
   199  
   200  	if err != nil {
   201  		return *new(bool), err
   202  	}
   203  
   204  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   205  
   206  	return out0, err
   207  
   208  }
   209  
   210  // ConnectionAllowed is a free data retrieval call binding the contract method 0x45a59e5b.
   211  //
   212  // Solidity: function connectionAllowed(string _enodeId, string _ip, uint16 _port) view returns(bool)
   213  func (_NodeManager *NodeManagerSession) ConnectionAllowed(_enodeId string, _ip string, _port uint16) (bool, error) {
   214  	return _NodeManager.Contract.ConnectionAllowed(&_NodeManager.CallOpts, _enodeId, _ip, _port)
   215  }
   216  
   217  // ConnectionAllowed is a free data retrieval call binding the contract method 0x45a59e5b.
   218  //
   219  // Solidity: function connectionAllowed(string _enodeId, string _ip, uint16 _port) view returns(bool)
   220  func (_NodeManager *NodeManagerCallerSession) ConnectionAllowed(_enodeId string, _ip string, _port uint16) (bool, error) {
   221  	return _NodeManager.Contract.ConnectionAllowed(&_NodeManager.CallOpts, _enodeId, _ip, _port)
   222  }
   223  
   224  // GetNodeDetails is a free data retrieval call binding the contract method 0x3f0e0e47.
   225  //
   226  // Solidity: function getNodeDetails(string enodeId) view returns(string _orgId, string _enodeId, string _ip, uint16 _port, uint16 _raftport, uint256 _nodeStatus)
   227  func (_NodeManager *NodeManagerCaller) GetNodeDetails(opts *bind.CallOpts, enodeId string) (struct {
   228  	OrgId      string
   229  	EnodeId    string
   230  	Ip         string
   231  	Port       uint16
   232  	Raftport   uint16
   233  	NodeStatus *big.Int
   234  }, error) {
   235  	var out []interface{}
   236  	err := _NodeManager.contract.Call(opts, &out, "getNodeDetails", enodeId)
   237  
   238  	outstruct := new(struct {
   239  		OrgId      string
   240  		EnodeId    string
   241  		Ip         string
   242  		Port       uint16
   243  		Raftport   uint16
   244  		NodeStatus *big.Int
   245  	})
   246  
   247  	outstruct.OrgId = out[0].(string)
   248  	outstruct.EnodeId = out[1].(string)
   249  	outstruct.Ip = out[2].(string)
   250  	outstruct.Port = out[3].(uint16)
   251  	outstruct.Raftport = out[4].(uint16)
   252  	outstruct.NodeStatus = out[5].(*big.Int)
   253  
   254  	return *outstruct, err
   255  
   256  }
   257  
   258  // GetNodeDetails is a free data retrieval call binding the contract method 0x3f0e0e47.
   259  //
   260  // Solidity: function getNodeDetails(string enodeId) view returns(string _orgId, string _enodeId, string _ip, uint16 _port, uint16 _raftport, uint256 _nodeStatus)
   261  func (_NodeManager *NodeManagerSession) GetNodeDetails(enodeId string) (struct {
   262  	OrgId      string
   263  	EnodeId    string
   264  	Ip         string
   265  	Port       uint16
   266  	Raftport   uint16
   267  	NodeStatus *big.Int
   268  }, error) {
   269  	return _NodeManager.Contract.GetNodeDetails(&_NodeManager.CallOpts, enodeId)
   270  }
   271  
   272  // GetNodeDetails is a free data retrieval call binding the contract method 0x3f0e0e47.
   273  //
   274  // Solidity: function getNodeDetails(string enodeId) view returns(string _orgId, string _enodeId, string _ip, uint16 _port, uint16 _raftport, uint256 _nodeStatus)
   275  func (_NodeManager *NodeManagerCallerSession) GetNodeDetails(enodeId string) (struct {
   276  	OrgId      string
   277  	EnodeId    string
   278  	Ip         string
   279  	Port       uint16
   280  	Raftport   uint16
   281  	NodeStatus *big.Int
   282  }, error) {
   283  	return _NodeManager.Contract.GetNodeDetails(&_NodeManager.CallOpts, enodeId)
   284  }
   285  
   286  // GetNodeDetailsFromIndex is a free data retrieval call binding the contract method 0x97c07a9b.
   287  //
   288  // Solidity: function getNodeDetailsFromIndex(uint256 _nodeIndex) view returns(string _orgId, string _enodeId, string _ip, uint16 _port, uint16 _raftport, uint256 _nodeStatus)
   289  func (_NodeManager *NodeManagerCaller) GetNodeDetailsFromIndex(opts *bind.CallOpts, _nodeIndex *big.Int) (struct {
   290  	OrgId      string
   291  	EnodeId    string
   292  	Ip         string
   293  	Port       uint16
   294  	Raftport   uint16
   295  	NodeStatus *big.Int
   296  }, error) {
   297  	var out []interface{}
   298  	err := _NodeManager.contract.Call(opts, &out, "getNodeDetailsFromIndex", _nodeIndex)
   299  
   300  	outstruct := new(struct {
   301  		OrgId      string
   302  		EnodeId    string
   303  		Ip         string
   304  		Port       uint16
   305  		Raftport   uint16
   306  		NodeStatus *big.Int
   307  	})
   308  
   309  	outstruct.OrgId = out[0].(string)
   310  	outstruct.EnodeId = out[1].(string)
   311  	outstruct.Ip = out[2].(string)
   312  	outstruct.Port = out[3].(uint16)
   313  	outstruct.Raftport = out[4].(uint16)
   314  	outstruct.NodeStatus = out[5].(*big.Int)
   315  
   316  	return *outstruct, err
   317  
   318  }
   319  
   320  // GetNodeDetailsFromIndex is a free data retrieval call binding the contract method 0x97c07a9b.
   321  //
   322  // Solidity: function getNodeDetailsFromIndex(uint256 _nodeIndex) view returns(string _orgId, string _enodeId, string _ip, uint16 _port, uint16 _raftport, uint256 _nodeStatus)
   323  func (_NodeManager *NodeManagerSession) GetNodeDetailsFromIndex(_nodeIndex *big.Int) (struct {
   324  	OrgId      string
   325  	EnodeId    string
   326  	Ip         string
   327  	Port       uint16
   328  	Raftport   uint16
   329  	NodeStatus *big.Int
   330  }, error) {
   331  	return _NodeManager.Contract.GetNodeDetailsFromIndex(&_NodeManager.CallOpts, _nodeIndex)
   332  }
   333  
   334  // GetNodeDetailsFromIndex is a free data retrieval call binding the contract method 0x97c07a9b.
   335  //
   336  // Solidity: function getNodeDetailsFromIndex(uint256 _nodeIndex) view returns(string _orgId, string _enodeId, string _ip, uint16 _port, uint16 _raftport, uint256 _nodeStatus)
   337  func (_NodeManager *NodeManagerCallerSession) GetNodeDetailsFromIndex(_nodeIndex *big.Int) (struct {
   338  	OrgId      string
   339  	EnodeId    string
   340  	Ip         string
   341  	Port       uint16
   342  	Raftport   uint16
   343  	NodeStatus *big.Int
   344  }, error) {
   345  	return _NodeManager.Contract.GetNodeDetailsFromIndex(&_NodeManager.CallOpts, _nodeIndex)
   346  }
   347  
   348  // GetNumberOfNodes is a free data retrieval call binding the contract method 0xb81c806a.
   349  //
   350  // Solidity: function getNumberOfNodes() view returns(uint256)
   351  func (_NodeManager *NodeManagerCaller) GetNumberOfNodes(opts *bind.CallOpts) (*big.Int, error) {
   352  	var out []interface{}
   353  	err := _NodeManager.contract.Call(opts, &out, "getNumberOfNodes")
   354  
   355  	if err != nil {
   356  		return *new(*big.Int), err
   357  	}
   358  
   359  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   360  
   361  	return out0, err
   362  
   363  }
   364  
   365  // GetNumberOfNodes is a free data retrieval call binding the contract method 0xb81c806a.
   366  //
   367  // Solidity: function getNumberOfNodes() view returns(uint256)
   368  func (_NodeManager *NodeManagerSession) GetNumberOfNodes() (*big.Int, error) {
   369  	return _NodeManager.Contract.GetNumberOfNodes(&_NodeManager.CallOpts)
   370  }
   371  
   372  // GetNumberOfNodes is a free data retrieval call binding the contract method 0xb81c806a.
   373  //
   374  // Solidity: function getNumberOfNodes() view returns(uint256)
   375  func (_NodeManager *NodeManagerCallerSession) GetNumberOfNodes() (*big.Int, error) {
   376  	return _NodeManager.Contract.GetNumberOfNodes(&_NodeManager.CallOpts)
   377  }
   378  
   379  // AddAdminNode is a paid mutator transaction binding the contract method 0x4530abe1.
   380  //
   381  // Solidity: function addAdminNode(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId) returns()
   382  func (_NodeManager *NodeManagerTransactor) AddAdminNode(opts *bind.TransactOpts, _enodeId string, _ip string, _port uint16, _raftport uint16, _orgId string) (*types.Transaction, error) {
   383  	return _NodeManager.contract.Transact(opts, "addAdminNode", _enodeId, _ip, _port, _raftport, _orgId)
   384  }
   385  
   386  // AddAdminNode is a paid mutator transaction binding the contract method 0x4530abe1.
   387  //
   388  // Solidity: function addAdminNode(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId) returns()
   389  func (_NodeManager *NodeManagerSession) AddAdminNode(_enodeId string, _ip string, _port uint16, _raftport uint16, _orgId string) (*types.Transaction, error) {
   390  	return _NodeManager.Contract.AddAdminNode(&_NodeManager.TransactOpts, _enodeId, _ip, _port, _raftport, _orgId)
   391  }
   392  
   393  // AddAdminNode is a paid mutator transaction binding the contract method 0x4530abe1.
   394  //
   395  // Solidity: function addAdminNode(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId) returns()
   396  func (_NodeManager *NodeManagerTransactorSession) AddAdminNode(_enodeId string, _ip string, _port uint16, _raftport uint16, _orgId string) (*types.Transaction, error) {
   397  	return _NodeManager.Contract.AddAdminNode(&_NodeManager.TransactOpts, _enodeId, _ip, _port, _raftport, _orgId)
   398  }
   399  
   400  // AddNode is a paid mutator transaction binding the contract method 0x549583df.
   401  //
   402  // Solidity: function addNode(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId) returns()
   403  func (_NodeManager *NodeManagerTransactor) AddNode(opts *bind.TransactOpts, _enodeId string, _ip string, _port uint16, _raftport uint16, _orgId string) (*types.Transaction, error) {
   404  	return _NodeManager.contract.Transact(opts, "addNode", _enodeId, _ip, _port, _raftport, _orgId)
   405  }
   406  
   407  // AddNode is a paid mutator transaction binding the contract method 0x549583df.
   408  //
   409  // Solidity: function addNode(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId) returns()
   410  func (_NodeManager *NodeManagerSession) AddNode(_enodeId string, _ip string, _port uint16, _raftport uint16, _orgId string) (*types.Transaction, error) {
   411  	return _NodeManager.Contract.AddNode(&_NodeManager.TransactOpts, _enodeId, _ip, _port, _raftport, _orgId)
   412  }
   413  
   414  // AddNode is a paid mutator transaction binding the contract method 0x549583df.
   415  //
   416  // Solidity: function addNode(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId) returns()
   417  func (_NodeManager *NodeManagerTransactorSession) AddNode(_enodeId string, _ip string, _port uint16, _raftport uint16, _orgId string) (*types.Transaction, error) {
   418  	return _NodeManager.Contract.AddNode(&_NodeManager.TransactOpts, _enodeId, _ip, _port, _raftport, _orgId)
   419  }
   420  
   421  // AddOrgNode is a paid mutator transaction binding the contract method 0x4c573311.
   422  //
   423  // Solidity: function addOrgNode(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId) returns()
   424  func (_NodeManager *NodeManagerTransactor) AddOrgNode(opts *bind.TransactOpts, _enodeId string, _ip string, _port uint16, _raftport uint16, _orgId string) (*types.Transaction, error) {
   425  	return _NodeManager.contract.Transact(opts, "addOrgNode", _enodeId, _ip, _port, _raftport, _orgId)
   426  }
   427  
   428  // AddOrgNode is a paid mutator transaction binding the contract method 0x4c573311.
   429  //
   430  // Solidity: function addOrgNode(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId) returns()
   431  func (_NodeManager *NodeManagerSession) AddOrgNode(_enodeId string, _ip string, _port uint16, _raftport uint16, _orgId string) (*types.Transaction, error) {
   432  	return _NodeManager.Contract.AddOrgNode(&_NodeManager.TransactOpts, _enodeId, _ip, _port, _raftport, _orgId)
   433  }
   434  
   435  // AddOrgNode is a paid mutator transaction binding the contract method 0x4c573311.
   436  //
   437  // Solidity: function addOrgNode(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId) returns()
   438  func (_NodeManager *NodeManagerTransactorSession) AddOrgNode(_enodeId string, _ip string, _port uint16, _raftport uint16, _orgId string) (*types.Transaction, error) {
   439  	return _NodeManager.Contract.AddOrgNode(&_NodeManager.TransactOpts, _enodeId, _ip, _port, _raftport, _orgId)
   440  }
   441  
   442  // ApproveNode is a paid mutator transaction binding the contract method 0xf82e08ac.
   443  //
   444  // Solidity: function approveNode(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId) returns()
   445  func (_NodeManager *NodeManagerTransactor) ApproveNode(opts *bind.TransactOpts, _enodeId string, _ip string, _port uint16, _raftport uint16, _orgId string) (*types.Transaction, error) {
   446  	return _NodeManager.contract.Transact(opts, "approveNode", _enodeId, _ip, _port, _raftport, _orgId)
   447  }
   448  
   449  // ApproveNode is a paid mutator transaction binding the contract method 0xf82e08ac.
   450  //
   451  // Solidity: function approveNode(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId) returns()
   452  func (_NodeManager *NodeManagerSession) ApproveNode(_enodeId string, _ip string, _port uint16, _raftport uint16, _orgId string) (*types.Transaction, error) {
   453  	return _NodeManager.Contract.ApproveNode(&_NodeManager.TransactOpts, _enodeId, _ip, _port, _raftport, _orgId)
   454  }
   455  
   456  // ApproveNode is a paid mutator transaction binding the contract method 0xf82e08ac.
   457  //
   458  // Solidity: function approveNode(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId) returns()
   459  func (_NodeManager *NodeManagerTransactorSession) ApproveNode(_enodeId string, _ip string, _port uint16, _raftport uint16, _orgId string) (*types.Transaction, error) {
   460  	return _NodeManager.Contract.ApproveNode(&_NodeManager.TransactOpts, _enodeId, _ip, _port, _raftport, _orgId)
   461  }
   462  
   463  // UpdateNodeStatus is a paid mutator transaction binding the contract method 0x37d50b27.
   464  //
   465  // Solidity: function updateNodeStatus(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId, uint256 _action) returns()
   466  func (_NodeManager *NodeManagerTransactor) UpdateNodeStatus(opts *bind.TransactOpts, _enodeId string, _ip string, _port uint16, _raftport uint16, _orgId string, _action *big.Int) (*types.Transaction, error) {
   467  	return _NodeManager.contract.Transact(opts, "updateNodeStatus", _enodeId, _ip, _port, _raftport, _orgId, _action)
   468  }
   469  
   470  // UpdateNodeStatus is a paid mutator transaction binding the contract method 0x37d50b27.
   471  //
   472  // Solidity: function updateNodeStatus(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId, uint256 _action) returns()
   473  func (_NodeManager *NodeManagerSession) UpdateNodeStatus(_enodeId string, _ip string, _port uint16, _raftport uint16, _orgId string, _action *big.Int) (*types.Transaction, error) {
   474  	return _NodeManager.Contract.UpdateNodeStatus(&_NodeManager.TransactOpts, _enodeId, _ip, _port, _raftport, _orgId, _action)
   475  }
   476  
   477  // UpdateNodeStatus is a paid mutator transaction binding the contract method 0x37d50b27.
   478  //
   479  // Solidity: function updateNodeStatus(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId, uint256 _action) returns()
   480  func (_NodeManager *NodeManagerTransactorSession) UpdateNodeStatus(_enodeId string, _ip string, _port uint16, _raftport uint16, _orgId string, _action *big.Int) (*types.Transaction, error) {
   481  	return _NodeManager.Contract.UpdateNodeStatus(&_NodeManager.TransactOpts, _enodeId, _ip, _port, _raftport, _orgId, _action)
   482  }
   483  
   484  // NodeManagerNodeActivatedIterator is returned from FilterNodeActivated and is used to iterate over the raw logs and unpacked data for NodeActivated events raised by the NodeManager contract.
   485  type NodeManagerNodeActivatedIterator struct {
   486  	Event *NodeManagerNodeActivated // Event containing the contract specifics and raw log
   487  
   488  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   489  	event    string              // Event name to use for unpacking event data
   490  
   491  	logs chan types.Log        // Log channel receiving the found contract events
   492  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   493  	done bool                  // Whether the subscription completed delivering logs
   494  	fail error                 // Occurred error to stop iteration
   495  }
   496  
   497  // Next advances the iterator to the subsequent event, returning whether there
   498  // are any more events found. In case of a retrieval or parsing error, false is
   499  // returned and Error() can be queried for the exact failure.
   500  func (it *NodeManagerNodeActivatedIterator) Next() bool {
   501  	// If the iterator failed, stop iterating
   502  	if it.fail != nil {
   503  		return false
   504  	}
   505  	// If the iterator completed, deliver directly whatever's available
   506  	if it.done {
   507  		select {
   508  		case log := <-it.logs:
   509  			it.Event = new(NodeManagerNodeActivated)
   510  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   511  				it.fail = err
   512  				return false
   513  			}
   514  			it.Event.Raw = log
   515  			return true
   516  
   517  		default:
   518  			return false
   519  		}
   520  	}
   521  	// Iterator still in progress, wait for either a data or an error event
   522  	select {
   523  	case log := <-it.logs:
   524  		it.Event = new(NodeManagerNodeActivated)
   525  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   526  			it.fail = err
   527  			return false
   528  		}
   529  		it.Event.Raw = log
   530  		return true
   531  
   532  	case err := <-it.sub.Err():
   533  		it.done = true
   534  		it.fail = err
   535  		return it.Next()
   536  	}
   537  }
   538  
   539  // Error returns any retrieval or parsing error occurred during filtering.
   540  func (it *NodeManagerNodeActivatedIterator) Error() error {
   541  	return it.fail
   542  }
   543  
   544  // Close terminates the iteration process, releasing any pending underlying
   545  // resources.
   546  func (it *NodeManagerNodeActivatedIterator) Close() error {
   547  	it.sub.Unsubscribe()
   548  	return nil
   549  }
   550  
   551  // NodeManagerNodeActivated represents a NodeActivated event raised by the NodeManager contract.
   552  type NodeManagerNodeActivated struct {
   553  	EnodeId  string
   554  	Ip       string
   555  	Port     uint16
   556  	Raftport uint16
   557  	OrgId    string
   558  	Raw      types.Log // Blockchain specific contextual infos
   559  }
   560  
   561  // FilterNodeActivated is a free log retrieval operation binding the contract event 0xfb98f62dea866f0c373574c8523f611d0db1d8f19cc1b95d07a221d36a6a45de.
   562  //
   563  // Solidity: event NodeActivated(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId)
   564  func (_NodeManager *NodeManagerFilterer) FilterNodeActivated(opts *bind.FilterOpts) (*NodeManagerNodeActivatedIterator, error) {
   565  
   566  	logs, sub, err := _NodeManager.contract.FilterLogs(opts, "NodeActivated")
   567  	if err != nil {
   568  		return nil, err
   569  	}
   570  	return &NodeManagerNodeActivatedIterator{contract: _NodeManager.contract, event: "NodeActivated", logs: logs, sub: sub}, nil
   571  }
   572  
   573  var NodeActivatedTopicHash = "0xfb98f62dea866f0c373574c8523f611d0db1d8f19cc1b95d07a221d36a6a45de"
   574  
   575  // WatchNodeActivated is a free log subscription operation binding the contract event 0xfb98f62dea866f0c373574c8523f611d0db1d8f19cc1b95d07a221d36a6a45de.
   576  //
   577  // Solidity: event NodeActivated(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId)
   578  func (_NodeManager *NodeManagerFilterer) WatchNodeActivated(opts *bind.WatchOpts, sink chan<- *NodeManagerNodeActivated) (event.Subscription, error) {
   579  
   580  	logs, sub, err := _NodeManager.contract.WatchLogs(opts, "NodeActivated")
   581  	if err != nil {
   582  		return nil, err
   583  	}
   584  	return event.NewSubscription(func(quit <-chan struct{}) error {
   585  		defer sub.Unsubscribe()
   586  		for {
   587  			select {
   588  			case log := <-logs:
   589  				// New log arrived, parse the event and forward to the user
   590  				event := new(NodeManagerNodeActivated)
   591  				if err := _NodeManager.contract.UnpackLog(event, "NodeActivated", log); err != nil {
   592  					return err
   593  				}
   594  				event.Raw = log
   595  
   596  				select {
   597  				case sink <- event:
   598  				case err := <-sub.Err():
   599  					return err
   600  				case <-quit:
   601  					return nil
   602  				}
   603  			case err := <-sub.Err():
   604  				return err
   605  			case <-quit:
   606  				return nil
   607  			}
   608  		}
   609  	}), nil
   610  }
   611  
   612  // ParseNodeActivated is a log parse operation binding the contract event 0xfb98f62dea866f0c373574c8523f611d0db1d8f19cc1b95d07a221d36a6a45de.
   613  //
   614  // Solidity: event NodeActivated(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId)
   615  func (_NodeManager *NodeManagerFilterer) ParseNodeActivated(log types.Log) (*NodeManagerNodeActivated, error) {
   616  	event := new(NodeManagerNodeActivated)
   617  	if err := _NodeManager.contract.UnpackLog(event, "NodeActivated", log); err != nil {
   618  		return nil, err
   619  	}
   620  	return event, nil
   621  }
   622  
   623  // NodeManagerNodeApprovedIterator is returned from FilterNodeApproved and is used to iterate over the raw logs and unpacked data for NodeApproved events raised by the NodeManager contract.
   624  type NodeManagerNodeApprovedIterator struct {
   625  	Event *NodeManagerNodeApproved // Event containing the contract specifics and raw log
   626  
   627  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   628  	event    string              // Event name to use for unpacking event data
   629  
   630  	logs chan types.Log        // Log channel receiving the found contract events
   631  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   632  	done bool                  // Whether the subscription completed delivering logs
   633  	fail error                 // Occurred error to stop iteration
   634  }
   635  
   636  // Next advances the iterator to the subsequent event, returning whether there
   637  // are any more events found. In case of a retrieval or parsing error, false is
   638  // returned and Error() can be queried for the exact failure.
   639  func (it *NodeManagerNodeApprovedIterator) Next() bool {
   640  	// If the iterator failed, stop iterating
   641  	if it.fail != nil {
   642  		return false
   643  	}
   644  	// If the iterator completed, deliver directly whatever's available
   645  	if it.done {
   646  		select {
   647  		case log := <-it.logs:
   648  			it.Event = new(NodeManagerNodeApproved)
   649  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   650  				it.fail = err
   651  				return false
   652  			}
   653  			it.Event.Raw = log
   654  			return true
   655  
   656  		default:
   657  			return false
   658  		}
   659  	}
   660  	// Iterator still in progress, wait for either a data or an error event
   661  	select {
   662  	case log := <-it.logs:
   663  		it.Event = new(NodeManagerNodeApproved)
   664  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   665  			it.fail = err
   666  			return false
   667  		}
   668  		it.Event.Raw = log
   669  		return true
   670  
   671  	case err := <-it.sub.Err():
   672  		it.done = true
   673  		it.fail = err
   674  		return it.Next()
   675  	}
   676  }
   677  
   678  // Error returns any retrieval or parsing error occurred during filtering.
   679  func (it *NodeManagerNodeApprovedIterator) Error() error {
   680  	return it.fail
   681  }
   682  
   683  // Close terminates the iteration process, releasing any pending underlying
   684  // resources.
   685  func (it *NodeManagerNodeApprovedIterator) Close() error {
   686  	it.sub.Unsubscribe()
   687  	return nil
   688  }
   689  
   690  // NodeManagerNodeApproved represents a NodeApproved event raised by the NodeManager contract.
   691  type NodeManagerNodeApproved struct {
   692  	EnodeId  string
   693  	Ip       string
   694  	Port     uint16
   695  	Raftport uint16
   696  	OrgId    string
   697  	Raw      types.Log // Blockchain specific contextual infos
   698  }
   699  
   700  // FilterNodeApproved is a free log retrieval operation binding the contract event 0x9394c836a3325586270659f6aa3b9f835abca9afe7fec5abfc69760bb12bce0d.
   701  //
   702  // Solidity: event NodeApproved(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId)
   703  func (_NodeManager *NodeManagerFilterer) FilterNodeApproved(opts *bind.FilterOpts) (*NodeManagerNodeApprovedIterator, error) {
   704  
   705  	logs, sub, err := _NodeManager.contract.FilterLogs(opts, "NodeApproved")
   706  	if err != nil {
   707  		return nil, err
   708  	}
   709  	return &NodeManagerNodeApprovedIterator{contract: _NodeManager.contract, event: "NodeApproved", logs: logs, sub: sub}, nil
   710  }
   711  
   712  var NodeApprovedTopicHash = "0x9394c836a3325586270659f6aa3b9f835abca9afe7fec5abfc69760bb12bce0d"
   713  
   714  // WatchNodeApproved is a free log subscription operation binding the contract event 0x9394c836a3325586270659f6aa3b9f835abca9afe7fec5abfc69760bb12bce0d.
   715  //
   716  // Solidity: event NodeApproved(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId)
   717  func (_NodeManager *NodeManagerFilterer) WatchNodeApproved(opts *bind.WatchOpts, sink chan<- *NodeManagerNodeApproved) (event.Subscription, error) {
   718  
   719  	logs, sub, err := _NodeManager.contract.WatchLogs(opts, "NodeApproved")
   720  	if err != nil {
   721  		return nil, err
   722  	}
   723  	return event.NewSubscription(func(quit <-chan struct{}) error {
   724  		defer sub.Unsubscribe()
   725  		for {
   726  			select {
   727  			case log := <-logs:
   728  				// New log arrived, parse the event and forward to the user
   729  				event := new(NodeManagerNodeApproved)
   730  				if err := _NodeManager.contract.UnpackLog(event, "NodeApproved", log); err != nil {
   731  					return err
   732  				}
   733  				event.Raw = log
   734  
   735  				select {
   736  				case sink <- event:
   737  				case err := <-sub.Err():
   738  					return err
   739  				case <-quit:
   740  					return nil
   741  				}
   742  			case err := <-sub.Err():
   743  				return err
   744  			case <-quit:
   745  				return nil
   746  			}
   747  		}
   748  	}), nil
   749  }
   750  
   751  // ParseNodeApproved is a log parse operation binding the contract event 0x9394c836a3325586270659f6aa3b9f835abca9afe7fec5abfc69760bb12bce0d.
   752  //
   753  // Solidity: event NodeApproved(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId)
   754  func (_NodeManager *NodeManagerFilterer) ParseNodeApproved(log types.Log) (*NodeManagerNodeApproved, error) {
   755  	event := new(NodeManagerNodeApproved)
   756  	if err := _NodeManager.contract.UnpackLog(event, "NodeApproved", log); err != nil {
   757  		return nil, err
   758  	}
   759  	return event, nil
   760  }
   761  
   762  // NodeManagerNodeBlacklistedIterator is returned from FilterNodeBlacklisted and is used to iterate over the raw logs and unpacked data for NodeBlacklisted events raised by the NodeManager contract.
   763  type NodeManagerNodeBlacklistedIterator struct {
   764  	Event *NodeManagerNodeBlacklisted // Event containing the contract specifics and raw log
   765  
   766  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   767  	event    string              // Event name to use for unpacking event data
   768  
   769  	logs chan types.Log        // Log channel receiving the found contract events
   770  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   771  	done bool                  // Whether the subscription completed delivering logs
   772  	fail error                 // Occurred error to stop iteration
   773  }
   774  
   775  // Next advances the iterator to the subsequent event, returning whether there
   776  // are any more events found. In case of a retrieval or parsing error, false is
   777  // returned and Error() can be queried for the exact failure.
   778  func (it *NodeManagerNodeBlacklistedIterator) Next() bool {
   779  	// If the iterator failed, stop iterating
   780  	if it.fail != nil {
   781  		return false
   782  	}
   783  	// If the iterator completed, deliver directly whatever's available
   784  	if it.done {
   785  		select {
   786  		case log := <-it.logs:
   787  			it.Event = new(NodeManagerNodeBlacklisted)
   788  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   789  				it.fail = err
   790  				return false
   791  			}
   792  			it.Event.Raw = log
   793  			return true
   794  
   795  		default:
   796  			return false
   797  		}
   798  	}
   799  	// Iterator still in progress, wait for either a data or an error event
   800  	select {
   801  	case log := <-it.logs:
   802  		it.Event = new(NodeManagerNodeBlacklisted)
   803  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   804  			it.fail = err
   805  			return false
   806  		}
   807  		it.Event.Raw = log
   808  		return true
   809  
   810  	case err := <-it.sub.Err():
   811  		it.done = true
   812  		it.fail = err
   813  		return it.Next()
   814  	}
   815  }
   816  
   817  // Error returns any retrieval or parsing error occurred during filtering.
   818  func (it *NodeManagerNodeBlacklistedIterator) Error() error {
   819  	return it.fail
   820  }
   821  
   822  // Close terminates the iteration process, releasing any pending underlying
   823  // resources.
   824  func (it *NodeManagerNodeBlacklistedIterator) Close() error {
   825  	it.sub.Unsubscribe()
   826  	return nil
   827  }
   828  
   829  // NodeManagerNodeBlacklisted represents a NodeBlacklisted event raised by the NodeManager contract.
   830  type NodeManagerNodeBlacklisted struct {
   831  	EnodeId  string
   832  	Ip       string
   833  	Port     uint16
   834  	Raftport uint16
   835  	OrgId    string
   836  	Raw      types.Log // Blockchain specific contextual infos
   837  }
   838  
   839  // FilterNodeBlacklisted is a free log retrieval operation binding the contract event 0x25300d4d785e654bc9b7979700cfa0fdc9ace890a46841fecfce661fd2c41a33.
   840  //
   841  // Solidity: event NodeBlacklisted(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId)
   842  func (_NodeManager *NodeManagerFilterer) FilterNodeBlacklisted(opts *bind.FilterOpts) (*NodeManagerNodeBlacklistedIterator, error) {
   843  
   844  	logs, sub, err := _NodeManager.contract.FilterLogs(opts, "NodeBlacklisted")
   845  	if err != nil {
   846  		return nil, err
   847  	}
   848  	return &NodeManagerNodeBlacklistedIterator{contract: _NodeManager.contract, event: "NodeBlacklisted", logs: logs, sub: sub}, nil
   849  }
   850  
   851  var NodeBlacklistedTopicHash = "0x25300d4d785e654bc9b7979700cfa0fdc9ace890a46841fecfce661fd2c41a33"
   852  
   853  // WatchNodeBlacklisted is a free log subscription operation binding the contract event 0x25300d4d785e654bc9b7979700cfa0fdc9ace890a46841fecfce661fd2c41a33.
   854  //
   855  // Solidity: event NodeBlacklisted(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId)
   856  func (_NodeManager *NodeManagerFilterer) WatchNodeBlacklisted(opts *bind.WatchOpts, sink chan<- *NodeManagerNodeBlacklisted) (event.Subscription, error) {
   857  
   858  	logs, sub, err := _NodeManager.contract.WatchLogs(opts, "NodeBlacklisted")
   859  	if err != nil {
   860  		return nil, err
   861  	}
   862  	return event.NewSubscription(func(quit <-chan struct{}) error {
   863  		defer sub.Unsubscribe()
   864  		for {
   865  			select {
   866  			case log := <-logs:
   867  				// New log arrived, parse the event and forward to the user
   868  				event := new(NodeManagerNodeBlacklisted)
   869  				if err := _NodeManager.contract.UnpackLog(event, "NodeBlacklisted", log); err != nil {
   870  					return err
   871  				}
   872  				event.Raw = log
   873  
   874  				select {
   875  				case sink <- event:
   876  				case err := <-sub.Err():
   877  					return err
   878  				case <-quit:
   879  					return nil
   880  				}
   881  			case err := <-sub.Err():
   882  				return err
   883  			case <-quit:
   884  				return nil
   885  			}
   886  		}
   887  	}), nil
   888  }
   889  
   890  // ParseNodeBlacklisted is a log parse operation binding the contract event 0x25300d4d785e654bc9b7979700cfa0fdc9ace890a46841fecfce661fd2c41a33.
   891  //
   892  // Solidity: event NodeBlacklisted(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId)
   893  func (_NodeManager *NodeManagerFilterer) ParseNodeBlacklisted(log types.Log) (*NodeManagerNodeBlacklisted, error) {
   894  	event := new(NodeManagerNodeBlacklisted)
   895  	if err := _NodeManager.contract.UnpackLog(event, "NodeBlacklisted", log); err != nil {
   896  		return nil, err
   897  	}
   898  	return event, nil
   899  }
   900  
   901  // NodeManagerNodeDeactivatedIterator is returned from FilterNodeDeactivated and is used to iterate over the raw logs and unpacked data for NodeDeactivated events raised by the NodeManager contract.
   902  type NodeManagerNodeDeactivatedIterator struct {
   903  	Event *NodeManagerNodeDeactivated // Event containing the contract specifics and raw log
   904  
   905  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   906  	event    string              // Event name to use for unpacking event data
   907  
   908  	logs chan types.Log        // Log channel receiving the found contract events
   909  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   910  	done bool                  // Whether the subscription completed delivering logs
   911  	fail error                 // Occurred error to stop iteration
   912  }
   913  
   914  // Next advances the iterator to the subsequent event, returning whether there
   915  // are any more events found. In case of a retrieval or parsing error, false is
   916  // returned and Error() can be queried for the exact failure.
   917  func (it *NodeManagerNodeDeactivatedIterator) Next() bool {
   918  	// If the iterator failed, stop iterating
   919  	if it.fail != nil {
   920  		return false
   921  	}
   922  	// If the iterator completed, deliver directly whatever's available
   923  	if it.done {
   924  		select {
   925  		case log := <-it.logs:
   926  			it.Event = new(NodeManagerNodeDeactivated)
   927  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   928  				it.fail = err
   929  				return false
   930  			}
   931  			it.Event.Raw = log
   932  			return true
   933  
   934  		default:
   935  			return false
   936  		}
   937  	}
   938  	// Iterator still in progress, wait for either a data or an error event
   939  	select {
   940  	case log := <-it.logs:
   941  		it.Event = new(NodeManagerNodeDeactivated)
   942  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   943  			it.fail = err
   944  			return false
   945  		}
   946  		it.Event.Raw = log
   947  		return true
   948  
   949  	case err := <-it.sub.Err():
   950  		it.done = true
   951  		it.fail = err
   952  		return it.Next()
   953  	}
   954  }
   955  
   956  // Error returns any retrieval or parsing error occurred during filtering.
   957  func (it *NodeManagerNodeDeactivatedIterator) Error() error {
   958  	return it.fail
   959  }
   960  
   961  // Close terminates the iteration process, releasing any pending underlying
   962  // resources.
   963  func (it *NodeManagerNodeDeactivatedIterator) Close() error {
   964  	it.sub.Unsubscribe()
   965  	return nil
   966  }
   967  
   968  // NodeManagerNodeDeactivated represents a NodeDeactivated event raised by the NodeManager contract.
   969  type NodeManagerNodeDeactivated struct {
   970  	EnodeId  string
   971  	Ip       string
   972  	Port     uint16
   973  	Raftport uint16
   974  	OrgId    string
   975  	Raw      types.Log // Blockchain specific contextual infos
   976  }
   977  
   978  // FilterNodeDeactivated is a free log retrieval operation binding the contract event 0xf631019be71bc682c59150635d714061185232e98e60de8bdd87bbee239cc5c8.
   979  //
   980  // Solidity: event NodeDeactivated(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId)
   981  func (_NodeManager *NodeManagerFilterer) FilterNodeDeactivated(opts *bind.FilterOpts) (*NodeManagerNodeDeactivatedIterator, error) {
   982  
   983  	logs, sub, err := _NodeManager.contract.FilterLogs(opts, "NodeDeactivated")
   984  	if err != nil {
   985  		return nil, err
   986  	}
   987  	return &NodeManagerNodeDeactivatedIterator{contract: _NodeManager.contract, event: "NodeDeactivated", logs: logs, sub: sub}, nil
   988  }
   989  
   990  var NodeDeactivatedTopicHash = "0xf631019be71bc682c59150635d714061185232e98e60de8bdd87bbee239cc5c8"
   991  
   992  // WatchNodeDeactivated is a free log subscription operation binding the contract event 0xf631019be71bc682c59150635d714061185232e98e60de8bdd87bbee239cc5c8.
   993  //
   994  // Solidity: event NodeDeactivated(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId)
   995  func (_NodeManager *NodeManagerFilterer) WatchNodeDeactivated(opts *bind.WatchOpts, sink chan<- *NodeManagerNodeDeactivated) (event.Subscription, error) {
   996  
   997  	logs, sub, err := _NodeManager.contract.WatchLogs(opts, "NodeDeactivated")
   998  	if err != nil {
   999  		return nil, err
  1000  	}
  1001  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1002  		defer sub.Unsubscribe()
  1003  		for {
  1004  			select {
  1005  			case log := <-logs:
  1006  				// New log arrived, parse the event and forward to the user
  1007  				event := new(NodeManagerNodeDeactivated)
  1008  				if err := _NodeManager.contract.UnpackLog(event, "NodeDeactivated", log); err != nil {
  1009  					return err
  1010  				}
  1011  				event.Raw = log
  1012  
  1013  				select {
  1014  				case sink <- event:
  1015  				case err := <-sub.Err():
  1016  					return err
  1017  				case <-quit:
  1018  					return nil
  1019  				}
  1020  			case err := <-sub.Err():
  1021  				return err
  1022  			case <-quit:
  1023  				return nil
  1024  			}
  1025  		}
  1026  	}), nil
  1027  }
  1028  
  1029  // ParseNodeDeactivated is a log parse operation binding the contract event 0xf631019be71bc682c59150635d714061185232e98e60de8bdd87bbee239cc5c8.
  1030  //
  1031  // Solidity: event NodeDeactivated(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId)
  1032  func (_NodeManager *NodeManagerFilterer) ParseNodeDeactivated(log types.Log) (*NodeManagerNodeDeactivated, error) {
  1033  	event := new(NodeManagerNodeDeactivated)
  1034  	if err := _NodeManager.contract.UnpackLog(event, "NodeDeactivated", log); err != nil {
  1035  		return nil, err
  1036  	}
  1037  	return event, nil
  1038  }
  1039  
  1040  // NodeManagerNodeProposedIterator is returned from FilterNodeProposed and is used to iterate over the raw logs and unpacked data for NodeProposed events raised by the NodeManager contract.
  1041  type NodeManagerNodeProposedIterator struct {
  1042  	Event *NodeManagerNodeProposed // Event containing the contract specifics and raw log
  1043  
  1044  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1045  	event    string              // Event name to use for unpacking event data
  1046  
  1047  	logs chan types.Log        // Log channel receiving the found contract events
  1048  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1049  	done bool                  // Whether the subscription completed delivering logs
  1050  	fail error                 // Occurred error to stop iteration
  1051  }
  1052  
  1053  // Next advances the iterator to the subsequent event, returning whether there
  1054  // are any more events found. In case of a retrieval or parsing error, false is
  1055  // returned and Error() can be queried for the exact failure.
  1056  func (it *NodeManagerNodeProposedIterator) Next() bool {
  1057  	// If the iterator failed, stop iterating
  1058  	if it.fail != nil {
  1059  		return false
  1060  	}
  1061  	// If the iterator completed, deliver directly whatever's available
  1062  	if it.done {
  1063  		select {
  1064  		case log := <-it.logs:
  1065  			it.Event = new(NodeManagerNodeProposed)
  1066  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1067  				it.fail = err
  1068  				return false
  1069  			}
  1070  			it.Event.Raw = log
  1071  			return true
  1072  
  1073  		default:
  1074  			return false
  1075  		}
  1076  	}
  1077  	// Iterator still in progress, wait for either a data or an error event
  1078  	select {
  1079  	case log := <-it.logs:
  1080  		it.Event = new(NodeManagerNodeProposed)
  1081  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1082  			it.fail = err
  1083  			return false
  1084  		}
  1085  		it.Event.Raw = log
  1086  		return true
  1087  
  1088  	case err := <-it.sub.Err():
  1089  		it.done = true
  1090  		it.fail = err
  1091  		return it.Next()
  1092  	}
  1093  }
  1094  
  1095  // Error returns any retrieval or parsing error occurred during filtering.
  1096  func (it *NodeManagerNodeProposedIterator) Error() error {
  1097  	return it.fail
  1098  }
  1099  
  1100  // Close terminates the iteration process, releasing any pending underlying
  1101  // resources.
  1102  func (it *NodeManagerNodeProposedIterator) Close() error {
  1103  	it.sub.Unsubscribe()
  1104  	return nil
  1105  }
  1106  
  1107  // NodeManagerNodeProposed represents a NodeProposed event raised by the NodeManager contract.
  1108  type NodeManagerNodeProposed struct {
  1109  	EnodeId  string
  1110  	Ip       string
  1111  	Port     uint16
  1112  	Raftport uint16
  1113  	OrgId    string
  1114  	Raw      types.Log // Blockchain specific contextual infos
  1115  }
  1116  
  1117  // FilterNodeProposed is a free log retrieval operation binding the contract event 0xf9bad9f8a2dccc52fad61273a7fd673335b420319506c19b87df9ce7a19732da.
  1118  //
  1119  // Solidity: event NodeProposed(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId)
  1120  func (_NodeManager *NodeManagerFilterer) FilterNodeProposed(opts *bind.FilterOpts) (*NodeManagerNodeProposedIterator, error) {
  1121  
  1122  	logs, sub, err := _NodeManager.contract.FilterLogs(opts, "NodeProposed")
  1123  	if err != nil {
  1124  		return nil, err
  1125  	}
  1126  	return &NodeManagerNodeProposedIterator{contract: _NodeManager.contract, event: "NodeProposed", logs: logs, sub: sub}, nil
  1127  }
  1128  
  1129  var NodeProposedTopicHash = "0xf9bad9f8a2dccc52fad61273a7fd673335b420319506c19b87df9ce7a19732da"
  1130  
  1131  // WatchNodeProposed is a free log subscription operation binding the contract event 0xf9bad9f8a2dccc52fad61273a7fd673335b420319506c19b87df9ce7a19732da.
  1132  //
  1133  // Solidity: event NodeProposed(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId)
  1134  func (_NodeManager *NodeManagerFilterer) WatchNodeProposed(opts *bind.WatchOpts, sink chan<- *NodeManagerNodeProposed) (event.Subscription, error) {
  1135  
  1136  	logs, sub, err := _NodeManager.contract.WatchLogs(opts, "NodeProposed")
  1137  	if err != nil {
  1138  		return nil, err
  1139  	}
  1140  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1141  		defer sub.Unsubscribe()
  1142  		for {
  1143  			select {
  1144  			case log := <-logs:
  1145  				// New log arrived, parse the event and forward to the user
  1146  				event := new(NodeManagerNodeProposed)
  1147  				if err := _NodeManager.contract.UnpackLog(event, "NodeProposed", log); err != nil {
  1148  					return err
  1149  				}
  1150  				event.Raw = log
  1151  
  1152  				select {
  1153  				case sink <- event:
  1154  				case err := <-sub.Err():
  1155  					return err
  1156  				case <-quit:
  1157  					return nil
  1158  				}
  1159  			case err := <-sub.Err():
  1160  				return err
  1161  			case <-quit:
  1162  				return nil
  1163  			}
  1164  		}
  1165  	}), nil
  1166  }
  1167  
  1168  // ParseNodeProposed is a log parse operation binding the contract event 0xf9bad9f8a2dccc52fad61273a7fd673335b420319506c19b87df9ce7a19732da.
  1169  //
  1170  // Solidity: event NodeProposed(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId)
  1171  func (_NodeManager *NodeManagerFilterer) ParseNodeProposed(log types.Log) (*NodeManagerNodeProposed, error) {
  1172  	event := new(NodeManagerNodeProposed)
  1173  	if err := _NodeManager.contract.UnpackLog(event, "NodeProposed", log); err != nil {
  1174  		return nil, err
  1175  	}
  1176  	return event, nil
  1177  }
  1178  
  1179  // NodeManagerNodeRecoveryCompletedIterator is returned from FilterNodeRecoveryCompleted and is used to iterate over the raw logs and unpacked data for NodeRecoveryCompleted events raised by the NodeManager contract.
  1180  type NodeManagerNodeRecoveryCompletedIterator struct {
  1181  	Event *NodeManagerNodeRecoveryCompleted // Event containing the contract specifics and raw log
  1182  
  1183  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1184  	event    string              // Event name to use for unpacking event data
  1185  
  1186  	logs chan types.Log        // Log channel receiving the found contract events
  1187  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1188  	done bool                  // Whether the subscription completed delivering logs
  1189  	fail error                 // Occurred error to stop iteration
  1190  }
  1191  
  1192  // Next advances the iterator to the subsequent event, returning whether there
  1193  // are any more events found. In case of a retrieval or parsing error, false is
  1194  // returned and Error() can be queried for the exact failure.
  1195  func (it *NodeManagerNodeRecoveryCompletedIterator) Next() bool {
  1196  	// If the iterator failed, stop iterating
  1197  	if it.fail != nil {
  1198  		return false
  1199  	}
  1200  	// If the iterator completed, deliver directly whatever's available
  1201  	if it.done {
  1202  		select {
  1203  		case log := <-it.logs:
  1204  			it.Event = new(NodeManagerNodeRecoveryCompleted)
  1205  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1206  				it.fail = err
  1207  				return false
  1208  			}
  1209  			it.Event.Raw = log
  1210  			return true
  1211  
  1212  		default:
  1213  			return false
  1214  		}
  1215  	}
  1216  	// Iterator still in progress, wait for either a data or an error event
  1217  	select {
  1218  	case log := <-it.logs:
  1219  		it.Event = new(NodeManagerNodeRecoveryCompleted)
  1220  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1221  			it.fail = err
  1222  			return false
  1223  		}
  1224  		it.Event.Raw = log
  1225  		return true
  1226  
  1227  	case err := <-it.sub.Err():
  1228  		it.done = true
  1229  		it.fail = err
  1230  		return it.Next()
  1231  	}
  1232  }
  1233  
  1234  // Error returns any retrieval or parsing error occurred during filtering.
  1235  func (it *NodeManagerNodeRecoveryCompletedIterator) Error() error {
  1236  	return it.fail
  1237  }
  1238  
  1239  // Close terminates the iteration process, releasing any pending underlying
  1240  // resources.
  1241  func (it *NodeManagerNodeRecoveryCompletedIterator) Close() error {
  1242  	it.sub.Unsubscribe()
  1243  	return nil
  1244  }
  1245  
  1246  // NodeManagerNodeRecoveryCompleted represents a NodeRecoveryCompleted event raised by the NodeManager contract.
  1247  type NodeManagerNodeRecoveryCompleted struct {
  1248  	EnodeId  string
  1249  	Ip       string
  1250  	Port     uint16
  1251  	Raftport uint16
  1252  	OrgId    string
  1253  	Raw      types.Log // Blockchain specific contextual infos
  1254  }
  1255  
  1256  // FilterNodeRecoveryCompleted is a free log retrieval operation binding the contract event 0x60aac8c36efdaabf125dc9ec2124bde8b3ceafe5c8b4fc8063fc4ac9017eb0be.
  1257  //
  1258  // Solidity: event NodeRecoveryCompleted(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId)
  1259  func (_NodeManager *NodeManagerFilterer) FilterNodeRecoveryCompleted(opts *bind.FilterOpts) (*NodeManagerNodeRecoveryCompletedIterator, error) {
  1260  
  1261  	logs, sub, err := _NodeManager.contract.FilterLogs(opts, "NodeRecoveryCompleted")
  1262  	if err != nil {
  1263  		return nil, err
  1264  	}
  1265  	return &NodeManagerNodeRecoveryCompletedIterator{contract: _NodeManager.contract, event: "NodeRecoveryCompleted", logs: logs, sub: sub}, nil
  1266  }
  1267  
  1268  var NodeRecoveryCompletedTopicHash = "0x60aac8c36efdaabf125dc9ec2124bde8b3ceafe5c8b4fc8063fc4ac9017eb0be"
  1269  
  1270  // WatchNodeRecoveryCompleted is a free log subscription operation binding the contract event 0x60aac8c36efdaabf125dc9ec2124bde8b3ceafe5c8b4fc8063fc4ac9017eb0be.
  1271  //
  1272  // Solidity: event NodeRecoveryCompleted(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId)
  1273  func (_NodeManager *NodeManagerFilterer) WatchNodeRecoveryCompleted(opts *bind.WatchOpts, sink chan<- *NodeManagerNodeRecoveryCompleted) (event.Subscription, error) {
  1274  
  1275  	logs, sub, err := _NodeManager.contract.WatchLogs(opts, "NodeRecoveryCompleted")
  1276  	if err != nil {
  1277  		return nil, err
  1278  	}
  1279  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1280  		defer sub.Unsubscribe()
  1281  		for {
  1282  			select {
  1283  			case log := <-logs:
  1284  				// New log arrived, parse the event and forward to the user
  1285  				event := new(NodeManagerNodeRecoveryCompleted)
  1286  				if err := _NodeManager.contract.UnpackLog(event, "NodeRecoveryCompleted", log); err != nil {
  1287  					return err
  1288  				}
  1289  				event.Raw = log
  1290  
  1291  				select {
  1292  				case sink <- event:
  1293  				case err := <-sub.Err():
  1294  					return err
  1295  				case <-quit:
  1296  					return nil
  1297  				}
  1298  			case err := <-sub.Err():
  1299  				return err
  1300  			case <-quit:
  1301  				return nil
  1302  			}
  1303  		}
  1304  	}), nil
  1305  }
  1306  
  1307  // ParseNodeRecoveryCompleted is a log parse operation binding the contract event 0x60aac8c36efdaabf125dc9ec2124bde8b3ceafe5c8b4fc8063fc4ac9017eb0be.
  1308  //
  1309  // Solidity: event NodeRecoveryCompleted(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId)
  1310  func (_NodeManager *NodeManagerFilterer) ParseNodeRecoveryCompleted(log types.Log) (*NodeManagerNodeRecoveryCompleted, error) {
  1311  	event := new(NodeManagerNodeRecoveryCompleted)
  1312  	if err := _NodeManager.contract.UnpackLog(event, "NodeRecoveryCompleted", log); err != nil {
  1313  		return nil, err
  1314  	}
  1315  	return event, nil
  1316  }
  1317  
  1318  // NodeManagerNodeRecoveryInitiatedIterator is returned from FilterNodeRecoveryInitiated and is used to iterate over the raw logs and unpacked data for NodeRecoveryInitiated events raised by the NodeManager contract.
  1319  type NodeManagerNodeRecoveryInitiatedIterator struct {
  1320  	Event *NodeManagerNodeRecoveryInitiated // Event containing the contract specifics and raw log
  1321  
  1322  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1323  	event    string              // Event name to use for unpacking event data
  1324  
  1325  	logs chan types.Log        // Log channel receiving the found contract events
  1326  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1327  	done bool                  // Whether the subscription completed delivering logs
  1328  	fail error                 // Occurred error to stop iteration
  1329  }
  1330  
  1331  // Next advances the iterator to the subsequent event, returning whether there
  1332  // are any more events found. In case of a retrieval or parsing error, false is
  1333  // returned and Error() can be queried for the exact failure.
  1334  func (it *NodeManagerNodeRecoveryInitiatedIterator) Next() bool {
  1335  	// If the iterator failed, stop iterating
  1336  	if it.fail != nil {
  1337  		return false
  1338  	}
  1339  	// If the iterator completed, deliver directly whatever's available
  1340  	if it.done {
  1341  		select {
  1342  		case log := <-it.logs:
  1343  			it.Event = new(NodeManagerNodeRecoveryInitiated)
  1344  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1345  				it.fail = err
  1346  				return false
  1347  			}
  1348  			it.Event.Raw = log
  1349  			return true
  1350  
  1351  		default:
  1352  			return false
  1353  		}
  1354  	}
  1355  	// Iterator still in progress, wait for either a data or an error event
  1356  	select {
  1357  	case log := <-it.logs:
  1358  		it.Event = new(NodeManagerNodeRecoveryInitiated)
  1359  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1360  			it.fail = err
  1361  			return false
  1362  		}
  1363  		it.Event.Raw = log
  1364  		return true
  1365  
  1366  	case err := <-it.sub.Err():
  1367  		it.done = true
  1368  		it.fail = err
  1369  		return it.Next()
  1370  	}
  1371  }
  1372  
  1373  // Error returns any retrieval or parsing error occurred during filtering.
  1374  func (it *NodeManagerNodeRecoveryInitiatedIterator) Error() error {
  1375  	return it.fail
  1376  }
  1377  
  1378  // Close terminates the iteration process, releasing any pending underlying
  1379  // resources.
  1380  func (it *NodeManagerNodeRecoveryInitiatedIterator) Close() error {
  1381  	it.sub.Unsubscribe()
  1382  	return nil
  1383  }
  1384  
  1385  // NodeManagerNodeRecoveryInitiated represents a NodeRecoveryInitiated event raised by the NodeManager contract.
  1386  type NodeManagerNodeRecoveryInitiated struct {
  1387  	EnodeId  string
  1388  	Ip       string
  1389  	Port     uint16
  1390  	Raftport uint16
  1391  	OrgId    string
  1392  	Raw      types.Log // Blockchain specific contextual infos
  1393  }
  1394  
  1395  // FilterNodeRecoveryInitiated is a free log retrieval operation binding the contract event 0x72779f66ea90e28bae76fbfe03eaef5ae01699976c7493f93186ab9560ccfaa4.
  1396  //
  1397  // Solidity: event NodeRecoveryInitiated(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId)
  1398  func (_NodeManager *NodeManagerFilterer) FilterNodeRecoveryInitiated(opts *bind.FilterOpts) (*NodeManagerNodeRecoveryInitiatedIterator, error) {
  1399  
  1400  	logs, sub, err := _NodeManager.contract.FilterLogs(opts, "NodeRecoveryInitiated")
  1401  	if err != nil {
  1402  		return nil, err
  1403  	}
  1404  	return &NodeManagerNodeRecoveryInitiatedIterator{contract: _NodeManager.contract, event: "NodeRecoveryInitiated", logs: logs, sub: sub}, nil
  1405  }
  1406  
  1407  var NodeRecoveryInitiatedTopicHash = "0x72779f66ea90e28bae76fbfe03eaef5ae01699976c7493f93186ab9560ccfaa4"
  1408  
  1409  // WatchNodeRecoveryInitiated is a free log subscription operation binding the contract event 0x72779f66ea90e28bae76fbfe03eaef5ae01699976c7493f93186ab9560ccfaa4.
  1410  //
  1411  // Solidity: event NodeRecoveryInitiated(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId)
  1412  func (_NodeManager *NodeManagerFilterer) WatchNodeRecoveryInitiated(opts *bind.WatchOpts, sink chan<- *NodeManagerNodeRecoveryInitiated) (event.Subscription, error) {
  1413  
  1414  	logs, sub, err := _NodeManager.contract.WatchLogs(opts, "NodeRecoveryInitiated")
  1415  	if err != nil {
  1416  		return nil, err
  1417  	}
  1418  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1419  		defer sub.Unsubscribe()
  1420  		for {
  1421  			select {
  1422  			case log := <-logs:
  1423  				// New log arrived, parse the event and forward to the user
  1424  				event := new(NodeManagerNodeRecoveryInitiated)
  1425  				if err := _NodeManager.contract.UnpackLog(event, "NodeRecoveryInitiated", log); err != nil {
  1426  					return err
  1427  				}
  1428  				event.Raw = log
  1429  
  1430  				select {
  1431  				case sink <- event:
  1432  				case err := <-sub.Err():
  1433  					return err
  1434  				case <-quit:
  1435  					return nil
  1436  				}
  1437  			case err := <-sub.Err():
  1438  				return err
  1439  			case <-quit:
  1440  				return nil
  1441  			}
  1442  		}
  1443  	}), nil
  1444  }
  1445  
  1446  // ParseNodeRecoveryInitiated is a log parse operation binding the contract event 0x72779f66ea90e28bae76fbfe03eaef5ae01699976c7493f93186ab9560ccfaa4.
  1447  //
  1448  // Solidity: event NodeRecoveryInitiated(string _enodeId, string _ip, uint16 _port, uint16 _raftport, string _orgId)
  1449  func (_NodeManager *NodeManagerFilterer) ParseNodeRecoveryInitiated(log types.Log) (*NodeManagerNodeRecoveryInitiated, error) {
  1450  	event := new(NodeManagerNodeRecoveryInitiated)
  1451  	if err := _NodeManager.contract.UnpackLog(event, "NodeRecoveryInitiated", log); err != nil {
  1452  		return nil, err
  1453  	}
  1454  	return event, nil
  1455  }