func (_Extension *ExtensionSession) GetNewCurrentVariables() (struct {
	Challenge  [32]byte
	RequestIds [5]*big.Int
	Diff       *big.Int
	Tip        *big.Int
}, error) {
	return _Extension.Contract.GetNewCurrentVariables(&_Extension.CallOpts)
}
GetNewCurrentVariables is a free data retrieval call binding the contract method 0x4049f198.

Solidity: function getNewCurrentVariables() view returns(bytes32 _challenge, uint256[5] _requestIds, uint256 _diff, uint256 _tip)
package tellor
import (
	"math/big"
	"strings"
	ethereum "github.com/ethereum/go-ethereum"
	"github.com/ethereum/go-ethereum/accounts/abi"
	"github.com/ethereum/go-ethereum/accounts/abi/bind"
	"github.com/ethereum/go-ethereum/common"
	"github.com/ethereum/go-ethereum/core/types"
	"github.com/ethereum/go-ethereum/event"
)
var (
	_ = big.NewInt
	_ = strings.NewReader
	_ = ethereum.NotFound
	_ = bind.Bind
	_ = common.Big1
	_ = types.BloomLookup
	_ = event.NewSubscription
)
const ExtensionABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_disputeID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"_result\",\"type\":\"int256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_reportedMiner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_reportingParty\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_active\",\"type\":\"bool\"}],\"name\":\"DisputeVoteTallied\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"NewStake\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"StakeWithdrawRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"StakeWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_allowances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"addresses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"balances\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"fromBlock\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"bytesVars\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"currentMiners\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"miner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_challenge\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_miner\",\"type\":\"address\"}],\"name\":\"didMine\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_disputeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"didVote\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"disputeIdByDisputeHash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"disputesById\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"int256\",\"name\":\"tally\",\"type\":\"int256\"},{\"internalType\":\"bool\",\"name\":\"executed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"disputeVotePassed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPropFork\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"reportedMiner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"reportingParty\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposedForkAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_data\",\"type\":\"bytes32\"}],\"name\":\"getAddressVars\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_disputeId\",\"type\":\"uint256\"}],\"name\":\"getAllDisputeVars\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[9]\",\"name\":\"\",\"type\":\"uint256[9]\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"getDisputeIdByDisputeHash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_disputeId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_data\",\"type\":\"bytes32\"}],\"name\":\"getDisputeUintVars\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastNewValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"}],\"name\":\"getLastNewValueById\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[51]\",\"name\":\"data\",\"type\":\"uint256[51]\"}],\"name\":\"getMax5\",\"outputs\":[{\"internalType\":\"uint256[5]\",\"name\":\"max\",\"type\":\"uint256[5]\"},{\"internalType\":\"uint256[5]\",\"name\":\"maxIndex\",\"type\":\"uint256[5]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"getMinedBlockNum\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"getMinersByRequestIdAndTimestamp\",\"outputs\":[{\"internalType\":\"address[5]\",\"name\":\"\",\"type\":\"address[5]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNewCurrentVariables\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"_challenge\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[5]\",\"name\":\"_requestIds\",\"type\":\"uint256[5]\"},{\"internalType\":\"uint256\",\"name\":\"_diff\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_tip\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"}],\"name\":\"getNewValueCountbyRequestId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNewVariablesOnDeck\",\"outputs\":[{\"internalType\":\"uint256[5]\",\"name\":\"idsOnDeck\",\"type\":\"uint256[5]\"},{\"internalType\":\"uint256[5]\",\"name\":\"tipsOnDeck\",\"type\":\"uint256[5]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getRequestIdByRequestQIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"getRequestIdByTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRequestQ\",\"outputs\":[{\"internalType\":\"uint256[51]\",\"name\":\"\",\"type\":\"uint256[51]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_data\",\"type\":\"bytes32\"}],\"name\":\"getRequestUintVars\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"}],\"name\":\"getRequestVars\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_staker\",\"type\":\"address\"}],\"name\":\"getStakerInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"getSubmissionsByTimestamp\",\"outputs\":[{\"internalType\":\"uint256[5]\",\"name\":\"\",\"type\":\"uint256[5]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getTimestampbyRequestIDandIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTopRequestIDs\",\"outputs\":[{\"internalType\":\"uint256[5]\",\"name\":\"_requestIds\",\"type\":\"uint256[5]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_data\",\"type\":\"bytes32\"}],\"name\":\"getUintVar\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"isInDispute\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"migrated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"minersByChallenge\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"newValueTimestamps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"requestIdByQueryHash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requestStakingWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"retrieveData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_disputeId\",\"type\":\"uint256\"}],\"name\":\"tallyVotes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"uints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateMinDisputeFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
var ExtensionFuncSigs = map[string]string{
	"024c2ddd": "_allowances(address,address)",
	"699f200f": "addresses(bytes32)",
	"cbf1304d": "balances(address,uint256)",
	"62dd1d2a": "bytesVars(bytes32)",
	"1fd22364": "currentMiners(uint256)",
	"313ce567": "decimals()",
	"0d2d76a2": "depositStake()",
	"63bb82ad": "didMine(bytes32,address)",
	"a7c438bc": "didVote(uint256,address)",
	"d01f4d9e": "disputeIdByDisputeHash(bytes32)",
	"db085beb": "disputesById(uint256)",
	"133bee5e": "getAddressVars(bytes32)",
	"af0b1327": "getAllDisputeVars(uint256)",
	"da379941": "getDisputeIdByDisputeHash(bytes32)",
	"7f6fd5d9": "getDisputeUintVars(uint256,bytes32)",
	"fc7cf0a0": "getLastNewValue()",
	"3180f8df": "getLastNewValueById(uint256)",
	"99830e32": "getMax5(uint256[51])",
	"c775b542": "getMinedBlockNum(uint256,uint256)",
	"69026d63": "getMinersByRequestIdAndTimestamp(uint256,uint256)",
	"4049f198": "getNewCurrentVariables()",
	"46eee1c4": "getNewValueCountbyRequestId(uint256)",
	"9a7077ab": "getNewVariablesOnDeck()",
	"6173c0b8": "getRequestIdByRequestQIndex(uint256)",
	"0f0b424d": "getRequestIdByTimestamp(uint256)",
	"b5413029": "getRequestQ()",
	"e0ae93c1": "getRequestUintVars(uint256,bytes32)",
	"e1eee6d6": "getRequestVars(uint256)",
	"733bdef0": "getStakerInfo(address)",
	"11c98512": "getSubmissionsByTimestamp(uint256,uint256)",
	"77fbb663": "getTimestampbyRequestIDandIndex(uint256,uint256)",
	"fe1cd15d": "getTopRequestIDs()",
	"612c8f7f": "getUintVar(bytes32)",
	"3df0777b": "isInDispute(uint256,uint256)",
	"4ba0a5ee": "migrated(address)",
	"48b18e54": "minersByChallenge(bytes32,address)",
	"06fdde03": "name()",
	"438c0aa3": "newValueTimestamps(uint256)",
	"5700242c": "requestIdByQueryHash(bytes32)",
	"28449c3a": "requestStakingWithdraw()",
	"93fa4915": "retrieveData(uint256,uint256)",
	"95d89b41": "symbol()",
	"4d318b0e": "tallyVotes(uint256)",
	"18160ddd": "totalSupply()",
	"b59e14d4": "uints(bytes32)",
	"90e5b235": "updateMinDisputeFee()",
	"bed9d861": "withdrawStake()",
}
var ExtensionBin = "0x608060405234801561001057600080fd5b50611f6f806100206000396000f3fe608060405234801561001057600080fd5b50600436106102955760003560e01c806369026d6311610167578063b5413029116100ce578063da37994111610087578063da379941146109fc578063db085beb14610a19578063e0ae93c114610a86578063e1eee6d614610aa9578063fc7cf0a014610ac6578063fe1cd15d14610ace57610295565b8063b54130291461091e578063b59e14d41461093c578063bed9d86114610959578063c775b54214610961578063cbf1304d14610984578063d01f4d9e146109df57610295565b806393fa49151161012057806393fa49151461075657806395d89b411461077957806399830e32146107815780639a7077ab14610839578063a7c438bc14610841578063af0b13271461086d57610295565b806369026d6314610689578063699f200f146106ac578063733bdef0146106c957806377fbb663146107085780637f6fd5d91461072b57806390e5b2351461074e57610295565b80633df0777b1161020b5780634d318b0e116101c45780634d318b0e146105cc5780635700242c146105e9578063612c8f7f146106065780636173c0b81461062357806362dd1d2a1461064057806363bb82ad1461065d57610295565b80633df0777b146104b45780634049f198146104eb578063438c0aa31461054057806346eee1c41461055d57806348b18e541461057a5780634ba0a5ee146105a657610295565b8063133bee5e1161025d578063133bee5e146103d957806318160ddd146104125780631fd223641461041a57806328449c3a14610458578063313ce567146104605780633180f8df1461047e57610295565b8063024c2ddd1461029a57806306fdde03146102da5780630d2d76a2146103575780630f0b424d1461036157806311c985121461037e575b600080fd5b6102c8600480360360408110156102b057600080fd5b506001600160a01b0381358116916020013516610ad6565b60408051918252519081900360200190f35b6102e2610af3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561031c578181015183820152602001610304565b50505050905090810190601f1680156103495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61035f610b1c565b005b6102c86004803603602081101561037757600080fd5b5035610b2f565b6103a16004803603604081101561039457600080fd5b5080359060200135610b41565b604051808260a080838360005b838110156103c65781810151838201526020016103ae565b5050505090500191505060405180910390f35b6103f6600480360360208110156103ef57600080fd5b5035610b98565b604080516001600160a01b039092168252519081900360200190f35b6102c8610bb3565b6104376004803603602081101561043057600080fd5b5035610c01565b604080519283526001600160a01b0390911660208301528051918290030190f35b61035f610c2c565b610468610d20565b6040805160ff9092168252519081900360200190f35b61049b6004803603602081101561049457600080fd5b5035610d25565b6040805192835290151560208301528051918290030190f35b6104d7600480360360408110156104ca57600080fd5b5080359060200135610d7f565b604080519115158252519081900360200190f35b6104f3610da3565b604051848152602081018460a080838360005b8381101561051e578181015183820152602001610506565b5050505090500183815260200182815260200194505050505060405180910390f35b6102c86004803603602081101561055657600080fd5b5035610e83565b6102c86004803603602081101561057357600080fd5b5035610ea4565b6104d76004803603604081101561059057600080fd5b50803590602001356001600160a01b0316610eb6565b6104d7600480360360208110156105bc57600080fd5b50356001600160a01b0316610ed6565b61035f600480360360208110156105e257600080fd5b5035610eeb565b6102c8600480360360208110156105ff57600080fd5b503561113c565b6102c86004803603602081101561061c57600080fd5b503561114e565b6102c86004803603602081101561063957600080fd5b5035611160565b6102c86004803603602081101561065657600080fd5b50356111cb565b6104d76004803603604081101561067357600080fd5b50803590602001356001600160a01b03166111dd565b6103a16004803603604081101561069f57600080fd5b5080359060200135611208565b6103f6600480360360208110156106c257600080fd5b503561126b565b6106ef600480360360208110156106df57600080fd5b50356001600160a01b0316611286565b6040805192835260208301919091528051918290030190f35b6102c86004803603604081101561071e57600080fd5b50803590602001356112a9565b6102c86004803603604081101561074157600080fd5b50803590602001356112d6565b61035f6112f7565b6102c86004803603604081101561076c57600080fd5b5080359060200135611411565b6102e2611432565b6107d5600480360361066081101561079857600080fd5b81019080806106600190603380602002604051908101604052809291908260336020028082843760009201919091525091945061144f9350505050565b604051808360a080838360005b838110156107fa5781810151838201526020016107e2565b5050505090500182600560200280838360005b8381101561082557818101518382015260200161080d565b505050509050019250505060405180910390f35b6107d56115a3565b6104d76004803603604081101561085757600080fd5b50803590602001356001600160a01b0316611642565b61088a6004803603602081101561088357600080fd5b5035611671565b604051808a8152602001891515815260200188151581526020018715158152602001866001600160a01b03168152602001856001600160a01b03168152602001846001600160a01b0316815260200183600960200280838360005b838110156108fd5781810151838201526020016108e5565b50505050905001828152602001995050505050505050505060405180910390f35b61092661189c565b60405181518152808261066080838360206103ae565b6102c86004803603602081101561095257600080fd5b50356118d8565b61035f6118ea565b6102c86004803603604081101561097757600080fd5b50803590602001356119c4565b6109b06004803603604081101561099a57600080fd5b506001600160a01b0381351690602001356119e5565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6102c8600480360360208110156109f557600080fd5b5035611a28565b6102c860048036036020811015610a1257600080fd5b5035611a3a565b610a3660048036036020811015610a2f57600080fd5b5035611a4c565b60408051988952602089019790975294151587870152921515606087015290151560808601526001600160a01b0390811660a086015290811660c08501521660e083015251908190036101000190f35b6102c860048036036040811015610a9c57600080fd5b5080359060200135611aa8565b6106ef60048036036020811015610abf57600080fd5b5035611ac9565b61049b611b31565b6103a1611ba2565b604a60209081526000928352604080842090915290825290205481565b60408051808201909152600f81526e54656c6c6f7220547269627574657360881b602082015290565b610b2533611c87565b610b2d6112f7565b565b60009081526034602052604090205490565b610b49611e77565b600083815260456020908152604080832085845260060190915290819020815160a08101928390529160059082845b815481526020019060010190808311610b78575050505050905092915050565b6000908152604760205260409020546001600160a01b031690565b7fe6148e7230ca038d456350e69a91b66968b222bfac9ebfbea6ff0a1fb738016060005260466020527ffffeead1ec15181fd57b4590d95e0c076bccb59e311315e8b38f23c710aa7c3e5490565b603a8160058110610c1157600080fd5b6002020180546001909101549091506001600160a01b031682565b3360009081526044602052604090208054600114610c87576040805162461bcd60e51b8152602060048201526013602482015272135a5b995c881a5cc81b9bdd081cdd185ad959606a1b604482015290519081900360640190fd5b60028155620151804206420360018201557f10c168823622203e4057b65015ff4d95b4c650b308918e8c92dc32ab5a0a034b60005260466020527fa5ae3e2b97d73fb849ea855d27f073b72815b38452d976bd57e4a157827dadd38054600019019055610cf26112f7565b60405133907f453865710d0cb4b14ad25de371c860da196368895daa9662e5087711d14daecf90600090a250565b601290565b6000818152604560205260408120805482919015610d71578054610d6590859083906000198101908110610d5557fe5b9060005260206000200154611411565b60019250925050610d7a565b60008092509250505b915091565b60009182526045602090815260408084209284526004909201905290205460ff1690565b6000610dad611e77565b60008060005b6005811015610de757603a8160058110610dc957fe5b6002020154848260058110610dda57fe5b6020020152600101610db3565b50507f52cb9007c7c6068f8ef37039d4f232cbf5a28ff8d93a5983c4c0c27cd2f9bc0d5460466020527f5bccd7373734898281f858d7562320d2cdfc0b17bd72f779686937174d150025547f09659d32f99e50ac728058418d38174fe83a137c455ff1847e6fb8e15f78f77a6000527f38b16d06a20ab673b01c748aff938df6a38f81640035f4ce8bd9abb03aae5b7254919450915090919293565b60338181548110610e9357600080fd5b600091825260209091200154905081565b60009081526045602052604090205490565b603960209081526000928352604080842090915290825290205460ff1681565b604b6020526000908152604090205460ff1681565b6000818152603660205260409020600281015460ff1615610f3d5760405162461bcd60e51b8152600401808060200182810382526021815260200180611f196021913960400191505060405180910390fd5b7f46f7d53798d31923f6952572c6a19ad2d1a8238d26649c2f3493a6d69e425d286000908152600582016020526040902054421015610fc3576040805162461bcd60e51b815260206004820152601f60248201527f54696d6520666f7220766f74696e6720686176656e277420656c617073656400604482015290519081900360640190fd5b60038101546001600160a01b0316611022576040805162461bcd60e51b815260206004820152601c60248201527f7265706f7274696e672050617274792069732061646472657373203000000000604482015290519081900360640190fd5b600181015460008113156110425760028201805461ff0019166101001790555b600282015462010000900460ff16611088576002820154630100000090046001600160a01b0316600090815260446020526040902080546003141561108657600481555b505b7ff9e1ae10923bfc79f52e309baf8c7699edb821f91ef5b5bd07be29545917b3a6600090815260058301602090815260409182902042905560028401805460ff191660011790819055600385015483518581526001600160a01b0391821693810193909352610100820460ff1615158385015292516301000000909104929092169185917f21459c2f5447ebcf83a7f0a238c32c71076faef0d12295e771c0cb1e10434739919081900360600190a3505050565b60376020526000908152604090205481565b60009081526046602052604090205490565b600060328211156111b8576040805162461bcd60e51b815260206004820152601a60248201527f526571756573745120696e6465782069732061626f7665203530000000000000604482015290519081900360640190fd5b5060009081526035602052604090205490565b60486020526000908152604090205481565b60009182526039602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611210611e77565b6000838152604560209081526040808320858452600590810190925291829020825160a08101938490529290919082845b81546001600160a01b03168152600190910190602001808311611241575050505050905092915050565b6047602052600090815260409020546001600160a01b031681565b6001600160a01b0316600090815260446020526040902080546001909101549091565b60008281526045602052604081208054839081106112c357fe5b9060005260206000200154905092915050565b60009182526036602090815260408084209284526005909201905290205490565b60466020527f167af83a0768d27540775cfef6d996eb63f8a61fcdfb26e654c18fb50960e3be547f2e2f0a18eb55ef91e37921b3810d7feeef7a855ddc7f4f4249ef03d7b887ae31547f10c168823622203e4057b65015ff4d95b4c650b308918e8c92dc32ab5a0a034b6000527fa5ae3e2b97d73fb849ea855d27f073b72815b38452d976bd57e4a157827dadd3546113c29067d02ab486cedc0000906103e89084906113a5908290611e50565b6103e8028602816113b257fe5b04816113ba57fe5b048403611e68565b7f675d2171f68d6f5545d54fb9b1fb61a0e6897e6188ca1cd664e7c9530d91ecfc60005260466020527f3e5522f19747f0f285b96ded572ac4128c3a764aea9f44058dc0afc9dda44986555050565b60009182526045602090815260408084209284526003909201905290205490565b6040805180820190915260038152622a292160e91b602082015290565b611457611e77565b61145f611e77565b60208301516000805b60058110156114e25785816001016033811061148057fe5b602002015185826005811061149157fe5b6020020152600181018482600581106114a657fe5b6020020152828582600581106114b857fe5b602002015110156114da578481600581106114cf57fe5b602002015192508091505b600101611468565b5060065b603381101561159b57828682603381106114fc57fe5b602002015111156115935785816033811061151357fe5b602002015185836005811061152457fe5b60200201528084836005811061153657fe5b602002015285816033811061154757fe5b6020020151925060005b6005811015611591578386826005811061156757fe5b602002015110156115895785816005811061157e57fe5b602002015193508092505b600101611551565b505b6001016114e6565b505050915091565b6115ab611e77565b6115b3611e77565b6115bb611ba2565b915060005b600581101561163d57604560008483600581106115d957fe5b6020020151815260200190815260200160002060010160007f1590276b7f31dd8e2a06f9a92867333eeb3eddbc91e73b9833e3e55d8e34f77d60001b81526020019081526020016000205482826005811061163057fe5b60200201526001016115c0565b509091565b60008281526036602090815260408083206001600160a01b038516845260060190915290205460ff1692915050565b6000806000806000806000611684611e95565b5050506000958652505060366020908152604080862080546002820154600383015460048401548551610120810187527f9f47a2659c3d32b749ae717d975e7962959890862423c4318cf86e4ec220291f8c5260058601808952878d205482527f2f9328a9c75282bec25bb04befad06926366736e0030c985108445fa728335e58d52808952878d2054828a01527f9147231ab14efb72c38117f68521ddef8de64f092c18c69dbfb602ffc4de7f478d52808952878d2054828901527f46f7d53798d31923f6952572c6a19ad2d1a8238d26649c2f3493a6d69e425d288d52808952878d205460608301527f1da378694063870452ce03b189f48e04c1aa026348e74e6c86e10738514ad2c48d52808952878d205460808301527f4b4cefd5ced7569ef0d091282b4bca9c52a034c56471a6061afd1bf307a2de7c8d52808952878d205460a08301527f6de96ee4d33a0617f40a846309c8759048857f51b9d59a12d3c3786d4778883d8d52808952878d205460c08301527f30e85ae205656781c1a951cba9f9f53f884833c049d377a2a7046eb5e6d14b268d52808952878d205460e08301527f1da95f11543c9b03927178e07951795dfc95c7501a9d1cf00e13414ca33bc4098d52909752949099205461010080870191909152600190930154919960ff8083169a948304811699506201000083041697506001600160a01b036301000000909204821696509281169493169291565b6118a4611eb4565b604080516106608101918290529060009060339082845b8154815260200190600101908083116118bb575050505050905090565b60466020526000908152604090205481565b336000908152604460205260409020600181015462093a80906201518042064203031015611954576040805162461bcd60e51b8152602060048201526012602482015271372064617973206469646e2774207061737360701b604482015290519081900360640190fd5b80546002146119945760405162461bcd60e51b8152600401808060200182810382526023815260200180611ed46023913960400191505060405180910390fd5b600080825560405133917f4a7934670bd8304e7da22378be1368f7c4fef17c5aee81804beda8638fe428ec91a250565b60009182526045602090815260408084209284526002909201905290205490565b60496020528160005260406000208181548110611a0157600080fd5b6000918252602090912001546001600160801b038082169350600160801b90910416905082565b60386020526000908152604090205481565b60009081526038602052604090205490565b603660205260009081526040902080546001820154600283015460038401546004909401549293919260ff808316936101008404821693620100008104909216926001600160a01b036301000000909304831692918216911688565b60009182526045602090815260408084209284526001909201905290205490565b60009081526045602090815260408083207ff68d680ab3160f1aa5d9c3a1383c49e3e60bf3c0c031245cbb036f5ce99afaa18452600101909152808220547f1590276b7f31dd8e2a06f9a92867333eeb3eddbc91e73b9833e3e55d8e34f77d83529120549091565b7f231bb0dc207f13dd4e565ebc32496c470e35391bd8d3b6649269ee2328e031185460008181526034602090815260408220547f2c8b528fbaf48aaf13162a5a0519a7ad5a612da8ff8783465c17e076660a59f18352604690915290918291611b9991611411565b92600192509050565b611baa611e77565b611bb2611e77565b611bba611e77565b60408051610660810191829052611bf19160009060339082845b815481526020019060010190808311611bd457505050505061144f565b909250905060005b6005811015611c8157828160058110611c0e57fe5b602002015115611c525760356000838360058110611c2857fe5b6020020151815260200190815260200160002054848260058110611c4857fe5b6020020152611c79565b603a8160040360058110611c6257fe5b6002020154848260058110611c7357fe5b60200201525b600101611bf9565b50505090565b7f167af83a0768d27540775cfef6d996eb63f8a61fcdfb26e654c18fb50960e3be546001600160a01b038216600090815260496020526040902080546000198101908110611cd157fe5b600091825260209091200154600160801b90046001600160801b03161015611d2a5760405162461bcd60e51b8152600401808060200182810382526022815260200180611ef76022913960400191505060405180910390fd5b6001600160a01b0381166000908152604460205260409020541580611d6757506001600160a01b0381166000908152604460205260409020546002145b611db8576040805162461bcd60e51b815260206004820152601b60248201527f4d696e657220697320696e207468652077726f6e672073746174650000000000604482015290519081900360640190fd5b7fa5ae3e2b97d73fb849ea855d27f073b72815b38452d976bd57e4a157827dadd3805460019081019091556040805180820182528281526201518042908106900360208281019182526001600160a01b038616600081815260449092528482209351845591519290940191909155905190917f46d8ab1385f70e5a3673e97c23c764f7600f7ed7a09b6687deae7131d51752e291a250565b6000818310611e5f5781611e61565b825b9392505050565b6000818311611e5f5781611e61565b6040518060a001604052806005906020820280368337509192915050565b6040518061012001604052806009906020820280368337509192915050565b604051806106600160405280603390602082028036833750919291505056fe4d696e657220776173206e6f74206c6f636b656420666f72207769746864726177616c42616c616e6365206973206c6f776572207468616e207374616b6520616d6f756e744469737075746520686173206265656e20616c7265616479206578656375746564a26469706673582212205a398a3ad7ffb6c6f63cb29939bd95210a7e7b8b50eddb2f294d223f54e32fa364736f6c63430007040033"
func DeployExtension(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Extension, error) {
	parsed, err := abi.JSON(strings.NewReader(ExtensionABI))
	if err != nil {
		return common.Address{}, nil, nil, err
	}
	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ExtensionBin), backend)
	if err != nil {
		return common.Address{}, nil, nil, err
	}
	return address, tx, &Extension{ExtensionCaller: ExtensionCaller{contract: contract}, ExtensionTransactor: ExtensionTransactor{contract: contract}, ExtensionFilterer: ExtensionFilterer{contract: contract}}, nil
}
type Extension struct {
	ExtensionCaller      
	ExtensionTransactor  
	ExtensionFilterer    
}
type ExtensionCaller struct {
	contract *bind.BoundContract  
}
type ExtensionTransactor struct {
	contract *bind.BoundContract  
}
type ExtensionFilterer struct {
	contract *bind.BoundContract  
}
type ExtensionSession struct {
	Contract     *Extension         
	CallOpts     bind.CallOpts      
	TransactOpts bind.TransactOpts  
}
type ExtensionCallerSession struct {
	Contract *ExtensionCaller  
	CallOpts bind.CallOpts     
}
type ExtensionTransactorSession struct {
	Contract     *ExtensionTransactor  
	TransactOpts bind.TransactOpts     
}
type ExtensionRaw struct {
	Contract *Extension  
}
type ExtensionCallerRaw struct {
	Contract *ExtensionCaller  
}
type ExtensionTransactorRaw struct {
	Contract *ExtensionTransactor  
}
func NewExtension(address common.Address, backend bind.ContractBackend) (*Extension, error) {
	contract, err := bindExtension(address, backend, backend, backend)
	if err != nil {
		return nil, err
	}
	return &Extension{ExtensionCaller: ExtensionCaller{contract: contract}, ExtensionTransactor: ExtensionTransactor{contract: contract}, ExtensionFilterer: ExtensionFilterer{contract: contract}}, nil
}
func NewExtensionCaller(address common.Address, caller bind.ContractCaller) (*ExtensionCaller, error) {
	contract, err := bindExtension(address, caller, nil, nil)
	if err != nil {
		return nil, err
	}
	return &ExtensionCaller{contract: contract}, nil
}
func NewExtensionTransactor(address common.Address, transactor bind.ContractTransactor) (*ExtensionTransactor, error) {
	contract, err := bindExtension(address, nil, transactor, nil)
	if err != nil {
		return nil, err
	}
	return &ExtensionTransactor{contract: contract}, nil
}
func NewExtensionFilterer(address common.Address, filterer bind.ContractFilterer) (*ExtensionFilterer, error) {
	contract, err := bindExtension(address, nil, nil, filterer)
	if err != nil {
		return nil, err
	}
	return &ExtensionFilterer{contract: contract}, nil
}
func bindExtension(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
	parsed, err := abi.JSON(strings.NewReader(ExtensionABI))
	if err != nil {
		return nil, err
	}
	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
}
func (_Extension *ExtensionRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
	return _Extension.Contract.ExtensionCaller.contract.Call(opts, result, method, params...)
}
func (_Extension *ExtensionRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _Extension.Contract.ExtensionTransactor.contract.Transfer(opts)
}
func (_Extension *ExtensionRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
	return _Extension.Contract.ExtensionTransactor.contract.Transact(opts, method, params...)
}
func (_Extension *ExtensionCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
	return _Extension.Contract.contract.Call(opts, result, method, params...)
}
func (_Extension *ExtensionTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _Extension.Contract.contract.Transfer(opts)
}
func (_Extension *ExtensionTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
	return _Extension.Contract.contract.Transact(opts, method, params...)
}
func (_Extension *ExtensionCaller) Allowances(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) {
	var out []interface{}
	err := _Extension.contract.Call(opts, &out, "_allowances", arg0, arg1)
	if err != nil {
		return *new(*big.Int), err
	}
	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
	return out0, err
}
func (_Extension *ExtensionSession) Allowances(arg0 common.Address, arg1 common.Address) (*big.Int, error) {
	return _Extension.Contract.Allowances(&_Extension.CallOpts, arg0, arg1)
}
func (_Extension *ExtensionCallerSession) Allowances(arg0 common.Address, arg1 common.Address) (*big.Int, error) {
	return _Extension.Contract.Allowances(&_Extension.CallOpts, arg0, arg1)
}
func (_Extension *ExtensionCaller) Addresses(opts *bind.CallOpts, arg0 [32]byte) (common.Address, error) {
	var out []interface{}
	err := _Extension.contract.Call(opts, &out, "addresses", arg0)
	if err != nil {
		return *new(common.Address), err
	}
	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
	return out0, err
}
func (_Extension *ExtensionSession) Addresses(arg0 [32]byte) (common.Address, error) {
	return _Extension.Contract.Addresses(&_Extension.CallOpts, arg0)
}
func (_Extension *ExtensionCallerSession) Addresses(arg0 [32]byte) (common.Address, error) {
	return _Extension.Contract.Addresses(&_Extension.CallOpts, arg0)
}
func (_Extension *ExtensionCaller) Balances(opts *bind.CallOpts, arg0 common.Address, arg1 *big.Int) (struct {
	FromBlock *big.Int
	Value     *big.Int
}, error) {
	var out []interface{}
	err := _Extension.contract.Call(opts, &out, "balances", arg0, arg1)
	outstruct := new(struct {
		FromBlock *big.Int
		Value     *big.Int
	})
	outstruct.FromBlock = out[0].(*big.Int)
	outstruct.Value = out[1].(*big.Int)
	return *outstruct, err
}
func (_Extension *ExtensionSession) Balances(arg0 common.Address, arg1 *big.Int) (struct {
	FromBlock *big.Int
	Value     *big.Int
}, error) {
	return _Extension.Contract.Balances(&_Extension.CallOpts, arg0, arg1)
}
func (_Extension *ExtensionCallerSession) Balances(arg0 common.Address, arg1 *big.Int) (struct {
	FromBlock *big.Int
	Value     *big.Int
}, error) {
	return _Extension.Contract.Balances(&_Extension.CallOpts, arg0, arg1)
}
func (_Extension *ExtensionCaller) BytesVars(opts *bind.CallOpts, arg0 [32]byte) ([32]byte, error) {
	var out []interface{}
	err := _Extension.contract.Call(opts, &out, "bytesVars", arg0)
	if err != nil {
		return *new([32]byte), err
	}
	out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
	return out0, err
}
func (_Extension *ExtensionSession) BytesVars(arg0 [32]byte) ([32]byte, error) {
	return _Extension.Contract.BytesVars(&_Extension.CallOpts, arg0)
}
func (_Extension *ExtensionCallerSession) BytesVars(arg0 [32]byte) ([32]byte, error) {
	return _Extension.Contract.BytesVars(&_Extension.CallOpts, arg0)
}
func (_Extension *ExtensionCaller) CurrentMiners(opts *bind.CallOpts, arg0 *big.Int) (struct {
	Value *big.Int
	Miner common.Address
}, error) {
	var out []interface{}
	err := _Extension.contract.Call(opts, &out, "currentMiners", arg0)
	outstruct := new(struct {
		Value *big.Int
		Miner common.Address
	})
	outstruct.Value = out[0].(*big.Int)
	outstruct.Miner = out[1].(common.Address)
	return *outstruct, err
}
func (_Extension *ExtensionSession) CurrentMiners(arg0 *big.Int) (struct {
	Value *big.Int
	Miner common.Address
}, error) {
	return _Extension.Contract.CurrentMiners(&_Extension.CallOpts, arg0)
}
func (_Extension *ExtensionCallerSession) CurrentMiners(arg0 *big.Int) (struct {
	Value *big.Int
	Miner common.Address
}, error) {
	return _Extension.Contract.CurrentMiners(&_Extension.CallOpts, arg0)
}
func (_Extension *ExtensionCaller) Decimals(opts *bind.CallOpts) (uint8, error) {
	var out []interface{}
	err := _Extension.contract.Call(opts, &out, "decimals")
	if err != nil {
		return *new(uint8), err
	}
	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
	return out0, err
}
func (_Extension *ExtensionSession) Decimals() (uint8, error) {
	return _Extension.Contract.Decimals(&_Extension.CallOpts)
}
func (_Extension *ExtensionCallerSession) Decimals() (uint8, error) {
	return _Extension.Contract.Decimals(&_Extension.CallOpts)
}
func (_Extension *ExtensionCaller) DidMine(opts *bind.CallOpts, _challenge [32]byte, _miner common.Address) (bool, error) {
	var out []interface{}
	err := _Extension.contract.Call(opts, &out, "didMine", _challenge, _miner)
	if err != nil {
		return *new(bool), err
	}
	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
	return out0, err
}
func (_Extension *ExtensionSession) DidMine(_challenge [32]byte, _miner common.Address) (bool, error) {
	return _Extension.Contract.DidMine(&_Extension.CallOpts, _challenge, _miner)
}
func (_Extension *ExtensionCallerSession) DidMine(_challenge [32]byte, _miner common.Address) (bool, error) {
	return _Extension.Contract.DidMine(&_Extension.CallOpts, _challenge, _miner)
}
func (_Extension *ExtensionCaller) DidVote(opts *bind.CallOpts, _disputeId *big.Int, _address common.Address) (bool, error) {
	var out []interface{}
	err := _Extension.contract.Call(opts, &out, "didVote", _disputeId, _address)
	if err != nil {
		return *new(bool), err
	}
	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
	return out0, err
}
func (_Extension *ExtensionSession) DidVote(_disputeId *big.Int, _address common.Address) (bool, error) {
	return _Extension.Contract.DidVote(&_Extension.CallOpts, _disputeId, _address)
}
func (_Extension *ExtensionCallerSession) DidVote(_disputeId *big.Int, _address common.Address) (bool, error) {
	return _Extension.Contract.DidVote(&_Extension.CallOpts, _disputeId, _address)
}
func (_Extension *ExtensionCaller) DisputeIdByDisputeHash(opts *bind.CallOpts, arg0 [32]byte) (*big.Int, error) {
	var out []interface{}
	err := _Extension.contract.Call(opts, &out, "disputeIdByDisputeHash", arg0)
	if err != nil {
		return *new(*big.Int), err
	}
	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
	return out0, err
}
func (_Extension *ExtensionSession) DisputeIdByDisputeHash(arg0 [32]byte) (*big.Int, error) {
	return _Extension.Contract.DisputeIdByDisputeHash(&_Extension.CallOpts, arg0)
}
func (_Extension *ExtensionCallerSession) DisputeIdByDisputeHash(arg0 [32]byte) (*big.Int, error) {
	return _Extension.Contract.DisputeIdByDisputeHash(&_Extension.CallOpts, arg0)
}
func (_Extension *ExtensionCaller) DisputesById(opts *bind.CallOpts, arg0 *big.Int) (struct {
	Hash                [32]byte
	Tally               *big.Int
	Executed            bool
	DisputeVotePassed   bool
	IsPropFork          bool
	ReportedMiner       common.Address
	ReportingParty      common.Address
	ProposedForkAddress common.Address
}, error) {
	var out []interface{}
	err := _Extension.contract.Call(opts, &out, "disputesById", arg0)
	outstruct := new(struct {
		Hash                [32]byte
		Tally               *big.Int
		Executed            bool
		DisputeVotePassed   bool
		IsPropFork          bool
		ReportedMiner       common.Address
		ReportingParty      common.Address
		ProposedForkAddress common.Address
	})
	outstruct.Hash = out[0].([32]byte)
	outstruct.Tally = out[1].(*big.Int)
	outstruct.Executed = out[2].(bool)
	outstruct.DisputeVotePassed = out[3].(bool)
	outstruct.IsPropFork = out[4].(bool)
	outstruct.ReportedMiner = out[5].(common.Address)
	outstruct.ReportingParty = out[6].(common.Address)
	outstruct.ProposedForkAddress = out[7].(common.Address)
	return *outstruct, err
}
func (_Extension *ExtensionSession) DisputesById(arg0 *big.Int) (struct {
	Hash                [32]byte
	Tally               *big.Int
	Executed            bool
	DisputeVotePassed   bool
	IsPropFork          bool
	ReportedMiner       common.Address
	ReportingParty      common.Address
	ProposedForkAddress common.Address
}, error) {
	return _Extension.Contract.DisputesById(&_Extension.CallOpts, arg0)
}
func (_Extension *ExtensionCallerSession) DisputesById(arg0 *big.Int) (struct {
	Hash                [32]byte
	Tally               *big.Int
	Executed            bool
	DisputeVotePassed   bool
	IsPropFork          bool
	ReportedMiner       common.Address
	ReportingParty      common.Address
	ProposedForkAddress common.Address
}, error) {
	return _Extension.Contract.DisputesById(&_Extension.CallOpts, arg0)
}
func (_Extension *ExtensionCaller) GetAddressVars(opts *bind.CallOpts, _data [32]byte) (common.Address, error) {
	var out []interface{}
	err := _Extension.contract.Call(opts, &out, "getAddressVars", _data)
	if err != nil {
		return *new(common.Address), err
	}
	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
	return out0, err
}
func (_Extension *ExtensionSession) GetAddressVars(_data [32]byte) (common.Address, error) {
	return _Extension.Contract.GetAddressVars(&_Extension.CallOpts, _data)
}
func (_Extension *ExtensionCallerSession) GetAddressVars(_data [32]byte) (common.Address, error) {
	return _Extension.Contract.GetAddressVars(&_Extension.CallOpts, _data)
}
func (_Extension *ExtensionCaller) GetAllDisputeVars(opts *bind.CallOpts, _disputeId *big.Int) ([32]byte, bool, bool, bool, common.Address, common.Address, common.Address, [9]*big.Int, *big.Int, error) {
	var out []interface{}
	err := _Extension.contract.Call(opts, &out, "getAllDisputeVars", _disputeId)
	if err != nil {
		return *new([32]byte), *new(bool), *new(bool), *new(bool), *new(common.Address), *new(common.Address), *new(common.Address), *new([9]*big.Int), *new(*big.Int), err
	}
	out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
	out1 := *abi.ConvertType(out[1], new(bool)).(*bool)
	out2 := *abi.ConvertType(out[2], new(bool)).(*bool)
	out3 := *abi.ConvertType(out[3], new(bool)).(*bool)
	out4 := *abi.ConvertType(out[4], new(common.Address)).(*common.Address)
	out5 := *abi.ConvertType(out[5], new(common.Address)).(*common.Address)
	out6 := *abi.ConvertType(out[6], new(common.Address)).(*common.Address)
	out7 := *abi.ConvertType(out[7], new([9]*big.Int)).(*[9]*big.Int)
	out8 := *abi.ConvertType(out[8], new(*big.Int)).(**big.Int)
	return out0, out1, out2, out3, out4, out5, out6, out7, out8, err
}
func (_Extension *ExtensionSession) GetAllDisputeVars(_disputeId *big.Int) ([32]byte, bool, bool, bool, common.Address, common.Address, common.Address, [9]*big.Int, *big.Int, error) {
	return _Extension.Contract.GetAllDisputeVars(&_Extension.CallOpts, _disputeId)
}
func (_Extension *ExtensionCallerSession) GetAllDisputeVars(_disputeId *big.Int) ([32]byte, bool, bool, bool, common.Address, common.Address, common.Address, [9]*big.Int, *big.Int, error) {
	return _Extension.Contract.GetAllDisputeVars(&_Extension.CallOpts, _disputeId)
}
func (_Extension *ExtensionCaller) GetDisputeIdByDisputeHash(opts *bind.CallOpts, _hash [32]byte) (*big.Int, error) {
	var out []interface{}
	err := _Extension.contract.Call(opts, &out, "getDisputeIdByDisputeHash", _hash)
	if err != nil {
		return *new(*big.Int), err
	}
	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
	return out0, err
}
func (_Extension *ExtensionSession) GetDisputeIdByDisputeHash(_hash [32]byte) (*big.Int, error) {
	return _Extension.Contract.GetDisputeIdByDisputeHash(&_Extension.CallOpts, _hash)
}
func (_Extension *ExtensionCallerSession) GetDisputeIdByDisputeHash(_hash [32]byte) (*big.Int, error) {
	return _Extension.Contract.GetDisputeIdByDisputeHash(&_Extension.CallOpts, _hash)
}
func (_Extension *ExtensionCaller) GetDisputeUintVars(opts *bind.CallOpts, _disputeId *big.Int, _data [32]byte) (*big.Int, error) {
	var out []interface{}
	err := _Extension.contract.Call(opts, &out, "getDisputeUintVars", _disputeId, _data)
	if err != nil {
		return *new(*big.Int), err
	}
	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
	return out0, err
}
func (_Extension *ExtensionSession) GetDisputeUintVars(_disputeId *big.Int, _data [32]byte) (*big.Int, error) {
	return _Extension.Contract.GetDisputeUintVars(&_Extension.CallOpts, _disputeId, _data)
}
func (_Extension *ExtensionCallerSession) GetDisputeUintVars(_disputeId *big.Int, _data [32]byte) (*big.Int, error) {
	return _Extension.Contract.GetDisputeUintVars(&_Extension.CallOpts, _disputeId, _data)
}
func (_Extension *ExtensionCaller) GetLastNewValue(opts *bind.CallOpts) (*big.Int, bool, error) {
	var out []interface{}
	err := _Extension.contract.Call(opts, &out, "getLastNewValue")
	if err != nil {
		return *new(*big.Int), *new(bool), err
	}
	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
	out1 := *abi.ConvertType(out[1], new(bool)).(*bool)
	return out0, out1, err
}
func (_Extension *ExtensionSession) GetLastNewValue() (*big.Int, bool, error) {
	return _Extension.Contract.GetLastNewValue(&_Extension.CallOpts)
}
func (_Extension *ExtensionCallerSession) GetLastNewValue() (*big.Int, bool, error) {
	return _Extension.Contract.GetLastNewValue(&_Extension.CallOpts)
}
func (_Extension *ExtensionCaller) GetLastNewValueById(opts *bind.CallOpts, _requestId *big.Int) (*big.Int, bool, error) {
	var out []interface{}
	err := _Extension.contract.Call(opts, &out, "getLastNewValueById", _requestId)
	if err != nil {
		return *new(*big.Int), *new(bool), err
	}
	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
	out1 := *abi.ConvertType(out[1], new(bool)).(*bool)
	return out0, out1, err
}
func (_Extension *ExtensionSession) GetLastNewValueById(_requestId *big.Int) (*big.Int, bool, error) {
	return _Extension.Contract.GetLastNewValueById(&_Extension.CallOpts, _requestId)
}
func (_Extension *ExtensionCallerSession) GetLastNewValueById(_requestId *big.Int) (*big.Int, bool, error) {
	return _Extension.Contract.GetLastNewValueById(&_Extension.CallOpts, _requestId)
}
func (_Extension *ExtensionCaller) GetMax5(opts *bind.CallOpts, data [51]*big.Int) (struct {
	Max      [5]*big.Int
	MaxIndex [5]*big.Int
}, error) {
	var out []interface{}
	err := _Extension.contract.Call(opts, &out, "getMax5", data)
	outstruct := new(struct {
		Max      [5]*big.Int
		MaxIndex [5]*big.Int
	})
	outstruct.Max = out[0].([5]*big.Int)
	outstruct.MaxIndex = out[1].([5]*big.Int)
	return *outstruct, err
}
func (_Extension *ExtensionSession) GetMax5(data [51]*big.Int) (struct {
	Max      [5]*big.Int
	MaxIndex [5]*big.Int
}, error) {
	return _Extension.Contract.GetMax5(&_Extension.CallOpts, data)
}
func (_Extension *ExtensionCallerSession) GetMax5(data [51]*big.Int) (struct {
	Max      [5]*big.Int
	MaxIndex [5]*big.Int
}, error) {
	return _Extension.Contract.GetMax5(&_Extension.CallOpts, data)
}
func (_Extension *ExtensionCaller) GetMinedBlockNum(opts *bind.CallOpts, _requestId *big.Int, _timestamp *big.Int) (*big.Int, error) {
	var out []interface{}
	err := _Extension.contract.Call(opts, &out, "getMinedBlockNum", _requestId, _timestamp)
	if err != nil {
		return *new(*big.Int), err
	}
	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
	return out0, err
}
func (_Extension *ExtensionSession) GetMinedBlockNum(_requestId *big.Int, _timestamp *big.Int) (*big.Int, error) {
	return _Extension.Contract.GetMinedBlockNum(&_Extension.CallOpts, _requestId, _timestamp)
}
func (_Extension *ExtensionCallerSession) GetMinedBlockNum(_requestId *big.Int, _timestamp *big.Int) (*big.Int, error) {
	return _Extension.Contract.GetMinedBlockNum(&_Extension.CallOpts, _requestId, _timestamp)
}
func (_Extension *ExtensionCaller) GetMinersByRequestIdAndTimestamp(opts *bind.CallOpts, _requestId *big.Int, _timestamp *big.Int) ([5]common.Address, error) {
	var out []interface{}
	err := _Extension.contract.Call(opts, &out, "getMinersByRequestIdAndTimestamp", _requestId, _timestamp)
	if err != nil {
		return *new([5]common.Address), err
	}
	out0 := *abi.ConvertType(out[0], new([5]common.Address)).(*[5]common.Address)
	return out0, err
}
func (_Extension *ExtensionSession) GetMinersByRequestIdAndTimestamp(_requestId *big.Int, _timestamp *big.Int) ([5]common.Address, error) {
	return _Extension.Contract.GetMinersByRequestIdAndTimestamp(&_Extension.CallOpts, _requestId, _timestamp)
}
func (_Extension *ExtensionCallerSession) GetMinersByRequestIdAndTimestamp(_requestId *big.Int, _timestamp *big.Int) ([5]common.Address, error) {
	return _Extension.Contract.GetMinersByRequestIdAndTimestamp(&_Extension.CallOpts, _requestId, _timestamp)
}
func (_Extension *ExtensionCaller) GetNewCurrentVariables(opts *bind.CallOpts) (struct {
	Challenge  [32]byte
	RequestIds [5]*big.Int
	Diff       *big.Int
	Tip        *big.Int
}, error) {
	var out []interface{}
	err := _Extension.contract.Call(opts, &out, "getNewCurrentVariables")
	outstruct := new(struct {
		Challenge  [32]byte
		RequestIds [5]*big.Int
		Diff       *big.Int
		Tip        *big.Int
	})
	outstruct.Challenge = out[0].([32]byte)
	outstruct.RequestIds = out[1].([5]*big.Int)
	outstruct.Diff = out[2].(*big.Int)
	outstruct.Tip = out[3].(*big.Int)
	return *outstruct, err
}