arnaucube
arnaucube/hermez-nodePublic Self-hosted repository
hermez-node/eth/contracts/hermez/Hermez.go
eth/contracts/hermez/Hermez.goRaw
   1// Code generated - DO NOT EDIT.
   2// This file is a generated binding and any manual changes will be lost.
   3
   4package Hermez
   5
   6import (
   7	"math/big"
   8	"strings"
   9
  10	ethereum "github.com/ethereum/go-ethereum"
  11	"github.com/ethereum/go-ethereum/accounts/abi"
  12	"github.com/ethereum/go-ethereum/accounts/abi/bind"
  13	"github.com/ethereum/go-ethereum/common"
  14	"github.com/ethereum/go-ethereum/core/types"
  15	"github.com/ethereum/go-ethereum/event"
  16	"github.com/hermeznetwork/tracerr"
  17)
  18
  19// Reference imports to suppress errors if they are not otherwise used.
  20var (
  21	_ = big.NewInt
  22	_ = strings.NewReader
  23	_ = ethereum.NotFound
  24	_ = bind.Bind
  25	_ = common.Big1
  26	_ = types.BloomLookup
  27	_ = event.NewSubscription
  28)
  29
  30// HermezABI is the input ABI used to generate the binding from.
  31const HermezABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"tokenID\",\"type\":\"uint32\"}],\"name\":\"AddToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"batchNum\",\"type\":\"uint64\"}],\"name\":\"ForgeBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"queueIndex\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"position\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"l1UserTx\",\"type\":\"bytes\"}],\"name\":\"L1UserTxEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"SafeMode\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"numBucket\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockStamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawals\",\"type\":\"uint256\"}],\"name\":\"UpdateBucketWithdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[4][5]\",\"name\":\"arrayBuckets\",\"type\":\"uint256[4][5]\"}],\"name\":\"UpdateBucketsParameters\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFeeAddToken\",\"type\":\"uint256\"}],\"name\":\"UpdateFeeAddToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"newForgeL1L2BatchTimeout\",\"type\":\"uint8\"}],\"name\":\"UpdateForgeL1L2BatchTimeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"addressArray\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"valueArray\",\"type\":\"uint64[]\"}],\"name\":\"UpdateTokenExchange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newWithdrawalDelay\",\"type\":\"uint64\"}],\"name\":\"UpdateWithdrawalDelay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint48\",\"name\":\"idx\",\"type\":\"uint48\"},{\"indexed\":true,\"internalType\":\"uint48\",\"name\":\"numExitRoot\",\"type\":\"uint48\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"instantWithdraw\",\"type\":\"bool\"}],\"name\":\"WithdrawEvent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ABSOLUTE_MAX_L1L2BATCHTIMEOUT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"babyPubKey\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"fromIdx\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"loadAmountF\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"amountF\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"tokenID\",\"type\":\"uint32\"},{\"internalType\":\"uint48\",\"name\":\"toIdx\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"permit\",\"type\":\"bytes\"}],\"name\":\"addL1Transaction\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"permit\",\"type\":\"bytes\"}],\"name\":\"addToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"buckets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ceilUSD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockStamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockWithdrawalRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxWithdrawals\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"name\":\"exitNullifierMap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"exitRootsMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeAddToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"newLastIdx\",\"type\":\"uint48\"},{\"internalType\":\"uint256\",\"name\":\"newStRoot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newExitRoot\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"encodedL1CoordinatorTx\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"l2TxsData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"feeIdxCoordinator\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"verifierIdx\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"l1Batch\",\"type\":\"bool\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofA\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"proofB\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofC\",\"type\":\"uint256[2]\"}],\"name\":\"forgeBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forgeL1L2BatchTimeout\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hermezAuctionContract\",\"outputs\":[{\"internalType\":\"contractIHermezAuctionProtocol\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hermezGovernanceDAOAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_verifiers\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_verifiersParams\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"_withdrawVerifier\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_hermezAuctionContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenHEZ\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"_forgeL1L2BatchTimeout\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_feeAddToken\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_poseidon2Elements\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_poseidon3Elements\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_poseidon4Elements\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_hermezGovernanceDAOAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_safetyAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_withdrawalDelay\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"_withdrawDelayerContract\",\"type\":\"address\"}],\"name\":\"initializeHermez\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint192\",\"name\":\"amount\",\"type\":\"uint192\"}],\"name\":\"instantWithdrawalViewer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastForgedBatch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastIdx\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastL1L2Batch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"mapL1TxQueue\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextL1FillingQueue\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextL1ToForgeQueue\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registerTokensCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"rollupVerifiers\",\"outputs\":[{\"internalType\":\"contractVerifierRollupInterface\",\"name\":\"verifierInterface\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxTx\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nLevels\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safeMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safetyAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"stateRootMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenExchange\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenHEZ\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenList\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[4][5]\",\"name\":\"arrayBuckets\",\"type\":\"uint256[4][5]\"}],\"name\":\"updateBucketsParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newFeeAddToken\",\"type\":\"uint256\"}],\"name\":\"updateFeeAddToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"newForgeL1L2BatchTimeout\",\"type\":\"uint8\"}],\"name\":\"updateForgeL1L2BatchTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"addressArray\",\"type\":\"address[]\"},{\"internalType\":\"uint64[]\",\"name\":\"valueArray\",\"type\":\"uint64[]\"}],\"name\":\"updateTokenExchange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newWithdrawalDelay\",\"type\":\"uint64\"}],\"name\":\"updateWithdrawalDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"proofA\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"proofB\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofC\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint32\",\"name\":\"tokenID\",\"type\":\"uint32\"},{\"internalType\":\"uint192\",\"name\":\"amount\",\"type\":\"uint192\"},{\"internalType\":\"uint48\",\"name\":\"numExitRoot\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"idx\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"instantWithdraw\",\"type\":\"bool\"}],\"name\":\"withdrawCircuit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawDelayerContract\",\"outputs\":[{\"internalType\":\"contractIWithdrawalDelayer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"tokenID\",\"type\":\"uint32\"},{\"internalType\":\"uint192\",\"name\":\"amount\",\"type\":\"uint192\"},{\"internalType\":\"uint256\",\"name\":\"babyPubKey\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"numExitRoot\",\"type\":\"uint48\"},{\"internalType\":\"uint256[]\",\"name\":\"siblings\",\"type\":\"uint256[]\"},{\"internalType\":\"uint48\",\"name\":\"idx\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"instantWithdraw\",\"type\":\"bool\"}],\"name\":\"withdrawMerkleProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawVerifier\",\"outputs\":[{\"internalType\":\"contractVerifierWithdrawInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawalDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]"
  32
  33// HermezBin is the compiled bytecode used for deploying new contracts.
  34var HermezBin = "0x608060405234801561001057600080fd5b506158f6806100206000396000f3fe6080604052600436106102245760003560e01c806386c6acc111610123578063bded9bb8116100ab578063dd46bf841161006f578063dd46bf8414610d6a578063e56e27ae14610d7f578063e796fcf314610d94578063e9b5269c14610e3c578063ef4a5c4a14610e7d57610224565b8063bded9bb814610c77578063c63cc3a014610c8c578063cbd7b5fb14610cf8578063d0f32e6714610d25578063d486645c14610d3a57610224565b80639ead7222116100f25780639ead722214610bf95780639f34e9a314610c23578063a327583814610c38578063a7ab696114610c4d578063abe3219c14610c6257610224565b806386c6acc114610a99578063886df58714610acc57806395a09f2a14610b795780639b51fb0d14610ba457610224565b8063432dd51f116101b15780636e7e1365116101755780636e7e13651461087d57806370c2f1c0146109cf57806379a135e314610a5a57806384ef9ed414610a6f578063864eb16414610a8457610224565b8063432dd51f1461051c57806344e0b2ce146106085780634ee51c261461061d578063506d5463146107b957806368e95e53146107ec57610224565b80631b0a8223116101f85780631b0a8223146104045780632bd8362614610435578063314e5eda1461044a578063375110aa1461047457806338330200146104ca57610224565b80624aca6e146102295780630dd94b961461026e5780630ee8e52b146102bd5780631a748c2d146102d2575b600080fd5b34801561023557600080fd5b5061025c6004803603602081101561024c57600080fd5b50356001600160a01b0316610eb0565b60408051918252519081900360200190f35b34801561027a57600080fd5b506102a16004803603602081101561029157600080fd5b50356001600160a01b0316610ec2565b604080516001600160401b039092168252519081900360200190f35b3480156102c957600080fd5b506102a1610edd565b3480156102de57600080fd5b50610402600480360360408110156102f557600080fd5b810190602081018135600160201b81111561030f57600080fd5b82018360208201111561032157600080fd5b803590602001918460208302840111600160201b8311171561034257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561039157600080fd5b8201836020820111156103a357600080fd5b803590602001918460208302840111600160201b831117156103c457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610ef3945050505050565b005b34801561041057600080fd5b506104196110b6565b604080516001600160a01b039092168252519081900360200190f35b34801561044157600080fd5b506104196110c5565b34801561045657600080fd5b506104026004803603602081101561046d57600080fd5b50356110d4565b34801561048057600080fd5b506104b66004803603604081101561049757600080fd5b5080356001600160a01b031690602001356001600160c01b0316611158565b604080519115158252519081900360200190f35b3480156104d657600080fd5b506104f4600480360360208110156104ed57600080fd5b50356111f4565b604080516001600160a01b039094168452602084019290925282820152519081900360600190f35b34801561052857600080fd5b50610402600480360360e081101561053f57600080fd5b63ffffffff823516916001600160c01b036020820135169160408201359165ffffffffffff6060820135169181019060a081016080820135600160201b81111561058857600080fd5b82018360208201111561059a57600080fd5b803590602001918460208302840111600160201b831117156105bb57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505065ffffffffffff8335169350505060200135151561122e565b34801561061457600080fd5b506102a1611413565b34801561062957600080fd5b5061040260048036036101c081101561064157600080fd5b810190602081018135600160201b81111561065b57600080fd5b82018360208201111561066d57600080fd5b803590602001918460208302840111600160201b8311171561068e57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156106dd57600080fd5b8201836020820111156106ef57600080fd5b803590602001918460208302840111600160201b8311171561071057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550505081356001600160a01b0390811693506020830135811692604081013582169250606081013560ff169160808201359160a081013582169160c082013581169160e08101358216916101008201358116916101208101358216916101408201356001600160401b031691610160013516611422565b3480156107c557600080fd5b5061025c600480360360208110156107dc57600080fd5b50356001600160401b0316611622565b3480156107f857600080fd5b50610402600480360361028081101561081057600080fd5b6040805160a0810190915290820191906102808201908260056000835b8282101561086e576040805160808181019092529080840286019060049083908390808284376000920191909152505050815260019091019060200161082d565b50929550611634945050505050565b34801561088957600080fd5b5061040260048036036102008110156108a157600080fd5b65ffffffffffff8235169160208101359160408201359190810190608081016060820135600160201b8111156108d657600080fd5b8201836020820111156108e857600080fd5b803590602001918460018302840111600160201b8311171561090957600080fd5b919390929091602081019035600160201b81111561092657600080fd5b82018360208201111561093857600080fd5b803590602001918460018302840111600160201b8311171561095957600080fd5b919390929091602081019035600160201b81111561097657600080fd5b82018360208201111561098857600080fd5b803590602001918460018302840111600160201b831117156109a957600080fd5b919350915060ff813516906020810135151590604081019060808101906101000161182a565b3480156109db57600080fd5b50610402600480360360408110156109f257600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610a1c57600080fd5b820183602082011115610a2e57600080fd5b803590602001918460018302840111600160201b83111715610a4f57600080fd5b509092509050611cab565b348015610a6657600080fd5b50610419611f22565b348015610a7b57600080fd5b506102a1611f31565b348015610a9057600080fd5b50610419611f40565b348015610aa557600080fd5b5061025c60048036036020811015610abc57600080fd5b50356001600160401b0316611f4f565b610402600480360360e0811015610ae257600080fd5b81359165ffffffffffff602082013581169261ffff604084013581169360608101359091169263ffffffff6080830135169260a0830135909116919081019060e0810160c0820135600160201b811115610b3b57600080fd5b820183602082011115610b4d57600080fd5b803590602001918460018302840111600160201b83111715610b6e57600080fd5b509092509050611f61565b348015610b8557600080fd5b50610b8e612277565b6040805160ff9092168252519081900360200190f35b348015610bb057600080fd5b50610bce60048036036020811015610bc757600080fd5b503561227c565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b348015610c0557600080fd5b5061041960048036036020811015610c1c57600080fd5b50356122ae565b348015610c2f57600080fd5b5061025c6122d5565b348015610c4457600080fd5b50610b8e6122db565b348015610c5957600080fd5b506102a16122eb565b348015610c6e57600080fd5b50610402612301565b348015610c8357600080fd5b5061025c61248c565b348015610c9857600080fd5b5061040260048036036101a0811015610cb057600080fd5b506040810160c0820163ffffffff610100840135166001600160c01b036101208501351665ffffffffffff610140860135811690610160870135166101808701351515612492565b348015610d0457600080fd5b5061040260048036036020811015610d1b57600080fd5b503560ff16612861565b348015610d3157600080fd5b506102a1612941565b348015610d4657600080fd5b50610d4f612957565b6040805165ffffffffffff9092168252519081900360200190f35b348015610d7657600080fd5b5061041961296c565b348015610d8b57600080fd5b5061041961297b565b348015610da057600080fd5b50610dc760048036036020811015610db757600080fd5b50356001600160401b031661298a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610e01578181015183820152602001610de9565b50505050905090810190601f168015610e2e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610e4857600080fd5b506104b660048036036040811015610e5f57600080fd5b5080356001600160401b0316906020013565ffffffffffff16612a25565b348015610e8957600080fd5b5061040260048036036020811015610ea057600080fd5b50356001600160401b0316612a45565b605a6020526000908152604090205481565b6052602052600090815260409020546001600160401b031681565b605e54600160801b90046001600160401b031681565b604f546001600160a01b03163314610f3c5760405162461bcd60e51b815260040180806020018281038252603f8152602001806156b7603f913960400191505060405180910390fd5b8051825114610f7c5760405162461bcd60e51b8152600401808060200182810382526041815260200180614f716041913960600191505060405180910390fd5b60005b8251811015610ff657818181518110610f9457fe5b602002602001015160526000858481518110610fac57fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805467ffffffffffffffff19166001600160401b0392909216919091179055600101610f7f565b507f10ff643ebeca3e33002e61b76fa85e7e10091e30afa39295f91af9838b3033b38282604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561105e578181015183820152602001611046565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561109d578181015183820152602001611085565b5050505090500194505050505060405180910390a15050565b6051546001600160a01b031681565b605c546001600160a01b031681565b604f546001600160a01b0316331461111d5760405162461bcd60e51b815260040180806020018281038252603f8152602001806156b7603f913960400191505060405180910390fd5b605b8190556040805182815290517fd1c873cd16013f0dc5f37992c0d12794389698512895ec036a568e393b46e3c19181900360200190a150565b6000806111658484612b3a565b9050806111765760019150506111ee565b600061118182612cf0565b905060006036826005811061119257fe5b6005020190506000816002015411156111b157600193505050506111ee565b60006111ca826001015443612d6190919063ffffffff16565b905081600301548110156111e55760009450505050506111ee565b60019450505050505b92915050565b6053818154811061120157fe5b60009182526020909120600390910201805460018201546002909201546001600160a01b03909116925083565b80156112a05761126560598863ffffffff168154811061124a57fe5b6000918252602090912001546001600160a01b031687612daa565b6112a05760405162461bcd60e51b81526004018080602001828103825260478152602001806152ce6047913960600191505060405180910390fd5b60606112b9886000896001600160c01b03168933612f77565b905060006112c682613084565b65ffffffffffff80881660009081526057602090815260408083205460588352818420948a168452939091529020549192509060ff16156113385760405162461bcd60e51b81526004018080602001828103825260328152602001806153406032913960400191505060405180910390fd5b61134c81878765ffffffffffff1685613139565b151560011461138c5760405162461bcd60e51b815260040180806020018281038252602e8152602001806155ff602e913960400191505060405180910390fd5b65ffffffffffff8088166000908152605860209081526040808320938916835292905220805460ff191660011790556113c6898b866131c0565b8315158765ffffffffffff168665ffffffffffff167f92dd99230eaf5e3f1238fbbd0d72b34e8c2ad759886075bfc9f426ebeeea34f060405160405180910390a450505050505050505050565b6055546001600160401b031681565b600054610100900460ff168061143b575061143b61335b565b80611449575060005460ff16155b6114845760405162461bcd60e51b815260040180806020018281038252602e8152602001806153eb602e913960400191505060405180910390fd5b600054610100900460ff161580156114af576000805460ff1961ff0019909116610100171660011790555b6114b98f8f613361565b8c605460006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b605c60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a605f60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555089605e60186101000a81548160ff021916908360ff16021790555088605b8190555060ff605460146101000a81548165ffffffffffff021916908365ffffffffffff1602179055506001605e60106101000a8154816001600160401b0302191690836001600160401b03160217905550605960009080600181540180825580915050600190039060005260206000200160009091909190916101000a8154816001600160a01b0302191690836001600160a01b031602179055506115f388888861342d565b6115ff8585858561350f565b8015611611576000805461ff00191690555b505050505050505050505050505050565b60576020526000908152604090205481565b604f546001600160a01b0316331461167d5760405162461bcd60e51b815260040180806020018281038252603f8152602001806156b7603f913960400191505060405180910390fd5b60005b60058110156117aa57600082826005811061169757fe5b602002015151905060008383600581106116ad57fe5b602002015160016020020151905060008484600581106116c957fe5b602002015160400151905060008585600581106116e257fe5b60200201516060015190508083111561172c5760405162461bcd60e51b815260040180806020018281038252605d8152602001806156f6605d913960600191505060405180910390fd5b6040518060a00160405280858152602001438152602001848152602001838152602001828152506036866005811061176057fe5b600502016000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040155905050505050508080600101915050611680565b507f3c39a1e91c69d4cfeacb11190befc2b1c983746e6b21ab2441a3051de88d448081604051808260056000925b818410156118185760208402830151608080838360005b838110156118075781810151838201526020016117ef565b5050505090500192600101926117d8565b9250505091505060405180910390a150565b3332146118685760405162461bcd60e51b815260040180806020018281038252602a8152602001806151d7602a913960400191505060405180910390fd5b605c546040805163041d8fb560e51b815233600482015243602482015290516001600160a01b03909216916383b1f6a091604480820192602092909190829003018186803b1580156118b957600080fd5b505afa1580156118cd573d6000803e3d6000fd5b505050506040513d60208110156118e357600080fd5b505115156001146119255760405162461bcd60e51b81526004018080602001828103825260228152602001806151076022913960400191505060405180910390fd5b8361198157605e54600160c01b810460ff166001600160401b03918216011643106119815760405162461bcd60e51b81526004018080602001828103825260268152602001806155ab6026913960400191505060405180910390fd5b60006119908f8f8f888a613612565b905060538660ff16815481106119a257fe5b60009182526020918290206003909102015460408051928301815283835280516343753b4d60e01b81526001600160a01b03909216926343753b4d9288928892889290916004909101908190869080828437600083820152601f01601f1916909101905084608080828437600083820152601f01601f1916909101905083604080828437600081840152601f19601f82011690508083019250505082600160200280838360005b83811015611a61578181015183820152602001611a49565b5050505090500194505050505060206040518083038186803b158015611a8657600080fd5b505afa158015611a9a573d6000803e3d6000fd5b505050506040513d6020811015611ab057600080fd5b5051611aed5760405162461bcd60e51b8152600401808060200182810382526021815260200180614fee6021913960400191505060405180910390fd5b6055600081819054906101000a90046001600160401b03168092919060010191906101000a8154816001600160401b0302191690836001600160401b03160217905550508e605460146101000a81548165ffffffffffff021916908365ffffffffffff1602179055508d60566000605560009054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001908152602001600020819055508c60576000605560009054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001908152602001600020819055508415611bfe57605e805467ffffffffffffffff1916436001600160401b0316179055611bfe6138ba565b605c54604080516309cb4a2f60e31b815233600482015290516001600160a01b0390921691634e5a51789160248082019260009290919082900301818387803b158015611c4a57600080fd5b505af1158015611c5e573d6000803e3d6000fd5b50506055546040516001600160401b0390911692507fd7ab70a9e6ed0d6985e74c5cb553d300a13a2217d58266922b275b72fe7869829150600090a2505050505050505050505050505050565b605954600160201b8110611cf05760405162461bcd60e51b81526004018080602001828103825260218152602001806152016021913960400191505060405180910390fd5b6001600160a01b038416611d355760405162461bcd60e51b81526004018080602001828103825260238152602001806151b46023913960400191505060405180910390fd5b6001600160a01b0384166000908152605a602052604090205415611da0576040805162461bcd60e51b815260206004820152601f60248201527f4865726d657a3a3a616464546f6b656e3a20414c52454144595f414444454400604482015290519081900360640190fd5b6000846001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ddb57600080fd5b505afa158015611def573d6000803e3d6000fd5b505050506040513d6020811015611e0557600080fd5b505111611e435760405162461bcd60e51b81526004018080602001828103825260238152602001806156666023913960400191505060405180910390fd5b8115611e6457605f54605b54611e64916001600160a01b0316908585613968565b605f54604f54605b54611e87926001600160a01b03908116923392911690613c1b565b60598054600181019091557fd73956b9e00d8f8bc5e44f7184df1387cdd652e7726b8ccda3db4859e02f31bf0180546001600160a01b0319166001600160a01b0386169081179091556000818152605a6020908152604091829020849055815163ffffffff8516815291517fcb73d161edb7cd4fb1d92fedfd2555384fd997fd44ab507656f8c81e15747dde9281900390910190a250505050565b605f546001600160a01b031681565b605e546001600160401b031681565b6054546001600160a01b031681565b60566020526000908152604090205481565b60595463ffffffff851610611fa75760405162461bcd60e51b815260040180806020018281038252602e8152602001806155d1602e913960400191505060405180910390fd5b6000611fb287613d78565b9050600160801b8110611ff65760405162461bcd60e51b815260040180806020018281038252603181526020018061500f6031913960400191505060405180910390fd5b801561225d5763ffffffff851661204a573481146120455760405162461bcd60e51b815260040180806020018281038252603781526020018061588a6037913960400191505060405180910390fd5b61225d565b34156120875760405162461bcd60e51b815260040180806020018281038252602f81526020018061529f602f913960400191505060405180910390fd5b81156120c0576120c060598663ffffffff16815481106120a357fe5b6000918252602090912001546001600160a01b0316828585613968565b600060598663ffffffff16815481106120d557fe5b60009182526020918290200154604080516370a0823160e01b815230600482015290516001600160a01b03909216926370a0823192602480840193829003018186803b15801561212457600080fd5b505afa158015612138573d6000803e3d6000fd5b505050506040513d602081101561214e57600080fd5b5051605980549192506121889163ffffffff891690811061216b57fe5b6000918252602090912001546001600160a01b0316333085613c1b565b600060598763ffffffff168154811061219d57fe5b60009182526020918290200154604080516370a0823160e01b815230600482015290516001600160a01b03909216926370a0823192602480840193829003018186803b1580156121ec57600080fd5b505afa158015612200573d6000803e3d6000fd5b505050506040513d602081101561221657600080fd5b50519050818103831461225a5760405162461bcd60e51b815260040180806020018281038252603981526020018061577d6039913960400191505060405180910390fd5b50505b61226c338a8a8a8a8a8a613dbc565b505050505050505050565b60f081565b6036816005811061228957fe5b6005020180546001820154600283015460038401546004909401549294509092909185565b605981815481106122bb57fe5b6000918252602090912001546001600160a01b0316905081565b60595490565b605e54600160c01b900460ff1681565b605054600160a01b90046001600160401b031681565b6050546001600160a01b03163314806123245750604f546001600160a01b031633145b61235f5760405162461bcd60e51b81526004018080602001828103825260418152602001806154c26041913960600191505060405180910390fd5b60005b60058110156123ea576040518060a00160405280600081526020016000815260200160008152602001600081526020016000815250603682600581106123a457fe5b6005020160008201518160000155602082015181600101556040820151816002015560608201518160030155608082015181600401559050508080600101915050612362565b5060515460505460408051630e670af560e01b8152600160a01b9092046001600160401b03166004830152516001600160a01b0390921691630e670af59160248082019260009290919082900301818387803b15801561244957600080fd5b505af115801561245d573d6000803e3d6000fd5b50506040517f0410e6ef2bd89ecf5b2dc2f62157f9863e09e89cb7c7f1abb7d4ec43a6019d1e925060009150a1565b605b5481565b8015612504576124c960598663ffffffff16815481106124ae57fe5b6000918252602090912001546001600160a01b031685612daa565b6125045760405162461bcd60e51b81526004018080602001828103825260438152602001806154196043913960600191505060405180910390fd5b65ffffffffffff80841660009081526058602090815260408083209386168352929052205460ff16156125685760405162461bcd60e51b815260040180806020018281038252602e815260200180615393602e913960400191505060405180910390fd5b65ffffffffffff831660009081526057602090815260408083205481518084018290523360601b818401526001600160e01b031960e08b901b16605482015267ffffffffffffffff1989841b1660588201526001600160d01b031960d088901b1660708201528251605681830301815260769091019283905280519194937f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000019360029390918291908401908083835b602083106126365780518252601f199092019160209182019101612617565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015612675573d6000803e3d6000fd5b5050506040513d602081101561268a57600080fd5b50518161269357fe5b605454604080516020810182529390920680845282516343753b4d60e01b81529094506001600160a01b03909116926343753b4d928e928e928e929091600401908190869080828437600083820152601f01601f1916909101905084608080828437600083820152601f01601f1916909101905083604080828437600081840152601f19601f82011690508083019250505082600160200280838360005b83811015612749578181015183820152602001612731565b5050505090500194505050505060206040518083038186803b15801561276e57600080fd5b505afa158015612782573d6000803e3d6000fd5b505050506040513d602081101561279857600080fd5b505115156001146127da5760405162461bcd60e51b815260040180806020018281038252602981526020018061552b6029913960400191505060405180910390fd5b65ffffffffffff8086166000908152605860209081526040808320938816835292905220805460ff191660011790556128148688856131c0565b8215158565ffffffffffff168565ffffffffffff167f92dd99230eaf5e3f1238fbbd0d72b34e8c2ad759886075bfc9f426ebeeea34f060405160405180910390a450505050505050505050565b604f546001600160a01b031633146128aa5760405162461bcd60e51b815260040180806020018281038252603f8152602001806156b7603f913960400191505060405180910390fd5b60f060ff821611156128ed5760405162461bcd60e51b815260040180806020018281038252603c815260200180614fb2603c913960400191505060405180910390fd5b605e805460ff8316600160c01b810260ff60c01b199092169190911790915560408051918252517fff6221781ac525b04585dbb55cd2ebd2a92c828ca3e42b23813a1137ac9744319181900360200190a150565b605e54600160401b90046001600160401b031681565b605454600160a01b900465ffffffffffff1681565b604f546001600160a01b031681565b6050546001600160a01b031681565b605d6020908152600091825260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015612a1d5780601f106129f257610100808354040283529160200191612a1d565b820191906000526020600020905b815481529060010190602001808311612a0057829003601f168201915b505050505081565b605860209081526000928352604080842090915290825290205460ff1681565b604f546001600160a01b03163314612a8e5760405162461bcd60e51b815260040180806020018281038252603f8152602001806156b7603f913960400191505060405180910390fd5b62127500816001600160401b03161115612ad95760405162461bcd60e51b815260040180806020018281038252604a815260200180615129604a913960600191505060405180910390fd5b605080546001600160401b038316600160a01b810267ffffffffffffffff60a01b199092169190911790915560408051918252517f9db302c4547a21fb20a3a794e5f63ee87eb6e4afc3325ebdadba2d1fb4a907379181900360200190a150565b6001600160a01b0382166000908152605260205260408120546001600160401b0316612b68575060006111ee565b6001600160a01b038316600090815260526020526040812054655af3107a4000906001600160401b03166001600160c01b0385160260408051600481526024810182526020810180516001600160e01b031663313ce56760e01b1781529151815194909304945060009384936060936001600160a01b038b1693928291908083835b60208310612c095780518252601f199092019160209182019101612bea565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114612c69576040519150601f19603f3d011682016040523d82523d6000602084013e612c6e565b606091505b50915091508115612c9357808060200190516020811015612c8e57600080fd5b505192505b604d8360ff1610612cd55760405162461bcd60e51b815260040180806020018281038252603b815260200180614ef6603b913960400191505060405180910390fd5b8260ff16600a0a8481612ce457fe5b04979650505050505050565b6000805b6005811015612d245760368160058110612d0a57fe5b60050201548311612d1c579050612d5c565b600101612cf4565b5060405162461bcd60e51b815260040180806020018281038252603981526020018061562d6039913960400191505060405180910390fd5b919050565b6000612da383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614016565b9392505050565b600080612db78484612b3a565b905080612dc85760019150506111ee565b6000612dd382612cf0565b9050600060368260058110612de457fe5b6005020190506000612e03826001015443612d6190919063ffffffff16565b90508160030154811015612e9857600282015415612e8b57816004015482600201541415612e32574360018301555b600282018054600019019081905560018301546040805192835251909160ff8616917fa35fe9a9e21cdbbc4774aa8a56e7b97ea9c06afc09ffb06af593d26951e350aa9181900360200190a360019450505050506111ee565b60009450505050506111ee565b6000612eb18360030154836140ad90919063ffffffff16565b90508260040154612ecf8285600201546140ef90919063ffffffff16565b10612ef4576004830154612ee4906001612d61565b6002840155436001840155612f27565b60028301805482016000190190556003830154612f2190612f16908390614149565b6001850154906140ef565b60018401555b60018301546002840154604080519182525160ff8716917fa35fe9a9e21cdbbc4774aa8a56e7b97ea9c06afc09ffb06af593d26951e350aa919081900360200190a36001955050505050506111ee565b60408051600480825260a08201909252606091829190602082016080803683370190505090508663ffffffff1681600081518110612fb157fe5b60200260200101818152505060208665ffffffffffff16901b65ffffffffffff1681600081518110612fdf57fe5b602002602001018181511791508181525050604860ff85901c901b8160008151811061300757fe5b602002602001018181511791508181525050848160018151811061302757fe5b602090810291909101015280516001600160ff1b038516908290600290811061304c57fe5b602002602001018181525050826001600160a01b03168160038151811061306f57fe5b60209081029190910101529695505050505050565b60355460405163311083ed60e21b81526020600482018181528451602484015284516000946001600160a01b03169363c4420fb49387939283926044019180860191028083838b5b838110156130e45781810151838201526020016130cc565b505050509050019250505060206040518083038186803b15801561310757600080fd5b505afa15801561311b573d6000803e3d6000fd5b505050506040513d602081101561313157600080fd5b505192915050565b60008061314684846141a2565b8551909150600090600019015b600081126131b35786818151811061316757fe5b6020026020010151915060008187600082121561318057fe5b6001911c81161490508061319d576131988484614228565b6131a7565b6131a78385614228565b93505060001901613153565b5050909414949350505050565b80156132065761320160598363ffffffff16815481106131dc57fe5b6000918252602090912001546001600160a01b0316336001600160c01b03861661428b565b613356565b63ffffffff8216613292576051546040805163cfc0b64160e01b81523360048201526000602482018190526001600160c01b0387166044830181905292516001600160a01b039094169363cfc0b6419392606480820193929182900301818588803b15801561327457600080fd5b505af1158015613288573d6000803e3d6000fd5b5050505050613356565b600060598363ffffffff16815481106132a757fe5b6000918252602090912001546051546001600160a01b0391821692506132d9918391166001600160c01b0387166144d6565b6051546040805163cfc0b64160e01b81523360048201526001600160a01b0384811660248301526001600160c01b03881660448301529151919092169163cfc0b64191606480830192600092919082900301818387803b15801561333c57600080fd5b505af1158015613350573d6000803e3d6000fd5b50505050505b505050565b303b1590565b60005b8251811015613356576053604051806060016040528085848151811061338657fe5b60200260200101516001600160a01b031681526020016008808686815181106133ab57fe5b6020026020010151901b901c815260200160f88585815181106133ca57fe5b60209081029190910181015190911c909152825460018082018555600094855293829020835160039092020180546001600160a01b0319166001600160a01b03909216919091178155908201518184015560409091015160029091015501613364565b600054610100900460ff1680613446575061344661335b565b80613454575060005460ff16155b61348f5760405162461bcd60e51b815260040180806020018281038252602e8152602001806153eb602e913960400191505060405180910390fd5b600054610100900460ff161580156134ba576000805460ff1961ff0019909116610100171660011790555b603380546001600160a01b038087166001600160a01b0319928316179092556034805486841690831617905560358054928516929091169190911790558015613509576000805461ff00191690555b50505050565b600054610100900460ff1680613528575061352861335b565b80613536575060005460ff16155b6135715760405162461bcd60e51b815260040180806020018281038252602e8152602001806153eb602e913960400191505060405180910390fd5b600054610100900460ff1615801561359c576000805460ff1961ff0019909116610100171660011790555b604f80546001600160a01b03199081166001600160a01b03888116919091179092556050805482168784161767ffffffffffffffff60a01b1916600160a01b6001600160401b0388160217905560518054909116918416919091179055801561360b576000805461ff00191690555b5050505050565b6055546001600160401b031660009081526056602052604081205460545460538054600160a01b90920465ffffffffffff16918491829182919060ff891690811061365957fe5b906000526020600020906003020160010154600860538960ff168154811061367d57fe5b9060005260206000209060030201600201548161369657fe5b046002026003010290506000600860538960ff16815481106136b457fe5b906000526020600020906003020160020154816136cd57fe5b604080519290910481028481018084016148ae0190925261486e909101825260d087811b60208401528e901b6026830152602c8201889052604c82018d9052606c82018c90529150608c8101613723818c614623565b61480001613731600461485d565b9096509450838511156137755760405162461bcd60e51b815260040180806020018281038252602e815260200180615689602e913960400191505060405180910390fd5b61378181868603614871565b84840301848682378401613795600561485d565b90965094508285146137d85760405162461bcd60e51b8152600401808060200182810382526040815260200180614f316040913960400191505060405180910390fd5b8486823784016137ea81868503614871565b848303810190504660f01b81527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040518082805190602001908083835b6020831061384a5780518252601f19909201916020918201910161382b565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015613889573d6000803e3d6000fd5b5050506040513d602081101561389e57600080fd5b5051816138a757fe5b069e9d5050505050505050505050505050565b605e54600160401b90046001600160401b03166000908152605d602052604081206138e491614e6d565b605e805460016001600160401b03600160401b808404821692909201811682026fffffffffffffffff000000000000000019909316929092179283905582048116600160801b90920416141561396657605e805460016001600160401b03600160801b808404821692909201160267ffffffffffffffff60801b199091161790555b565b60008282602081101561397a57600080fd5b50356001600160e01b031916905063d505accf60e01b81146139cd5760405162461bcd60e51b815260040180806020018281038252602e815260200180615833602e913960400191505060405180910390fd5b60008080808080806139e2896004818d614ecd565b60e08110156139f057600080fd5b506001600160a01b038135811698506020820135169650604081013595506060810135945060ff608082013516935060a0810135925060c001359050338714613a6a5760405162461bcd60e51b81526004018080602001828103825260308152602001806150746030913960400191505060405180910390fd5b6001600160a01b0386163014613ab15760405162461bcd60e51b815260040180806020018281038252602581526020018061527a6025913960400191505060405180910390fd5b8a8514613aef5760405162461bcd60e51b815260040180806020018281038252602d81526020018061557e602d913960400191505060405180910390fd5b8b6001600160a01b031663d505accf60e01b8888888888888860405160240180886001600160a01b03168152602001876001600160a01b031681526020018681526020018581526020018460ff168152602001838152602001828152602001975050505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083835b60208310613bb95780518252601f199092019160209182019101613b9a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611611576040519150601f19603f3d011682016040523d82523d6000602084013e611611565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b60208310613ca05780518252601f199092019160209182019101613c81565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613d02576040519150601f19603f3d011682016040523d82523d6000602084013e613d07565b606091505b5091509150818015613d35575080511580613d355750808060200190516020811015613d3257600080fd5b50515b613d705760405162461bcd60e51b81526004018080602001828103825260348152602001806150406034913960400191505060405180910390fd5b505050505050565b60006103ff8216601f600b84901c166001600a85811c8216919083900a908185029083148015613da757508315155b15613db25760028204015b9695505050505050565b6000613dc784613d78565b9050600160c01b8110613e0b5760405162461bcd60e51b815260040180806020018281038252602e815260200180615222602e913960400191505060405180910390fd5b65ffffffffffff8216613e5a578015613e555760405162461bcd60e51b815260040180806020018281038252603b8152602001806157f8603b913960400191505060405180910390fd5b613f14565b65ffffffffffff821660011415613eac5761ffff851615613e555760405162461bcd60e51b81526004018080602001828103825260378152602001806150a46037913960400191505060405180910390fd5b60ff65ffffffffffff8316118015613ed9575060545465ffffffffffff600160a01b909104811690831611155b613f145760405162461bcd60e51b81526004018080602001828103825260288152602001806155036028913960400191505060405180910390fd5b65ffffffffffff8616613f625786613f5d5760405162461bcd60e51b81526004018080602001828103825260418152602001806151736041913960600191505060405180910390fd5b614007565b60ff65ffffffffffff8716118015613f8f575060545465ffffffffffff600160a01b909104811690871611155b613fca5760405162461bcd60e51b815260040180806020018281038252602a815260200180615250602a913960400191505060405180910390fd5b86156140075760405162461bcd60e51b815260040180806020018281038252604281526020018061545c6042913960600191505060405180910390fd5b6133508888888888888861488a565b600081848411156140a55760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561406a578181015183820152602001614052565b50505050905090810190601f1680156140975780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612da383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614a64565b600082820183811015612da3576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600082614158575060006111ee565b8282028284828161416557fe5b0414612da35760405162461bcd60e51b81526004018080602001828103825260218152602001806153726021913960400191505060405180910390fd5b604080516003808252608082019092526000916060919060208201838036833701905050905083816000815181106141d657fe5b60200260200101818152505082816001815181106141f057fe5b60200260200101818152505060018160028151811061420b57fe5b60200260200101818152505061422081614ac9565b949350505050565b6040805160028082526060808301845260009390929190602083019080368337019050509050838160008151811061425c57fe5b602002602001018181525050828160018151811061427657fe5b60200260200101818152505061422081614b26565b6001600160a01b0383166143895760408051600080825260208201909252339083906040518082805190602001908083835b602083106142dc5780518252601f1990920191602091820191016142bd565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461433e576040519150601f19603f3d011682016040523d82523d6000602084013e614343565b606091505b50509050806143835760405162461bcd60e51b815260040180806020018281038252602a815260200180615554602a913960400191505060405180910390fd5b50613356565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106144065780518252601f1990920191602091820191016143e7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614468576040519150601f19603f3d011682016040523d82523d6000602084013e61446d565b606091505b509150915081801561449b57508051158061449b575080806020019051602081101561449857600080fd5b50515b61360b5760405162461bcd60e51b815260040180806020018281038252602c8152602001806150db602c913960400191505060405180910390fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b178152925182516000946060949389169392918291908083835b602083106145535780518252601f199092019160209182019101614534565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146145b5576040519150601f19603f3d011682016040523d82523d6000602084013e6145ba565b606091505b50915091508180156145e85750805115806145e857508080602001905160208110156145e557600080fd5b50515b61360b5760405162461bcd60e51b815260040180806020018281038252602a815260200180615753602a913960400191505060405180910390fd5b600080614630600361485d565b90925090506065810460006060851561470357605e54600160401b90046001600160401b03166000908152605d60209081526040918290208054835160026101006001841615026000190190921691909104601f81018490048402820184019094528381529290918301828280156146e95780601f106146be576101008083540402835291602001916146e9565b820191906000526020600020905b8154815290600101906020018083116146cc57829003601f168201915b5050505050905060488151816146fb57fe5b049150614708565b600091505b610100838301111561474b5760405162461bcd60e51b815260040180806020018281038252602481526020018061549e6024913960400191505060405180910390fd5b8115614779576048820287019660208201905b8881101561477657815181526020918201910161475e565b50505b60005b83811015614840576059546065870196803560001a916001820135916021810135916041820135916061013560e01c9081106147e95760405162461bcd60e51b815260040180806020018281038252602a8152602001806153c1602a913960400191505060405180910390fd5b6001600160a01b0360ff8616156148095761480683858789614b83565b90505b60601b8d5260148d0191909152600060348d0181905260e09190911b603e8d015260428c015250506048909801975060010161477c565b506148548760488585610100030302614871565b50505050505050565b602002600490810135602481019291013590565b808201915b828110156133565760008152602001614876565b604080516bffffffffffffffffffffffff1960608a901b16602080830191909152603482018990526001600160d01b031960d089811b821660548501526001600160f01b031960f08a811b8216605a87015289901b16605c8501526001600160e01b031960e088901b16605e808601919091529086901b90911660628401528351604881850301815260689093018452546001600160401b03600160801b909104166000908152605d909152919091206149449082614d23565b605e54600160801b90046001600160401b03166000818152605d602090815260408083205481518381528651818501528651604860026101006001861615026000190190941693909304929092049560ff87169590947f7f40be4e420c002c02fa9cad961f6a7620769d32d272f3f8c15e3ff59de9310e9489948493918401928601918190849084905b838110156149e65781810151838201526020016149ce565b50505050905090810190601f168015614a135780820380516001836020036101000a031916815260200191505b509250505060405180910390a36080811061226c57605e805460016001600160401b03600160801b808404821692909201160267ffffffffffffffff60801b19909116179055505050505050505050565b60008183614ab35760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561406a578181015183820152602001614052565b506000838581614abf57fe5b0495945050505050565b60345460405163311083ed60e21b81526020600482018181528451602484015284516000946001600160a01b03169363c4420fb49387939283926044019185810191028083838b83156130e45781810151838201526020016130cc565b60335460405163311083ed60e21b81526020600482018181528451602484015284516000946001600160a01b03169363c4420fb49387939283926044019185810191028083838b83156130e45781810151838201526020016130cc565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614be45760405162461bcd60e51b81526004018080602001828103825260298152602001806158616029913960400191505060405180910390fd5b6000469050600086823060405160200180807f19457468657265756d205369676e6564204d6573736167653a0a313230000000815250601d01806157b6604291396042018481526020018361ffff1660f01b8152600201826001600160a01b031660601b81526014019350505050604051602081830303815290604052805190602001209050600060018286898960405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015614cc6573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614d185760405162461bcd60e51b815260040180806020018281038252602b815260200180615315602b913960400191505060405180910390fd5b979650505050505050565b815460026001808316156101000203821604825180820160208110602084100160028114614dcd5760018114614df2578660005260208404602060002001600160028402018855602085068060200390508088018589016001836101000a0392508282511684540184556001840193506020820191505b80821015614db75781518455600184019350602082019150614d9a565b815191036101000a908190040290915550614854565b60028302826020036101000a846020036101000a602089015104020185018755614854565b8660005260208404602060002001600160028402018855846020038088018589016001836101000a0392508282511660ff198a160184556020820191506001840193505b80821015614e535781518455600184019350602082019150614e36565b815191036101000a90819004029091555050505050505050565b50805460018160011615610100020316600290046000825580601f10614e935750614eb1565b601f016020900490600052602060002090810190614eb19190614eb4565b50565b5b80821115614ec95760008155600101614eb5565b5090565b60008085851115614edc578182fd5b83861115614ee8578182fd5b505082019391909203915056fe496e7374616e7457697468647261774d616e616765723a3a5f746f6b656e325553443a20544f4b454e5f444543494d414c535f4f564552464c4f574865726d657a3a3a5f636f6e73747275637443697263756974496e7075743a20494e56414c49445f464545494458434f4f5244494e41544f525f4c454e475448496e7374616e7457697468647261774d616e616765723a3a757064617465546f6b656e45786368616e67653a20494e56414c49445f41525241595f4c454e4754484865726d657a3a3a757064617465466f7267654c314c32426174636854696d656f75743a204d41585f464f52474554494d454f55545f4558434545444865726d657a3a3a666f72676542617463683a20494e56414c49445f50524f4f464865726d657a3a3a6164644c315472616e73616374696f6e3a204c4f4144414d4f554e545f4558434545445f4c494d49544865726d657a3a3a5f736166655472616e7366657246726f6d3a2045524332305f5452414e5346455246524f4d5f4641494c45444865726d657a3a3a5f7065726d69743a205045524d49545f4f574e45525f4d5553545f42455f5448455f53454e4445524865726d657a3a3a5f6164644c315472616e73616374696f6e3a204c4f4144414d4f554e545f4d5553545f42455f305f49465f455849544865726d657a3a3a5f736166655472616e736665723a2045524332305f5452414e534645525f4641494c45444865726d657a3a3a666f72676542617463683a2041554354494f4e5f44454e494544496e7374616e7457697468647261774d616e616765723a3a7570646174655769746864726177616c44656c61793a204558434545445f4d41585f5749544844524157414c5f44454c41594865726d657a3a3a5f6164644c315472616e73616374696f6e3a20494e56414c49445f4352454154455f4143434f554e545f574954485f4e4f5f424142594a55424865726d657a3a3a616464546f6b656e3a20414444524553535f305f494e56414c49444865726d657a3a3a666f72676542617463683a20494e54454e414c5f54585f4e4f545f414c4c4f5745444865726d657a3a3a616464546f6b656e3a20544f4b454e5f4c4953545f46554c4c4865726d657a3a3a5f6164644c315472616e73616374696f6e3a20414d4f554e545f4558434545445f4c494d49544865726d657a3a3a5f6164644c315472616e73616374696f6e3a20494e56414c49445f46524f4d4944584865726d657a3a3a5f7065726d69743a205350454e4445525f4d5553545f42455f544849534865726d657a3a3a6164644c315472616e73616374696f6e3a204d53475f56414c55455f4e4f545f455155414c5f304865726d657a3a3a77697468647261774d65726b6c6550726f6f663a20494e5354414e545f57495448445241575f5741535445445f464f525f544849535f5553445f52414e47454865726d657a48656c706572733a3a5f636865636b5369673a20494e56414c49445f5349474e41545552454865726d657a3a3a77697468647261774d65726b6c6550726f6f663a2057495448445241575f414c52454144595f444f4e45536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774865726d657a3a3a7769746864726177436972637569743a2057495448445241575f414c52454144595f444f4e454865726d657a3a3a5f6275696c644c31446174613a20544f4b454e5f4e4f545f52454749535445524544436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65644865726d657a3a3a7769746864726177436972637569743a20494e5354414e545f57495448445241575f5741535445445f464f525f544849535f5553445f52414e47454865726d657a3a3a5f6164644c315472616e73616374696f6e3a20424142594a55425f4d5553545f42455f305f49465f4e4f545f4352454154455f4143434f554e544865726d657a3a3a5f6275696c644c31446174613a204c315f54585f4f564552464c4f57496e7374616e7457697468647261774d616e616765723a3a736166654d6f64653a204f4e595f534146455459414444524553535f4f525f474f5645524e414e43454865726d657a3a3a5f6164644c315472616e73616374696f6e3a20494e56414c49445f544f4944584865726d657a3a3a7769746864726177436972637569743a20494e56414c49445f5a4b5f50524f4f464865726d657a3a3a5f736166655472616e736665723a204554485f5452414e534645525f4641494c45444865726d657a3a3a5f7065726d69743a205045524d49545f414d4f554e545f444f45535f4e4f545f4d415443484865726d657a3a3a666f72676542617463683a204c314c3242415443485f52455155495245444865726d657a3a3a6164644c315472616e73616374696f6e3a20544f4b454e5f4e4f545f524547495354455245444865726d657a3a3a77697468647261774d65726b6c6550726f6f663a20534d545f50524f4f465f494e56414c4944496e7374616e7457697468647261774d616e616765723a3a5f66696e644275636b65744964783a204558434545445f4d41585f414d4f554e544865726d657a3a3a616464546f6b656e3a20544f54414c5f535550504c595f5a45524f4865726d657a3a3a5f636f6e73747275637443697263756974496e7075743a204c325f54585f4f564552464c4f57496e7374616e7457697468647261774d616e616765723a3a6f6e6c79476f7665726e616e63653a204f4e4c595f474f5645524e414e43455f41444452455353496e7374616e7457697468647261774d616e616765723a3a7570646174654275636b657473506172616d65746572733a205749544844524157414c535f4d5553545f42455f4c4553535f5448414e5f4d41585749544844524157414c534865726d657a3a3a5f73616665417070726f76653a2045524332305f415050524f56455f4641494c45444865726d657a3a3a6164644c315472616e73616374696f6e3a204c4f4144414d4f554e545f45524332305f444f45535f4e4f545f4d415443484920617574686f72697a65207468697320626162796a75626a7562206b657920666f72206865726d657a20726f6c6c7570206163636f756e74206372656174696f6e4865726d657a3a3a5f6164644c315472616e73616374696f6e3a20414d4f554e545f4d5553545f42455f305f49465f4e4f545f5452414e534645524865726d657a41756374696f6e50726f746f636f6c3a3a5f7065726d69743a204e4f545f56414c49445f43414c4c4865726d657a48656c706572733a3a5f636865636b5369673a20494e56414c49445f535f56414c55454865726d657a3a3a6164644c315472616e73616374696f6e3a204c4f4144414d4f554e545f4554485f444f45535f4e4f545f4d41544348a2646970667358221220926bb0edf500bb7a2e370f1efc672fd95e7b898d16c4c81f4f70ab921449d81164736f6c634300060c0033"
  35
  36// DeployHermez deploys a new Ethereum contract, binding an instance of Hermez to it.
  37func DeployHermez(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Hermez, error) {
  38	parsed, err := abi.JSON(strings.NewReader(HermezABI))
  39	if err != nil {
  40		return common.Address{}, nil, nil, tracerr.Wrap(err)
  41	}
  42
  43	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(HermezBin), backend)
  44	if err != nil {
  45		return common.Address{}, nil, nil, tracerr.Wrap(err)
  46	}
  47	return address, tx, &Hermez{HermezCaller: HermezCaller{contract: contract}, HermezTransactor: HermezTransactor{contract: contract}, HermezFilterer: HermezFilterer{contract: contract}}, nil
  48}
  49
  50// Hermez is an auto generated Go binding around an Ethereum contract.
  51type Hermez struct {
  52	HermezCaller     // Read-only binding to the contract
  53	HermezTransactor // Write-only binding to the contract
  54	HermezFilterer   // Log filterer for contract events
  55}
  56
  57// HermezCaller is an auto generated read-only Go binding around an Ethereum contract.
  58type HermezCaller struct {
  59	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  60}
  61
  62// HermezTransactor is an auto generated write-only Go binding around an Ethereum contract.
  63type HermezTransactor struct {
  64	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  65}
  66
  67// HermezFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  68type HermezFilterer struct {
  69	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  70}
  71
  72// HermezSession is an auto generated Go binding around an Ethereum contract,
  73// with pre-set call and transact options.
  74type HermezSession struct {
  75	Contract     *Hermez           // Generic contract binding to set the session for
  76	CallOpts     bind.CallOpts     // Call options to use throughout this session
  77	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  78}
  79
  80// HermezCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  81// with pre-set call options.
  82type HermezCallerSession struct {
  83	Contract *HermezCaller // Generic contract caller binding to set the session for
  84	CallOpts bind.CallOpts // Call options to use throughout this session
  85}
  86
  87// HermezTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  88// with pre-set transact options.
  89type HermezTransactorSession struct {
  90	Contract     *HermezTransactor // Generic contract transactor binding to set the session for
  91	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  92}
  93
  94// HermezRaw is an auto generated low-level Go binding around an Ethereum contract.
  95type HermezRaw struct {
  96	Contract *Hermez // Generic contract binding to access the raw methods on
  97}
  98
  99// HermezCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
 100type HermezCallerRaw struct {
 101	Contract *HermezCaller // Generic read-only contract binding to access the raw methods on
 102}
 103
 104// HermezTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
 105type HermezTransactorRaw struct {
 106	Contract *HermezTransactor // Generic write-only contract binding to access the raw methods on
 107}
 108
 109// NewHermez creates a new instance of Hermez, bound to a specific deployed contract.
 110func NewHermez(address common.Address, backend bind.ContractBackend) (*Hermez, error) {
 111	contract, err := bindHermez(address, backend, backend, backend)
 112	if err != nil {
 113		return nil, tracerr.Wrap(err)
 114	}
 115	return &Hermez{HermezCaller: HermezCaller{contract: contract}, HermezTransactor: HermezTransactor{contract: contract}, HermezFilterer: HermezFilterer{contract: contract}}, nil
 116}
 117
 118// NewHermezCaller creates a new read-only instance of Hermez, bound to a specific deployed contract.
 119func NewHermezCaller(address common.Address, caller bind.ContractCaller) (*HermezCaller, error) {
 120	contract, err := bindHermez(address, caller, nil, nil)
 121	if err != nil {
 122		return nil, tracerr.Wrap(err)
 123	}
 124	return &HermezCaller{contract: contract}, nil
 125}
 126
 127// NewHermezTransactor creates a new write-only instance of Hermez, bound to a specific deployed contract.
 128func NewHermezTransactor(address common.Address, transactor bind.ContractTransactor) (*HermezTransactor, error) {
 129	contract, err := bindHermez(address, nil, transactor, nil)
 130	if err != nil {
 131		return nil, tracerr.Wrap(err)
 132	}
 133	return &HermezTransactor{contract: contract}, nil
 134}
 135
 136// NewHermezFilterer creates a new log filterer instance of Hermez, bound to a specific deployed contract.
 137func NewHermezFilterer(address common.Address, filterer bind.ContractFilterer) (*HermezFilterer, error) {
 138	contract, err := bindHermez(address, nil, nil, filterer)
 139	if err != nil {
 140		return nil, tracerr.Wrap(err)
 141	}
 142	return &HermezFilterer{contract: contract}, nil
 143}
 144
 145// bindHermez binds a generic wrapper to an already deployed contract.
 146func bindHermez(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 147	parsed, err := abi.JSON(strings.NewReader(HermezABI))
 148	if err != nil {
 149		return nil, tracerr.Wrap(err)
 150	}
 151	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 152}
 153
 154// Call invokes the (constant) contract method with params as input values and
 155// sets the output to result. The result type might be a single field for simple
 156// returns, a slice of interfaces for anonymous returns and a struct for named
 157// returns.
 158func (_Hermez *HermezRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 159	return _Hermez.Contract.HermezCaller.contract.Call(opts, result, method, params...)
 160}
 161
 162// Transfer initiates a plain transaction to move funds to the contract, calling
 163// its default method if one is available.
 164func (_Hermez *HermezRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 165	return _Hermez.Contract.HermezTransactor.contract.Transfer(opts)
 166}
 167
 168// Transact invokes the (paid) contract method with params as input values.
 169func (_Hermez *HermezRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 170	return _Hermez.Contract.HermezTransactor.contract.Transact(opts, method, params...)
 171}
 172
 173// Call invokes the (constant) contract method with params as input values and
 174// sets the output to result. The result type might be a single field for simple
 175// returns, a slice of interfaces for anonymous returns and a struct for named
 176// returns.
 177func (_Hermez *HermezCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 178	return _Hermez.Contract.contract.Call(opts, result, method, params...)
 179}
 180
 181// Transfer initiates a plain transaction to move funds to the contract, calling
 182// its default method if one is available.
 183func (_Hermez *HermezTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 184	return _Hermez.Contract.contract.Transfer(opts)
 185}
 186
 187// Transact invokes the (paid) contract method with params as input values.
 188func (_Hermez *HermezTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 189	return _Hermez.Contract.contract.Transact(opts, method, params...)
 190}
 191
 192// ABSOLUTEMAXL1L2BATCHTIMEOUT is a free data retrieval call binding the contract method 0x95a09f2a.
 193//
 194// Solidity: function ABSOLUTE_MAX_L1L2BATCHTIMEOUT() view returns(uint8)
 195func (_Hermez *HermezCaller) ABSOLUTEMAXL1L2BATCHTIMEOUT(opts *bind.CallOpts) (uint8, error) {
 196	var (
 197		ret0 = new(uint8)
 198	)
 199	out := ret0
 200	err := _Hermez.contract.Call(opts, out, "ABSOLUTE_MAX_L1L2BATCHTIMEOUT")
 201	return *ret0, tracerr.Wrap(err)
 202}
 203
 204// ABSOLUTEMAXL1L2BATCHTIMEOUT is a free data retrieval call binding the contract method 0x95a09f2a.
 205//
 206// Solidity: function ABSOLUTE_MAX_L1L2BATCHTIMEOUT() view returns(uint8)
 207func (_Hermez *HermezSession) ABSOLUTEMAXL1L2BATCHTIMEOUT() (uint8, error) {
 208	return _Hermez.Contract.ABSOLUTEMAXL1L2BATCHTIMEOUT(&_Hermez.CallOpts)
 209}
 210
 211// ABSOLUTEMAXL1L2BATCHTIMEOUT is a free data retrieval call binding the contract method 0x95a09f2a.
 212//
 213// Solidity: function ABSOLUTE_MAX_L1L2BATCHTIMEOUT() view returns(uint8)
 214func (_Hermez *HermezCallerSession) ABSOLUTEMAXL1L2BATCHTIMEOUT() (uint8, error) {
 215	return _Hermez.Contract.ABSOLUTEMAXL1L2BATCHTIMEOUT(&_Hermez.CallOpts)
 216}
 217
 218// Buckets is a free data retrieval call binding the contract method 0x9b51fb0d.
 219//
 220// Solidity: function buckets(uint256 ) view returns(uint256 ceilUSD, uint256 blockStamp, uint256 withdrawals, uint256 blockWithdrawalRate, uint256 maxWithdrawals)
 221func (_Hermez *HermezCaller) Buckets(opts *bind.CallOpts, arg0 *big.Int) (struct {
 222	CeilUSD             *big.Int
 223	BlockStamp          *big.Int
 224	Withdrawals         *big.Int
 225	BlockWithdrawalRate *big.Int
 226	MaxWithdrawals      *big.Int
 227}, error) {
 228	ret := new(struct {
 229		CeilUSD             *big.Int
 230		BlockStamp          *big.Int
 231		Withdrawals         *big.Int
 232		BlockWithdrawalRate *big.Int
 233		MaxWithdrawals      *big.Int
 234	})
 235	out := ret
 236	err := _Hermez.contract.Call(opts, out, "buckets", arg0)
 237	return *ret, tracerr.Wrap(err)
 238}
 239
 240// Buckets is a free data retrieval call binding the contract method 0x9b51fb0d.
 241//
 242// Solidity: function buckets(uint256 ) view returns(uint256 ceilUSD, uint256 blockStamp, uint256 withdrawals, uint256 blockWithdrawalRate, uint256 maxWithdrawals)
 243func (_Hermez *HermezSession) Buckets(arg0 *big.Int) (struct {
 244	CeilUSD             *big.Int
 245	BlockStamp          *big.Int
 246	Withdrawals         *big.Int
 247	BlockWithdrawalRate *big.Int
 248	MaxWithdrawals      *big.Int
 249}, error) {
 250	return _Hermez.Contract.Buckets(&_Hermez.CallOpts, arg0)
 251}
 252
 253// Buckets is a free data retrieval call binding the contract method 0x9b51fb0d.
 254//
 255// Solidity: function buckets(uint256 ) view returns(uint256 ceilUSD, uint256 blockStamp, uint256 withdrawals, uint256 blockWithdrawalRate, uint256 maxWithdrawals)
 256func (_Hermez *HermezCallerSession) Buckets(arg0 *big.Int) (struct {
 257	CeilUSD             *big.Int
 258	BlockStamp          *big.Int
 259	Withdrawals         *big.Int
 260	BlockWithdrawalRate *big.Int
 261	MaxWithdrawals      *big.Int
 262}, error) {
 263	return _Hermez.Contract.Buckets(&_Hermez.CallOpts, arg0)
 264}
 265
 266// ExitNullifierMap is a free data retrieval call binding the contract method 0xe9b5269c.
 267//
 268// Solidity: function exitNullifierMap(uint64 , uint48 ) view returns(bool)
 269func (_Hermez *HermezCaller) ExitNullifierMap(opts *bind.CallOpts, arg0 uint64, arg1 *big.Int) (bool, error) {
 270	var (
 271		ret0 = new(bool)
 272	)
 273	out := ret0
 274	err := _Hermez.contract.Call(opts, out, "exitNullifierMap", arg0, arg1)
 275	return *ret0, tracerr.Wrap(err)
 276}
 277
 278// ExitNullifierMap is a free data retrieval call binding the contract method 0xe9b5269c.
 279//
 280// Solidity: function exitNullifierMap(uint64 , uint48 ) view returns(bool)
 281func (_Hermez *HermezSession) ExitNullifierMap(arg0 uint64, arg1 *big.Int) (bool, error) {
 282	return _Hermez.Contract.ExitNullifierMap(&_Hermez.CallOpts, arg0, arg1)
 283}
 284
 285// ExitNullifierMap is a free data retrieval call binding the contract method 0xe9b5269c.
 286//
 287// Solidity: function exitNullifierMap(uint64 , uint48 ) view returns(bool)
 288func (_Hermez *HermezCallerSession) ExitNullifierMap(arg0 uint64, arg1 *big.Int) (bool, error) {
 289	return _Hermez.Contract.ExitNullifierMap(&_Hermez.CallOpts, arg0, arg1)
 290}
 291
 292// ExitRootsMap is a free data retrieval call binding the contract method 0x506d5463.
 293//
 294// Solidity: function exitRootsMap(uint64 ) view returns(uint256)
 295func (_Hermez *HermezCaller) ExitRootsMap(opts *bind.CallOpts, arg0 uint64) (*big.Int, error) {
 296	var (
 297		ret0 = new(*big.Int)
 298	)
 299	out := ret0
 300	err := _Hermez.contract.Call(opts, out, "exitRootsMap", arg0)
 301	return *ret0, tracerr.Wrap(err)
 302}
 303
 304// ExitRootsMap is a free data retrieval call binding the contract method 0x506d5463.
 305//
 306// Solidity: function exitRootsMap(uint64 ) view returns(uint256)
 307func (_Hermez *HermezSession) ExitRootsMap(arg0 uint64) (*big.Int, error) {
 308	return _Hermez.Contract.ExitRootsMap(&_Hermez.CallOpts, arg0)
 309}
 310
 311// ExitRootsMap is a free data retrieval call binding the contract method 0x506d5463.
 312//
 313// Solidity: function exitRootsMap(uint64 ) view returns(uint256)
 314func (_Hermez *HermezCallerSession) ExitRootsMap(arg0 uint64) (*big.Int, error) {
 315	return _Hermez.Contract.ExitRootsMap(&_Hermez.CallOpts, arg0)
 316}
 317
 318// FeeAddToken is a free data retrieval call binding the contract method 0xbded9bb8.
 319//
 320// Solidity: function feeAddToken() view returns(uint256)
 321func (_Hermez *HermezCaller) FeeAddToken(opts *bind.CallOpts) (*big.Int, error) {
 322	var (
 323		ret0 = new(*big.Int)
 324	)
 325	out := ret0
 326	err := _Hermez.contract.Call(opts, out, "feeAddToken")
 327	return *ret0, tracerr.Wrap(err)
 328}
 329
 330// FeeAddToken is a free data retrieval call binding the contract method 0xbded9bb8.
 331//
 332// Solidity: function feeAddToken() view returns(uint256)
 333func (_Hermez *HermezSession) FeeAddToken() (*big.Int, error) {
 334	return _Hermez.Contract.FeeAddToken(&_Hermez.CallOpts)
 335}
 336
 337// FeeAddToken is a free data retrieval call binding the contract method 0xbded9bb8.
 338//
 339// Solidity: function feeAddToken() view returns(uint256)
 340func (_Hermez *HermezCallerSession) FeeAddToken() (*big.Int, error) {
 341	return _Hermez.Contract.FeeAddToken(&_Hermez.CallOpts)
 342}
 343
 344// ForgeL1L2BatchTimeout is a free data retrieval call binding the contract method 0xa3275838.
 345//
 346// Solidity: function forgeL1L2BatchTimeout() view returns(uint8)
 347func (_Hermez *HermezCaller) ForgeL1L2BatchTimeout(opts *bind.CallOpts) (uint8, error) {
 348	var (
 349		ret0 = new(uint8)
 350	)
 351	out := ret0
 352	err := _Hermez.contract.Call(opts, out, "forgeL1L2BatchTimeout")
 353	return *ret0, tracerr.Wrap(err)
 354}
 355
 356// ForgeL1L2BatchTimeout is a free data retrieval call binding the contract method 0xa3275838.
 357//
 358// Solidity: function forgeL1L2BatchTimeout() view returns(uint8)
 359func (_Hermez *HermezSession) ForgeL1L2BatchTimeout() (uint8, error) {
 360	return _Hermez.Contract.ForgeL1L2BatchTimeout(&_Hermez.CallOpts)
 361}
 362
 363// ForgeL1L2BatchTimeout is a free data retrieval call binding the contract method 0xa3275838.
 364//
 365// Solidity: function forgeL1L2BatchTimeout() view returns(uint8)
 366func (_Hermez *HermezCallerSession) ForgeL1L2BatchTimeout() (uint8, error) {
 367	return _Hermez.Contract.ForgeL1L2BatchTimeout(&_Hermez.CallOpts)
 368}
 369
 370// HermezAuctionContract is a free data retrieval call binding the contract method 0x2bd83626.
 371//
 372// Solidity: function hermezAuctionContract() view returns(address)
 373func (_Hermez *HermezCaller) HermezAuctionContract(opts *bind.CallOpts) (common.Address, error) {
 374	var (
 375		ret0 = new(common.Address)
 376	)
 377	out := ret0
 378	err := _Hermez.contract.Call(opts, out, "hermezAuctionContract")
 379	return *ret0, tracerr.Wrap(err)
 380}
 381
 382// HermezAuctionContract is a free data retrieval call binding the contract method 0x2bd83626.
 383//
 384// Solidity: function hermezAuctionContract() view returns(address)
 385func (_Hermez *HermezSession) HermezAuctionContract() (common.Address, error) {
 386	return _Hermez.Contract.HermezAuctionContract(&_Hermez.CallOpts)
 387}
 388
 389// HermezAuctionContract is a free data retrieval call binding the contract method 0x2bd83626.
 390//
 391// Solidity: function hermezAuctionContract() view returns(address)
 392func (_Hermez *HermezCallerSession) HermezAuctionContract() (common.Address, error) {
 393	return _Hermez.Contract.HermezAuctionContract(&_Hermez.CallOpts)
 394}
 395
 396// HermezGovernanceDAOAddress is a free data retrieval call binding the contract method 0xdd46bf84.
 397//
 398// Solidity: function hermezGovernanceDAOAddress() view returns(address)
 399func (_Hermez *HermezCaller) HermezGovernanceDAOAddress(opts *bind.CallOpts) (common.Address, error) {
 400	var (
 401		ret0 = new(common.Address)
 402	)
 403	out := ret0
 404	err := _Hermez.contract.Call(opts, out, "hermezGovernanceDAOAddress")
 405	return *ret0, tracerr.Wrap(err)
 406}
 407
 408// HermezGovernanceDAOAddress is a free data retrieval call binding the contract method 0xdd46bf84.
 409//
 410// Solidity: function hermezGovernanceDAOAddress() view returns(address)
 411func (_Hermez *HermezSession) HermezGovernanceDAOAddress() (common.Address, error) {
 412	return _Hermez.Contract.HermezGovernanceDAOAddress(&_Hermez.CallOpts)
 413}
 414
 415// HermezGovernanceDAOAddress is a free data retrieval call binding the contract method 0xdd46bf84.
 416//
 417// Solidity: function hermezGovernanceDAOAddress() view returns(address)
 418func (_Hermez *HermezCallerSession) HermezGovernanceDAOAddress() (common.Address, error) {
 419	return _Hermez.Contract.HermezGovernanceDAOAddress(&_Hermez.CallOpts)
 420}
 421
 422// InstantWithdrawalViewer is a free data retrieval call binding the contract method 0x375110aa.
 423//
 424// Solidity: function instantWithdrawalViewer(address tokenAddress, uint192 amount) view returns(bool)
 425func (_Hermez *HermezCaller) InstantWithdrawalViewer(opts *bind.CallOpts, tokenAddress common.Address, amount *big.Int) (bool, error) {
 426	var (
 427		ret0 = new(bool)
 428	)
 429	out := ret0
 430	err := _Hermez.contract.Call(opts, out, "instantWithdrawalViewer", tokenAddress, amount)
 431	return *ret0, tracerr.Wrap(err)
 432}
 433
 434// InstantWithdrawalViewer is a free data retrieval call binding the contract method 0x375110aa.
 435//
 436// Solidity: function instantWithdrawalViewer(address tokenAddress, uint192 amount) view returns(bool)
 437func (_Hermez *HermezSession) InstantWithdrawalViewer(tokenAddress common.Address, amount *big.Int) (bool, error) {
 438	return _Hermez.Contract.InstantWithdrawalViewer(&_Hermez.CallOpts, tokenAddress, amount)
 439}
 440
 441// InstantWithdrawalViewer is a free data retrieval call binding the contract method 0x375110aa.
 442//
 443// Solidity: function instantWithdrawalViewer(address tokenAddress, uint192 amount) view returns(bool)
 444func (_Hermez *HermezCallerSession) InstantWithdrawalViewer(tokenAddress common.Address, amount *big.Int) (bool, error) {
 445	return _Hermez.Contract.InstantWithdrawalViewer(&_Hermez.CallOpts, tokenAddress, amount)
 446}
 447
 448// LastForgedBatch is a free data retrieval call binding the contract method 0x44e0b2ce.
 449//
 450// Solidity: function lastForgedBatch() view returns(uint64)
 451func (_Hermez *HermezCaller) LastForgedBatch(opts *bind.CallOpts) (uint64, error) {
 452	var (
 453		ret0 = new(uint64)
 454	)
 455	out := ret0
 456	err := _Hermez.contract.Call(opts, out, "lastForgedBatch")
 457	return *ret0, tracerr.Wrap(err)
 458}
 459
 460// LastForgedBatch is a free data retrieval call binding the contract method 0x44e0b2ce.
 461//
 462// Solidity: function lastForgedBatch() view returns(uint64)
 463func (_Hermez *HermezSession) LastForgedBatch() (uint64, error) {
 464	return _Hermez.Contract.LastForgedBatch(&_Hermez.CallOpts)
 465}
 466
 467// LastForgedBatch is a free data retrieval call binding the contract method 0x44e0b2ce.
 468//
 469// Solidity: function lastForgedBatch() view returns(uint64)
 470func (_Hermez *HermezCallerSession) LastForgedBatch() (uint64, error) {
 471	return _Hermez.Contract.LastForgedBatch(&_Hermez.CallOpts)
 472}
 473
 474// LastIdx is a free data retrieval call binding the contract method 0xd486645c.
 475//
 476// Solidity: function lastIdx() view returns(uint48)
 477func (_Hermez *HermezCaller) LastIdx(opts *bind.CallOpts) (*big.Int, error) {
 478	var (
 479		ret0 = new(*big.Int)
 480	)
 481	out := ret0
 482	err := _Hermez.contract.Call(opts, out, "lastIdx")
 483	return *ret0, tracerr.Wrap(err)
 484}
 485
 486// LastIdx is a free data retrieval call binding the contract method 0xd486645c.
 487//
 488// Solidity: function lastIdx() view returns(uint48)
 489func (_Hermez *HermezSession) LastIdx() (*big.Int, error) {
 490	return _Hermez.Contract.LastIdx(&_Hermez.CallOpts)
 491}
 492
 493// LastIdx is a free data retrieval call binding the contract method 0xd486645c.
 494//
 495// Solidity: function lastIdx() view returns(uint48)
 496func (_Hermez *HermezCallerSession) LastIdx() (*big.Int, error) {
 497	return _Hermez.Contract.LastIdx(&_Hermez.CallOpts)
 498}
 499
 500// LastL1L2Batch is a free data retrieval call binding the contract method 0x84ef9ed4.
 501//
 502// Solidity: function lastL1L2Batch() view returns(uint64)
 503func (_Hermez *HermezCaller) LastL1L2Batch(opts *bind.CallOpts) (uint64, error) {
 504	var (
 505		ret0 = new(uint64)
 506	)
 507	out := ret0
 508	err := _Hermez.contract.Call(opts, out, "lastL1L2Batch")
 509	return *ret0, tracerr.Wrap(err)
 510}
 511
 512// LastL1L2Batch is a free data retrieval call binding the contract method 0x84ef9ed4.
 513//
 514// Solidity: function lastL1L2Batch() view returns(uint64)
 515func (_Hermez *HermezSession) LastL1L2Batch() (uint64, error) {
 516	return _Hermez.Contract.LastL1L2Batch(&_Hermez.CallOpts)
 517}
 518
 519// LastL1L2Batch is a free data retrieval call binding the contract method 0x84ef9ed4.
 520//
 521// Solidity: function lastL1L2Batch() view returns(uint64)
 522func (_Hermez *HermezCallerSession) LastL1L2Batch() (uint64, error) {
 523	return _Hermez.Contract.LastL1L2Batch(&_Hermez.CallOpts)
 524}
 525
 526// MapL1TxQueue is a free data retrieval call binding the contract method 0xe796fcf3.
 527//
 528// Solidity: function mapL1TxQueue(uint64 ) view returns(bytes)
 529func (_Hermez *HermezCaller) MapL1TxQueue(opts *bind.CallOpts, arg0 uint64) ([]byte, error) {
 530	var (
 531		ret0 = new([]byte)
 532	)
 533	out := ret0
 534	err := _Hermez.contract.Call(opts, out, "mapL1TxQueue", arg0)
 535	return *ret0, tracerr.Wrap(err)
 536}
 537
 538// MapL1TxQueue is a free data retrieval call binding the contract method 0xe796fcf3.
 539//
 540// Solidity: function mapL1TxQueue(uint64 ) view returns(bytes)
 541func (_Hermez *HermezSession) MapL1TxQueue(arg0 uint64) ([]byte, error) {
 542	return _Hermez.Contract.MapL1TxQueue(&_Hermez.CallOpts, arg0)
 543}
 544
 545// MapL1TxQueue is a free data retrieval call binding the contract method 0xe796fcf3.
 546//
 547// Solidity: function mapL1TxQueue(uint64 ) view returns(bytes)
 548func (_Hermez *HermezCallerSession) MapL1TxQueue(arg0 uint64) ([]byte, error) {
 549	return _Hermez.Contract.MapL1TxQueue(&_Hermez.CallOpts, arg0)
 550}
 551
 552// NextL1FillingQueue is a free data retrieval call binding the contract method 0x0ee8e52b.
 553//
 554// Solidity: function nextL1FillingQueue() view returns(uint64)
 555func (_Hermez *HermezCaller) NextL1FillingQueue(opts *bind.CallOpts) (uint64, error) {
 556	var (
 557		ret0 = new(uint64)
 558	)
 559	out := ret0
 560	err := _Hermez.contract.Call(opts, out, "nextL1FillingQueue")
 561	return *ret0, tracerr.Wrap(err)
 562}
 563
 564// NextL1FillingQueue is a free data retrieval call binding the contract method 0x0ee8e52b.
 565//
 566// Solidity: function nextL1FillingQueue() view returns(uint64)
 567func (_Hermez *HermezSession) NextL1FillingQueue() (uint64, error) {
 568	return _Hermez.Contract.NextL1FillingQueue(&_Hermez.CallOpts)
 569}
 570
 571// NextL1FillingQueue is a free data retrieval call binding the contract method 0x0ee8e52b.
 572//
 573// Solidity: function nextL1FillingQueue() view returns(uint64)
 574func (_Hermez *HermezCallerSession) NextL1FillingQueue() (uint64, error) {
 575	return _Hermez.Contract.NextL1FillingQueue(&_Hermez.CallOpts)
 576}
 577
 578// NextL1ToForgeQueue is a free data retrieval call binding the contract method 0xd0f32e67.
 579//
 580// Solidity: function nextL1ToForgeQueue() view returns(uint64)
 581func (_Hermez *HermezCaller) NextL1ToForgeQueue(opts *bind.CallOpts) (uint64, error) {
 582	var (
 583		ret0 = new(uint64)
 584	)
 585	out := ret0
 586	err := _Hermez.contract.Call(opts, out, "nextL1ToForgeQueue")
 587	return *ret0, tracerr.Wrap(err)
 588}
 589
 590// NextL1ToForgeQueue is a free data retrieval call binding the contract method 0xd0f32e67.
 591//
 592// Solidity: function nextL1ToForgeQueue() view returns(uint64)
 593func (_Hermez *HermezSession) NextL1ToForgeQueue() (uint64, error) {
 594	return _Hermez.Contract.NextL1ToForgeQueue(&_Hermez.CallOpts)
 595}
 596
 597// NextL1ToForgeQueue is a free data retrieval call binding the contract method 0xd0f32e67.
 598//
 599// Solidity: function nextL1ToForgeQueue() view returns(uint64)
 600func (_Hermez *HermezCallerSession) NextL1ToForgeQueue() (uint64, error) {
 601	return _Hermez.Contract.NextL1ToForgeQueue(&_Hermez.CallOpts)
 602}
 603
 604// RegisterTokensCount is a free data retrieval call binding the contract method 0x9f34e9a3.
 605//
 606// Solidity: function registerTokensCount() view returns(uint256)
 607func (_Hermez *HermezCaller) RegisterTokensCount(opts *bind.CallOpts) (*big.Int, error) {
 608	var (
 609		ret0 = new(*big.Int)
 610	)
 611	out := ret0
 612	err := _Hermez.contract.Call(opts, out, "registerTokensCount")
 613	return *ret0, tracerr.Wrap(err)
 614}
 615
 616// RegisterTokensCount is a free data retrieval call binding the contract method 0x9f34e9a3.
 617//
 618// Solidity: function registerTokensCount() view returns(uint256)
 619func (_Hermez *HermezSession) RegisterTokensCount() (*big.Int, error) {
 620	return _Hermez.Contract.RegisterTokensCount(&_Hermez.CallOpts)
 621}
 622
 623// RegisterTokensCount is a free data retrieval call binding the contract method 0x9f34e9a3.
 624//
 625// Solidity: function registerTokensCount() view returns(uint256)
 626func (_Hermez *HermezCallerSession) RegisterTokensCount() (*big.Int, error) {
 627	return _Hermez.Contract.RegisterTokensCount(&_Hermez.CallOpts)
 628}
 629
 630// RollupVerifiers is a free data retrieval call binding the contract method 0x38330200.
 631//
 632// Solidity: function rollupVerifiers(uint256 ) view returns(address verifierInterface, uint256 maxTx, uint256 nLevels)
 633func (_Hermez *HermezCaller) RollupVerifiers(opts *bind.CallOpts, arg0 *big.Int) (struct {
 634	VerifierInterface common.Address
 635	MaxTx             *big.Int
 636	NLevels           *big.Int
 637}, error) {
 638	ret := new(struct {
 639		VerifierInterface common.Address
 640		MaxTx             *big.Int
 641		NLevels           *big.Int
 642	})
 643	out := ret
 644	err := _Hermez.contract.Call(opts, out, "rollupVerifiers", arg0)
 645	return *ret, tracerr.Wrap(err)
 646}
 647
 648// RollupVerifiers is a free data retrieval call binding the contract method 0x38330200.
 649//
 650// Solidity: function rollupVerifiers(uint256 ) view returns(address verifierInterface, uint256 maxTx, uint256 nLevels)
 651func (_Hermez *HermezSession) RollupVerifiers(arg0 *big.Int) (struct {
 652	VerifierInterface common.Address
 653	MaxTx             *big.Int
 654	NLevels           *big.Int
 655}, error) {
 656	return _Hermez.Contract.RollupVerifiers(&_Hermez.CallOpts, arg0)
 657}
 658
 659// RollupVerifiers is a free data retrieval call binding the contract method 0x38330200.
 660//
 661// Solidity: function rollupVerifiers(uint256 ) view returns(address verifierInterface, uint256 maxTx, uint256 nLevels)
 662func (_Hermez *HermezCallerSession) RollupVerifiers(arg0 *big.Int) (struct {
 663	VerifierInterface common.Address
 664	MaxTx             *big.Int
 665	NLevels           *big.Int
 666}, error) {
 667	return _Hermez.Contract.RollupVerifiers(&_Hermez.CallOpts, arg0)
 668}
 669
 670// SafetyAddress is a free data retrieval call binding the contract method 0xe56e27ae.
 671//
 672// Solidity: function safetyAddress() view returns(address)
 673func (_Hermez *HermezCaller) SafetyAddress(opts *bind.CallOpts) (common.Address, error) {
 674	var (
 675		ret0 = new(common.Address)
 676	)
 677	out := ret0
 678	err := _Hermez.contract.Call(opts, out, "safetyAddress")
 679	return *ret0, tracerr.Wrap(err)
 680}
 681
 682// SafetyAddress is a free data retrieval call binding the contract method 0xe56e27ae.
 683//
 684// Solidity: function safetyAddress() view returns(address)
 685func (_Hermez *HermezSession) SafetyAddress() (common.Address, error) {
 686	return _Hermez.Contract.SafetyAddress(&_Hermez.CallOpts)
 687}
 688
 689// SafetyAddress is a free data retrieval call binding the contract method 0xe56e27ae.
 690//
 691// Solidity: function safetyAddress() view returns(address)
 692func (_Hermez *HermezCallerSession) SafetyAddress() (common.Address, error) {
 693	return _Hermez.Contract.SafetyAddress(&_Hermez.CallOpts)
 694}
 695
 696// StateRootMap is a free data retrieval call binding the contract method 0x86c6acc1.
 697//
 698// Solidity: function stateRootMap(uint64 ) view returns(uint256)
 699func (_Hermez *HermezCaller) StateRootMap(opts *bind.CallOpts, arg0 uint64) (*big.Int, error) {
 700	var (
 701		ret0 = new(*big.Int)
 702	)
 703	out := ret0
 704	err := _Hermez.contract.Call(opts, out, "stateRootMap", arg0)
 705	return *ret0, tracerr.Wrap(err)
 706}
 707
 708// StateRootMap is a free data retrieval call binding the contract method 0x86c6acc1.
 709//
 710// Solidity: function stateRootMap(uint64 ) view returns(uint256)
 711func (_Hermez *HermezSession) StateRootMap(arg0 uint64) (*big.Int, error) {
 712	return _Hermez.Contract.StateRootMap(&_Hermez.CallOpts, arg0)
 713}
 714
 715// StateRootMap is a free data retrieval call binding the contract method 0x86c6acc1.
 716//
 717// Solidity: function stateRootMap(uint64 ) view returns(uint256)
 718func (_Hermez *HermezCallerSession) StateRootMap(arg0 uint64) (*big.Int, error) {
 719	return _Hermez.Contract.StateRootMap(&_Hermez.CallOpts, arg0)
 720}
 721
 722// TokenExchange is a free data retrieval call binding the contract method 0x0dd94b96.
 723//
 724// Solidity: function tokenExchange(address ) view returns(uint64)
 725func (_Hermez *HermezCaller) TokenExchange(opts *bind.CallOpts, arg0 common.Address) (uint64, error) {
 726	var (
 727		ret0 = new(uint64)
 728	)
 729	out := ret0
 730	err := _Hermez.contract.Call(opts, out, "tokenExchange", arg0)
 731	return *ret0, tracerr.Wrap(err)
 732}
 733
 734// TokenExchange is a free data retrieval call binding the contract method 0x0dd94b96.
 735//
 736// Solidity: function tokenExchange(address ) view returns(uint64)
 737func (_Hermez *HermezSession) TokenExchange(arg0 common.Address) (uint64, error) {
 738	return _Hermez.Contract.TokenExchange(&_Hermez.CallOpts, arg0)
 739}
 740
 741// TokenExchange is a free data retrieval call binding the contract method 0x0dd94b96.
 742//
 743// Solidity: function tokenExchange(address ) view returns(uint64)
 744func (_Hermez *HermezCallerSession) TokenExchange(arg0 common.Address) (uint64, error) {
 745	return _Hermez.Contract.TokenExchange(&_Hermez.CallOpts, arg0)
 746}
 747
 748// TokenHEZ is a free data retrieval call binding the contract method 0x79a135e3.
 749//
 750// Solidity: function tokenHEZ() view returns(address)
 751func (_Hermez *HermezCaller) TokenHEZ(opts *bind.CallOpts) (common.Address, error) {
 752	var (
 753		ret0 = new(common.Address)
 754	)
 755	out := ret0
 756	err := _Hermez.contract.Call(opts, out, "tokenHEZ")
 757	return *ret0, tracerr.Wrap(err)
 758}
 759
 760// TokenHEZ is a free data retrieval call binding the contract method 0x79a135e3.
 761//
 762// Solidity: function tokenHEZ() view returns(address)
 763func (_Hermez *HermezSession) TokenHEZ() (common.Address, error) {
 764	return _Hermez.Contract.TokenHEZ(&_Hermez.CallOpts)
 765}
 766
 767// TokenHEZ is a free data retrieval call binding the contract method 0x79a135e3.
 768//
 769// Solidity: function tokenHEZ() view returns(address)
 770func (_Hermez *HermezCallerSession) TokenHEZ() (common.Address, error) {
 771	return _Hermez.Contract.TokenHEZ(&_Hermez.CallOpts)
 772}
 773
 774// TokenList is a free data retrieval call binding the contract method 0x9ead7222.
 775//
 776// Solidity: function tokenList(uint256 ) view returns(address)
 777func (_Hermez *HermezCaller) TokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
 778	var (
 779		ret0 = new(common.Address)
 780	)
 781	out := ret0
 782	err := _Hermez.contract.Call(opts, out, "tokenList", arg0)
 783	return *ret0, tracerr.Wrap(err)
 784}
 785
 786// TokenList is a free data retrieval call binding the contract method 0x9ead7222.
 787//
 788// Solidity: function tokenList(uint256 ) view returns(address)
 789func (_Hermez *HermezSession) TokenList(arg0 *big.Int) (common.Address, error) {
 790	return _Hermez.Contract.TokenList(&_Hermez.CallOpts, arg0)
 791}
 792
 793// TokenList is a free data retrieval call binding the contract method 0x9ead7222.
 794//
 795// Solidity: function tokenList(uint256 ) view returns(address)
 796func (_Hermez *HermezCallerSession) TokenList(arg0 *big.Int) (common.Address, error) {
 797	return _Hermez.Contract.TokenList(&_Hermez.CallOpts, arg0)
 798}
 799
 800// TokenMap is a free data retrieval call binding the contract method 0x004aca6e.
 801//
 802// Solidity: function tokenMap(address ) view returns(uint256)
 803func (_Hermez *HermezCaller) TokenMap(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
 804	var (
 805		ret0 = new(*big.Int)
 806	)
 807	out := ret0
 808	err := _Hermez.contract.Call(opts, out, "tokenMap", arg0)
 809	return *ret0, tracerr.Wrap(err)
 810}
 811
 812// TokenMap is a free data retrieval call binding the contract method 0x004aca6e.
 813//
 814// Solidity: function tokenMap(address ) view returns(uint256)
 815func (_Hermez *HermezSession) TokenMap(arg0 common.Address) (*big.Int, error) {
 816	return _Hermez.Contract.TokenMap(&_Hermez.CallOpts, arg0)
 817}
 818
 819// TokenMap is a free data retrieval call binding the contract method 0x004aca6e.
 820//
 821// Solidity: function tokenMap(address ) view returns(uint256)
 822func (_Hermez *HermezCallerSession) TokenMap(arg0 common.Address) (*big.Int, error) {
 823	return _Hermez.Contract.TokenMap(&_Hermez.CallOpts, arg0)
 824}
 825
 826// WithdrawDelayerContract is a free data retrieval call binding the contract method 0x1b0a8223.
 827//
 828// Solidity: function withdrawDelayerContract() view returns(address)
 829func (_Hermez *HermezCaller) WithdrawDelayerContract(opts *bind.CallOpts) (common.Address, error) {
 830	var (
 831		ret0 = new(common.Address)
 832	)
 833	out := ret0
 834	err := _Hermez.contract.Call(opts, out, "withdrawDelayerContract")
 835	return *ret0, tracerr.Wrap(err)
 836}
 837
 838// WithdrawDelayerContract is a free data retrieval call binding the contract method 0x1b0a8223.
 839//
 840// Solidity: function withdrawDelayerContract() view returns(address)
 841func (_Hermez *HermezSession) WithdrawDelayerContract() (common.Address, error) {
 842	return _Hermez.Contract.WithdrawDelayerContract(&_Hermez.CallOpts)
 843}
 844
 845// WithdrawDelayerContract is a free data retrieval call binding the contract method 0x1b0a8223.
 846//
 847// Solidity: function withdrawDelayerContract() view returns(address)
 848func (_Hermez *HermezCallerSession) WithdrawDelayerContract() (common.Address, error) {
 849	return _Hermez.Contract.WithdrawDelayerContract(&_Hermez.CallOpts)
 850}
 851
 852// WithdrawVerifier is a free data retrieval call binding the contract method 0x864eb164.
 853//
 854// Solidity: function withdrawVerifier() view returns(address)
 855func (_Hermez *HermezCaller) WithdrawVerifier(opts *bind.CallOpts) (common.Address, error) {
 856	var (
 857		ret0 = new(common.Address)
 858	)
 859	out := ret0
 860	err := _Hermez.contract.Call(opts, out, "withdrawVerifier")
 861	return *ret0, tracerr.Wrap(err)
 862}
 863
 864// WithdrawVerifier is a free data retrieval call binding the contract method 0x864eb164.
 865//
 866// Solidity: function withdrawVerifier() view returns(address)
 867func (_Hermez *HermezSession) WithdrawVerifier() (common.Address, error) {
 868	return _Hermez.Contract.WithdrawVerifier(&_Hermez.CallOpts)
 869}
 870
 871// WithdrawVerifier is a free data retrieval call binding the contract method 0x864eb164.
 872//
 873// Solidity: function withdrawVerifier() view returns(address)
 874func (_Hermez *HermezCallerSession) WithdrawVerifier() (common.Address, error) {
 875	return _Hermez.Contract.WithdrawVerifier(&_Hermez.CallOpts)
 876}
 877
 878// WithdrawalDelay is a free data retrieval call binding the contract method 0xa7ab6961.
 879//
 880// Solidity: function withdrawalDelay() view returns(uint64)
 881func (_Hermez *HermezCaller) WithdrawalDelay(opts *bind.CallOpts) (uint64, error) {
 882	var (
 883		ret0 = new(uint64)
 884	)
 885	out := ret0
 886	err := _Hermez.contract.Call(opts, out, "withdrawalDelay")
 887	return *ret0, tracerr.Wrap(err)
 888}
 889
 890// WithdrawalDelay is a free data retrieval call binding the contract method 0xa7ab6961.
 891//
 892// Solidity: function withdrawalDelay() view returns(uint64)
 893func (_Hermez *HermezSession) WithdrawalDelay() (uint64, error) {
 894	return _Hermez.Contract.WithdrawalDelay(&_Hermez.CallOpts)
 895}
 896
 897// WithdrawalDelay is a free data retrieval call binding the contract method 0xa7ab6961.
 898//
 899// Solidity: function withdrawalDelay() view returns(uint64)
 900func (_Hermez *HermezCallerSession) WithdrawalDelay() (uint64, error) {
 901	return _Hermez.Contract.WithdrawalDelay(&_Hermez.CallOpts)
 902}
 903
 904// AddL1Transaction is a paid mutator transaction binding the contract method 0x886df587.
 905//
 906// Solidity: function addL1Transaction(uint256 babyPubKey, uint48 fromIdx, uint16 loadAmountF, uint16 amountF, uint32 tokenID, uint48 toIdx, bytes permit) payable returns()
 907func (_Hermez *HermezTransactor) AddL1Transaction(opts *bind.TransactOpts, babyPubKey *big.Int, fromIdx *big.Int, loadAmountF uint16, amountF uint16, tokenID uint32, toIdx *big.Int, permit []byte) (*types.Transaction, error) {
 908	return _Hermez.contract.Transact(opts, "addL1Transaction", babyPubKey, fromIdx, loadAmountF, amountF, tokenID, toIdx, permit)
 909}
 910
 911// AddL1Transaction is a paid mutator transaction binding the contract method 0x886df587.
 912//
 913// Solidity: function addL1Transaction(uint256 babyPubKey, uint48 fromIdx, uint16 loadAmountF, uint16 amountF, uint32 tokenID, uint48 toIdx, bytes permit) payable returns()
 914func (_Hermez *HermezSession) AddL1Transaction(babyPubKey *big.Int, fromIdx *big.Int, loadAmountF uint16, amountF uint16, tokenID uint32, toIdx *big.Int, permit []byte) (*types.Transaction, error) {
 915	return _Hermez.Contract.AddL1Transaction(&_Hermez.TransactOpts, babyPubKey, fromIdx, loadAmountF, amountF, tokenID, toIdx, permit)
 916}
 917
 918// AddL1Transaction is a paid mutator transaction binding the contract method 0x886df587.
 919//
 920// Solidity: function addL1Transaction(uint256 babyPubKey, uint48 fromIdx, uint16 loadAmountF, uint16 amountF, uint32 tokenID, uint48 toIdx, bytes permit) payable returns()
 921func (_Hermez *HermezTransactorSession) AddL1Transaction(babyPubKey *big.Int, fromIdx *big.Int, loadAmountF uint16, amountF uint16, tokenID uint32, toIdx *big.Int, permit []byte) (*types.Transaction, error) {
 922	return _Hermez.Contract.AddL1Transaction(&_Hermez.TransactOpts, babyPubKey, fromIdx, loadAmountF, amountF, tokenID, toIdx, permit)
 923}
 924
 925// AddToken is a paid mutator transaction binding the contract method 0x70c2f1c0.
 926//
 927// Solidity: function addToken(address tokenAddress, bytes permit) returns()
 928func (_Hermez *HermezTransactor) AddToken(opts *bind.TransactOpts, tokenAddress common.Address, permit []byte) (*types.Transaction, error) {
 929	return _Hermez.contract.Transact(opts, "addToken", tokenAddress, permit)
 930}
 931
 932// AddToken is a paid mutator transaction binding the contract method 0x70c2f1c0.
 933//
 934// Solidity: function addToken(address tokenAddress, bytes permit) returns()
 935func (_Hermez *HermezSession) AddToken(tokenAddress common.Address, permit []byte) (*types.Transaction, error) {
 936	return _Hermez.Contract.AddToken(&_Hermez.TransactOpts, tokenAddress, permit)
 937}
 938
 939// AddToken is a paid mutator transaction binding the contract method 0x70c2f1c0.
 940//
 941// Solidity: function addToken(address tokenAddress, bytes permit) returns()
 942func (_Hermez *HermezTransactorSession) AddToken(tokenAddress common.Address, permit []byte) (*types.Transaction, error) {
 943	return _Hermez.Contract.AddToken(&_Hermez.TransactOpts, tokenAddress, permit)
 944}
 945
 946// ForgeBatch is a paid mutator transaction binding the contract method 0x6e7e1365.
 947//
 948// Solidity: function forgeBatch(uint48 newLastIdx, uint256 newStRoot, uint256 newExitRoot, bytes encodedL1CoordinatorTx, bytes l2TxsData, bytes feeIdxCoordinator, uint8 verifierIdx, bool l1Batch, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns()
 949func (_Hermez *HermezTransactor) ForgeBatch(opts *bind.TransactOpts, newLastIdx *big.Int, newStRoot *big.Int, newExitRoot *big.Int, encodedL1CoordinatorTx []byte, l2TxsData []byte, feeIdxCoordinator []byte, verifierIdx uint8, l1Batch bool, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) {
 950	return _Hermez.contract.Transact(opts, "forgeBatch", newLastIdx, newStRoot, newExitRoot, encodedL1CoordinatorTx, l2TxsData, feeIdxCoordinator, verifierIdx, l1Batch, proofA, proofB, proofC)
 951}
 952
 953// ForgeBatch is a paid mutator transaction binding the contract method 0x6e7e1365.
 954//
 955// Solidity: function forgeBatch(uint48 newLastIdx, uint256 newStRoot, uint256 newExitRoot, bytes encodedL1CoordinatorTx, bytes l2TxsData, bytes feeIdxCoordinator, uint8 verifierIdx, bool l1Batch, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns()
 956func (_Hermez *HermezSession) ForgeBatch(newLastIdx *big.Int, newStRoot *big.Int, newExitRoot *big.Int, encodedL1CoordinatorTx []byte, l2TxsData []byte, feeIdxCoordinator []byte, verifierIdx uint8, l1Batch bool, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) {
 957	return _Hermez.Contract.ForgeBatch(&_Hermez.TransactOpts, newLastIdx, newStRoot, newExitRoot, encodedL1CoordinatorTx, l2TxsData, feeIdxCoordinator, verifierIdx, l1Batch, proofA, proofB, proofC)
 958}
 959
 960// ForgeBatch is a paid mutator transaction binding the contract method 0x6e7e1365.
 961//
 962// Solidity: function forgeBatch(uint48 newLastIdx, uint256 newStRoot, uint256 newExitRoot, bytes encodedL1CoordinatorTx, bytes l2TxsData, bytes feeIdxCoordinator, uint8 verifierIdx, bool l1Batch, uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC) returns()
 963func (_Hermez *HermezTransactorSession) ForgeBatch(newLastIdx *big.Int, newStRoot *big.Int, newExitRoot *big.Int, encodedL1CoordinatorTx []byte, l2TxsData []byte, feeIdxCoordinator []byte, verifierIdx uint8, l1Batch bool, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int) (*types.Transaction, error) {
 964	return _Hermez.Contract.ForgeBatch(&_Hermez.TransactOpts, newLastIdx, newStRoot, newExitRoot, encodedL1CoordinatorTx, l2TxsData, feeIdxCoordinator, verifierIdx, l1Batch, proofA, proofB, proofC)
 965}
 966
 967// InitializeHermez is a paid mutator transaction binding the contract method 0x4ee51c26.
 968//
 969// Solidity: function initializeHermez(address[] _verifiers, uint256[] _verifiersParams, address _withdrawVerifier, address _hermezAuctionContract, address _tokenHEZ, uint8 _forgeL1L2BatchTimeout, uint256 _feeAddToken, address _poseidon2Elements, address _poseidon3Elements, address _poseidon4Elements, address _hermezGovernanceDAOAddress, address _safetyAddress, uint64 _withdrawalDelay, address _withdrawDelayerContract) returns()
 970func (_Hermez *HermezTransactor) InitializeHermez(opts *bind.TransactOpts, _verifiers []common.Address, _verifiersParams []*big.Int, _withdrawVerifier common.Address, _hermezAuctionContract common.Address, _tokenHEZ common.Address, _forgeL1L2BatchTimeout uint8, _feeAddToken *big.Int, _poseidon2Elements common.Address, _poseidon3Elements common.Address, _poseidon4Elements common.Address, _hermezGovernanceDAOAddress common.Address, _safetyAddress common.Address, _withdrawalDelay uint64, _withdrawDelayerContract common.Address) (*types.Transaction, error) {
 971	return _Hermez.contract.Transact(opts, "initializeHermez", _verifiers, _verifiersParams, _withdrawVerifier, _hermezAuctionContract, _tokenHEZ, _forgeL1L2BatchTimeout, _feeAddToken, _poseidon2Elements, _poseidon3Elements, _poseidon4Elements, _hermezGovernanceDAOAddress, _safetyAddress, _withdrawalDelay, _withdrawDelayerContract)
 972}
 973
 974// InitializeHermez is a paid mutator transaction binding the contract method 0x4ee51c26.
 975//
 976// Solidity: function initializeHermez(address[] _verifiers, uint256[] _verifiersParams, address _withdrawVerifier, address _hermezAuctionContract, address _tokenHEZ, uint8 _forgeL1L2BatchTimeout, uint256 _feeAddToken, address _poseidon2Elements, address _poseidon3Elements, address _poseidon4Elements, address _hermezGovernanceDAOAddress, address _safetyAddress, uint64 _withdrawalDelay, address _withdrawDelayerContract) returns()
 977func (_Hermez *HermezSession) InitializeHermez(_verifiers []common.Address, _verifiersParams []*big.Int, _withdrawVerifier common.Address, _hermezAuctionContract common.Address, _tokenHEZ common.Address, _forgeL1L2BatchTimeout uint8, _feeAddToken *big.Int, _poseidon2Elements common.Address, _poseidon3Elements common.Address, _poseidon4Elements common.Address, _hermezGovernanceDAOAddress common.Address, _safetyAddress common.Address, _withdrawalDelay uint64, _withdrawDelayerContract common.Address) (*types.Transaction, error) {
 978	return _Hermez.Contract.InitializeHermez(&_Hermez.TransactOpts, _verifiers, _verifiersParams, _withdrawVerifier, _hermezAuctionContract, _tokenHEZ, _forgeL1L2BatchTimeout, _feeAddToken, _poseidon2Elements, _poseidon3Elements, _poseidon4Elements, _hermezGovernanceDAOAddress, _safetyAddress, _withdrawalDelay, _withdrawDelayerContract)
 979}
 980
 981// InitializeHermez is a paid mutator transaction binding the contract method 0x4ee51c26.
 982//
 983// Solidity: function initializeHermez(address[] _verifiers, uint256[] _verifiersParams, address _withdrawVerifier, address _hermezAuctionContract, address _tokenHEZ, uint8 _forgeL1L2BatchTimeout, uint256 _feeAddToken, address _poseidon2Elements, address _poseidon3Elements, address _poseidon4Elements, address _hermezGovernanceDAOAddress, address _safetyAddress, uint64 _withdrawalDelay, address _withdrawDelayerContract) returns()
 984func (_Hermez *HermezTransactorSession) InitializeHermez(_verifiers []common.Address, _verifiersParams []*big.Int, _withdrawVerifier common.Address, _hermezAuctionContract common.Address, _tokenHEZ common.Address, _forgeL1L2BatchTimeout uint8, _feeAddToken *big.Int, _poseidon2Elements common.Address, _poseidon3Elements common.Address, _poseidon4Elements common.Address, _hermezGovernanceDAOAddress common.Address, _safetyAddress common.Address, _withdrawalDelay uint64, _withdrawDelayerContract common.Address) (*types.Transaction, error) {
 985	return _Hermez.Contract.InitializeHermez(&_Hermez.TransactOpts, _verifiers, _verifiersParams, _withdrawVerifier, _hermezAuctionContract, _tokenHEZ, _forgeL1L2BatchTimeout, _feeAddToken, _poseidon2Elements, _poseidon3Elements, _poseidon4Elements, _hermezGovernanceDAOAddress, _safetyAddress, _withdrawalDelay, _withdrawDelayerContract)
 986}
 987
 988// SafeMode is a paid mutator transaction binding the contract method 0xabe3219c.
 989//
 990// Solidity: function safeMode() returns()
 991func (_Hermez *HermezTransactor) SafeMode(opts *bind.TransactOpts) (*types.Transaction, error) {
 992	return _Hermez.contract.Transact(opts, "safeMode")
 993}
 994
 995// SafeMode is a paid mutator transaction binding the contract method 0xabe3219c.
 996//
 997// Solidity: function safeMode() returns()
 998func (_Hermez *HermezSession) SafeMode() (*types.Transaction, error) {
 999	return _Hermez.Contract.SafeMode(&_Hermez.TransactOpts)
1000}
1001
1002// SafeMode is a paid mutator transaction binding the contract method 0xabe3219c.
1003//
1004// Solidity: function safeMode() returns()
1005func (_Hermez *HermezTransactorSession) SafeMode() (*types.Transaction, error) {
1006	return _Hermez.Contract.SafeMode(&_Hermez.TransactOpts)
1007}
1008
1009// UpdateBucketsParameters is a paid mutator transaction binding the contract method 0x68e95e53.
1010//
1011// Solidity: function updateBucketsParameters(uint256[4][5] arrayBuckets) returns()
1012func (_Hermez *HermezTransactor) UpdateBucketsParameters(opts *bind.TransactOpts, arrayBuckets [5][4]*big.Int) (*types.Transaction, error) {
1013	return _Hermez.contract.Transact(opts, "updateBucketsParameters", arrayBuckets)
1014}
1015
1016// UpdateBucketsParameters is a paid mutator transaction binding the contract method 0x68e95e53.
1017//
1018// Solidity: function updateBucketsParameters(uint256[4][5] arrayBuckets) returns()
1019func (_Hermez *HermezSession) UpdateBucketsParameters(arrayBuckets [5][4]*big.Int) (*types.Transaction, error) {
1020	return _Hermez.Contract.UpdateBucketsParameters(&_Hermez.TransactOpts, arrayBuckets)
1021}
1022
1023// UpdateBucketsParameters is a paid mutator transaction binding the contract method 0x68e95e53.
1024//
1025// Solidity: function updateBucketsParameters(uint256[4][5] arrayBuckets) returns()
1026func (_Hermez *HermezTransactorSession) UpdateBucketsParameters(arrayBuckets [5][4]*big.Int) (*types.Transaction, error) {
1027	return _Hermez.Contract.UpdateBucketsParameters(&_Hermez.TransactOpts, arrayBuckets)
1028}
1029
1030// UpdateFeeAddToken is a paid mutator transaction binding the contract method 0x314e5eda.
1031//
1032// Solidity: function updateFeeAddToken(uint256 newFeeAddToken) returns()
1033func (_Hermez *HermezTransactor) UpdateFeeAddToken(opts *bind.TransactOpts, newFeeAddToken *big.Int) (*types.Transaction, error) {
1034	return _Hermez.contract.Transact(opts, "updateFeeAddToken", newFeeAddToken)
1035}
1036
1037// UpdateFeeAddToken is a paid mutator transaction binding the contract method 0x314e5eda.
1038//
1039// Solidity: function updateFeeAddToken(uint256 newFeeAddToken) returns()
1040func (_Hermez *HermezSession) UpdateFeeAddToken(newFeeAddToken *big.Int) (*types.Transaction, error) {
1041	return _Hermez.Contract.UpdateFeeAddToken(&_Hermez.TransactOpts, newFeeAddToken)
1042}
1043
1044// UpdateFeeAddToken is a paid mutator transaction binding the contract method 0x314e5eda.
1045//
1046// Solidity: function updateFeeAddToken(uint256 newFeeAddToken) returns()
1047func (_Hermez *HermezTransactorSession) UpdateFeeAddToken(newFeeAddToken *big.Int) (*types.Transaction, error) {
1048	return _Hermez.Contract.UpdateFeeAddToken(&_Hermez.TransactOpts, newFeeAddToken)
1049}
1050
1051// UpdateForgeL1L2BatchTimeout is a paid mutator transaction binding the contract method 0xcbd7b5fb.
1052//
1053// Solidity: function updateForgeL1L2BatchTimeout(uint8 newForgeL1L2BatchTimeout) returns()
1054func (_Hermez *HermezTransactor) UpdateForgeL1L2BatchTimeout(opts *bind.TransactOpts, newForgeL1L2BatchTimeout uint8) (*types.Transaction, error) {
1055	return _Hermez.contract.Transact(opts, "updateForgeL1L2BatchTimeout", newForgeL1L2BatchTimeout)
1056}
1057
1058// UpdateForgeL1L2BatchTimeout is a paid mutator transaction binding the contract method 0xcbd7b5fb.
1059//
1060// Solidity: function updateForgeL1L2BatchTimeout(uint8 newForgeL1L2BatchTimeout) returns()
1061func (_Hermez *HermezSession) UpdateForgeL1L2BatchTimeout(newForgeL1L2BatchTimeout uint8) (*types.Transaction, error) {
1062	return _Hermez.Contract.UpdateForgeL1L2BatchTimeout(&_Hermez.TransactOpts, newForgeL1L2BatchTimeout)
1063}
1064
1065// UpdateForgeL1L2BatchTimeout is a paid mutator transaction binding the contract method 0xcbd7b5fb.
1066//
1067// Solidity: function updateForgeL1L2BatchTimeout(uint8 newForgeL1L2BatchTimeout) returns()
1068func (_Hermez *HermezTransactorSession) UpdateForgeL1L2BatchTimeout(newForgeL1L2BatchTimeout uint8) (*types.Transaction, error) {
1069	return _Hermez.Contract.UpdateForgeL1L2BatchTimeout(&_Hermez.TransactOpts, newForgeL1L2BatchTimeout)
1070}
1071
1072// UpdateTokenExchange is a paid mutator transaction binding the contract method 0x1a748c2d.
1073//
1074// Solidity: function updateTokenExchange(address[] addressArray, uint64[] valueArray) returns()
1075func (_Hermez *HermezTransactor) UpdateTokenExchange(opts *bind.TransactOpts, addressArray []common.Address, valueArray []uint64) (*types.Transaction, error) {
1076	return _Hermez.contract.Transact(opts, "updateTokenExchange", addressArray, valueArray)
1077}
1078
1079// UpdateTokenExchange is a paid mutator transaction binding the contract method 0x1a748c2d.
1080//
1081// Solidity: function updateTokenExchange(address[] addressArray, uint64[] valueArray) returns()
1082func (_Hermez *HermezSession) UpdateTokenExchange(addressArray []common.Address, valueArray []uint64) (*types.Transaction, error) {
1083	return _Hermez.Contract.UpdateTokenExchange(&_Hermez.TransactOpts, addressArray, valueArray)
1084}
1085
1086// UpdateTokenExchange is a paid mutator transaction binding the contract method 0x1a748c2d.
1087//
1088// Solidity: function updateTokenExchange(address[] addressArray, uint64[] valueArray) returns()
1089func (_Hermez *HermezTransactorSession) UpdateTokenExchange(addressArray []common.Address, valueArray []uint64) (*types.Transaction, error) {
1090	return _Hermez.Contract.UpdateTokenExchange(&_Hermez.TransactOpts, addressArray, valueArray)
1091}
1092
1093// UpdateWithdrawalDelay is a paid mutator transaction binding the contract method 0xef4a5c4a.
1094//
1095// Solidity: function updateWithdrawalDelay(uint64 newWithdrawalDelay) returns()
1096func (_Hermez *HermezTransactor) UpdateWithdrawalDelay(opts *bind.TransactOpts, newWithdrawalDelay uint64) (*types.Transaction, error) {
1097	return _Hermez.contract.Transact(opts, "updateWithdrawalDelay", newWithdrawalDelay)
1098}
1099
1100// UpdateWithdrawalDelay is a paid mutator transaction binding the contract method 0xef4a5c4a.
1101//
1102// Solidity: function updateWithdrawalDelay(uint64 newWithdrawalDelay) returns()
1103func (_Hermez *HermezSession) UpdateWithdrawalDelay(newWithdrawalDelay uint64) (*types.Transaction, error) {
1104	return _Hermez.Contract.UpdateWithdrawalDelay(&_Hermez.TransactOpts, newWithdrawalDelay)
1105}
1106
1107// UpdateWithdrawalDelay is a paid mutator transaction binding the contract method 0xef4a5c4a.
1108//
1109// Solidity: function updateWithdrawalDelay(uint64 newWithdrawalDelay) returns()
1110func (_Hermez *HermezTransactorSession) UpdateWithdrawalDelay(newWithdrawalDelay uint64) (*types.Transaction, error) {
1111	return _Hermez.Contract.UpdateWithdrawalDelay(&_Hermez.TransactOpts, newWithdrawalDelay)
1112}
1113
1114// WithdrawCircuit is a paid mutator transaction binding the contract method 0xc63cc3a0.
1115//
1116// Solidity: function withdrawCircuit(uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC, uint32 tokenID, uint192 amount, uint48 numExitRoot, uint48 idx, bool instantWithdraw) returns()
1117func (_Hermez *HermezTransactor) WithdrawCircuit(opts *bind.TransactOpts, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int, tokenID uint32, amount *big.Int, numExitRoot *big.Int, idx *big.Int, instantWithdraw bool) (*types.Transaction, error) {
1118	return _Hermez.contract.Transact(opts, "withdrawCircuit", proofA, proofB, proofC, tokenID, amount, numExitRoot, idx, instantWithdraw)
1119}
1120
1121// WithdrawCircuit is a paid mutator transaction binding the contract method 0xc63cc3a0.
1122//
1123// Solidity: function withdrawCircuit(uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC, uint32 tokenID, uint192 amount, uint48 numExitRoot, uint48 idx, bool instantWithdraw) returns()
1124func (_Hermez *HermezSession) WithdrawCircuit(proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int, tokenID uint32, amount *big.Int, numExitRoot *big.Int, idx *big.Int, instantWithdraw bool) (*types.Transaction, error) {
1125	return _Hermez.Contract.WithdrawCircuit(&_Hermez.TransactOpts, proofA, proofB, proofC, tokenID, amount, numExitRoot, idx, instantWithdraw)
1126}
1127
1128// WithdrawCircuit is a paid mutator transaction binding the contract method 0xc63cc3a0.
1129//
1130// Solidity: function withdrawCircuit(uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC, uint32 tokenID, uint192 amount, uint48 numExitRoot, uint48 idx, bool instantWithdraw) returns()
1131func (_Hermez *HermezTransactorSession) WithdrawCircuit(proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int, tokenID uint32, amount *big.Int, numExitRoot *big.Int, idx *big.Int, instantWithdraw bool) (*types.Transaction, error) {
1132	return _Hermez.Contract.WithdrawCircuit(&_Hermez.TransactOpts, proofA, proofB, proofC, tokenID, amount, numExitRoot, idx, instantWithdraw)
1133}
1134
1135// WithdrawMerkleProof is a paid mutator transaction binding the contract method 0x432dd51f.
1136//
1137// Solidity: function withdrawMerkleProof(uint32 tokenID, uint192 amount, uint256 babyPubKey, uint48 numExitRoot, uint256[] siblings, uint48 idx, bool instantWithdraw) returns()
1138func (_Hermez *HermezTransactor) WithdrawMerkleProof(opts *bind.TransactOpts, tokenID uint32, amount *big.Int, babyPubKey *big.Int, numExitRoot *big.Int, siblings []*big.Int, idx *big.Int, instantWithdraw bool) (*types.Transaction, error) {
1139	return _Hermez.contract.Transact(opts, "withdrawMerkleProof", tokenID, amount, babyPubKey, numExitRoot, siblings, idx, instantWithdraw)
1140}
1141
1142// WithdrawMerkleProof is a paid mutator transaction binding the contract method 0x432dd51f.
1143//
1144// Solidity: function withdrawMerkleProof(uint32 tokenID, uint192 amount, uint256 babyPubKey, uint48 numExitRoot, uint256[] siblings, uint48 idx, bool instantWithdraw) returns()
1145func (_Hermez *HermezSession) WithdrawMerkleProof(tokenID uint32, amount *big.Int, babyPubKey *big.Int, numExitRoot *big.Int, siblings []*big.Int, idx *big.Int, instantWithdraw bool) (*types.Transaction, error) {
1146	return _Hermez.Contract.WithdrawMerkleProof(&_Hermez.TransactOpts, tokenID, amount, babyPubKey, numExitRoot, siblings, idx, instantWithdraw)
1147}
1148
1149// WithdrawMerkleProof is a paid mutator transaction binding the contract method 0x432dd51f.
1150//
1151// Solidity: function withdrawMerkleProof(uint32 tokenID, uint192 amount, uint256 babyPubKey, uint48 numExitRoot, uint256[] siblings, uint48 idx, bool instantWithdraw) returns()
1152func (_Hermez *HermezTransactorSession) WithdrawMerkleProof(tokenID uint32, amount *big.Int, babyPubKey *big.Int, numExitRoot *big.Int, siblings []*big.Int, idx *big.Int, instantWithdraw bool) (*types.Transaction, error) {
1153	return _Hermez.Contract.WithdrawMerkleProof(&_Hermez.TransactOpts, tokenID, amount, babyPubKey, numExitRoot, siblings, idx, instantWithdraw)
1154}
1155
1156// HermezAddTokenIterator is returned from FilterAddToken and is used to iterate over the raw logs and unpacked data for AddToken events raised by the Hermez contract.
1157type HermezAddTokenIterator struct {
1158	Event *HermezAddToken // Event containing the contract specifics and raw log
1159
1160	contract *bind.BoundContract // Generic contract to use for unpacking event data
1161	event    string              // Event name to use for unpacking event data
1162
1163	logs chan types.Log        // Log channel receiving the found contract events
1164	sub  ethereum.Subscription // Subscription for errors, completion and termination
1165	done bool                  // Whether the subscription completed delivering logs
1166	fail error                 // Occurred error to stop iteration
1167}
1168
1169// Next advances the iterator to the subsequent event, returning whether there
1170// are any more events found. In case of a retrieval or parsing error, false is
1171// returned and Error() can be queried for the exact failure.
1172func (it *HermezAddTokenIterator) Next() bool {
1173	// If the iterator failed, stop iterating
1174	if it.fail != nil {
1175		return false
1176	}
1177	// If the iterator completed, deliver directly whatever's available
1178	if it.done {
1179		select {
1180		case log := <-it.logs:
1181			it.Event = new(HermezAddToken)
1182			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1183				it.fail = err
1184				return false
1185			}
1186			it.Event.Raw = log
1187			return true
1188
1189		default:
1190			return false
1191		}
1192	}
1193	// Iterator still in progress, wait for either a data or an error event
1194	select {
1195	case log := <-it.logs:
1196		it.Event = new(HermezAddToken)
1197		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1198			it.fail = err
1199			return false
1200		}
1201		it.Event.Raw = log
1202		return true
1203
1204	case err := <-it.sub.Err():
1205		it.done = true
1206		it.fail = err
1207		return it.Next()
1208	}
1209}
1210
1211// Error returns any retrieval or parsing error occurred during filtering.
1212func (it *HermezAddTokenIterator) Error() error {
1213	return it.fail
1214}
1215
1216// Close terminates the iteration process, releasing any pending underlying
1217// resources.
1218func (it *HermezAddTokenIterator) Close() error {
1219	it.sub.Unsubscribe()
1220	return nil
1221}
1222
1223// HermezAddToken represents a AddToken event raised by the Hermez contract.
1224type HermezAddToken struct {
1225	TokenAddress common.Address
1226	TokenID      uint32
1227	Raw          types.Log // Blockchain specific contextual infos
1228}
1229
1230// FilterAddToken is a free log retrieval operation binding the contract event 0xcb73d161edb7cd4fb1d92fedfd2555384fd997fd44ab507656f8c81e15747dde.
1231//
1232// Solidity: event AddToken(address indexed tokenAddress, uint32 tokenID)
1233func (_Hermez *HermezFilterer) FilterAddToken(opts *bind.FilterOpts, tokenAddress []common.Address) (*HermezAddTokenIterator, error) {
1234
1235	var tokenAddressRule []interface{}
1236	for _, tokenAddressItem := range tokenAddress {
1237		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
1238	}
1239
1240	logs, sub, err := _Hermez.contract.FilterLogs(opts, "AddToken", tokenAddressRule)
1241	if err != nil {
1242		return nil, tracerr.Wrap(err)
1243	}
1244	return &HermezAddTokenIterator{contract: _Hermez.contract, event: "AddToken", logs: logs, sub: sub}, nil
1245}
1246
1247// WatchAddToken is a free log subscription operation binding the contract event 0xcb73d161edb7cd4fb1d92fedfd2555384fd997fd44ab507656f8c81e15747dde.
1248//
1249// Solidity: event AddToken(address indexed tokenAddress, uint32 tokenID)
1250func (_Hermez *HermezFilterer) WatchAddToken(opts *bind.WatchOpts, sink chan<- *HermezAddToken, tokenAddress []common.Address) (event.Subscription, error) {
1251
1252	var tokenAddressRule []interface{}
1253	for _, tokenAddressItem := range tokenAddress {
1254		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
1255	}
1256
1257	logs, sub, err := _Hermez.contract.WatchLogs(opts, "AddToken", tokenAddressRule)
1258	if err != nil {
1259		return nil, tracerr.Wrap(err)
1260	}
1261	return event.NewSubscription(func(quit <-chan struct{}) error {
1262		defer sub.Unsubscribe()
1263		for {
1264			select {
1265			case log := <-logs:
1266				// New log arrived, parse the event and forward to the user
1267				event := new(HermezAddToken)
1268				if err := _Hermez.contract.UnpackLog(event, "AddToken", log); err != nil {
1269					return tracerr.Wrap(err)
1270				}
1271				event.Raw = log
1272
1273				select {
1274				case sink <- event:
1275				case err := <-sub.Err():
1276					return tracerr.Wrap(err)
1277				case <-quit:
1278					return nil
1279				}
1280			case err := <-sub.Err():
1281				return tracerr.Wrap(err)
1282			case <-quit:
1283				return nil
1284			}
1285		}
1286	}), nil
1287}
1288
1289// ParseAddToken is a log parse operation binding the contract event 0xcb73d161edb7cd4fb1d92fedfd2555384fd997fd44ab507656f8c81e15747dde.
1290//
1291// Solidity: event AddToken(address indexed tokenAddress, uint32 tokenID)
1292func (_Hermez *HermezFilterer) ParseAddToken(log types.Log) (*HermezAddToken, error) {
1293	event := new(HermezAddToken)
1294	if err := _Hermez.contract.UnpackLog(event, "AddToken", log); err != nil {
1295		return nil, tracerr.Wrap(err)
1296	}
1297	return event, nil
1298}
1299
1300// HermezForgeBatchIterator is returned from FilterForgeBatch and is used to iterate over the raw logs and unpacked data for ForgeBatch events raised by the Hermez contract.
1301type HermezForgeBatchIterator struct {
1302	Event *HermezForgeBatch // Event containing the contract specifics and raw log
1303
1304	contract *bind.BoundContract // Generic contract to use for unpacking event data
1305	event    string              // Event name to use for unpacking event data
1306
1307	logs chan types.Log        // Log channel receiving the found contract events
1308	sub  ethereum.Subscription // Subscription for errors, completion and termination
1309	done bool                  // Whether the subscription completed delivering logs
1310	fail error                 // Occurred error to stop iteration
1311}
1312
1313// Next advances the iterator to the subsequent event, returning whether there
1314// are any more events found. In case of a retrieval or parsing error, false is
1315// returned and Error() can be queried for the exact failure.
1316func (it *HermezForgeBatchIterator) Next() bool {
1317	// If the iterator failed, stop iterating
1318	if it.fail != nil {
1319		return false
1320	}
1321	// If the iterator completed, deliver directly whatever's available
1322	if it.done {
1323		select {
1324		case log := <-it.logs:
1325			it.Event = new(HermezForgeBatch)
1326			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1327				it.fail = err
1328				return false
1329			}
1330			it.Event.Raw = log
1331			return true
1332
1333		default:
1334			return false
1335		}
1336	}
1337	// Iterator still in progress, wait for either a data or an error event
1338	select {
1339	case log := <-it.logs:
1340		it.Event = new(HermezForgeBatch)
1341		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1342			it.fail = err
1343			return false
1344		}
1345		it.Event.Raw = log
1346		return true
1347
1348	case err := <-it.sub.Err():
1349		it.done = true
1350		it.fail = err
1351		return it.Next()
1352	}
1353}
1354
1355// Error returns any retrieval or parsing error occurred during filtering.
1356func (it *HermezForgeBatchIterator) Error() error {
1357	return it.fail
1358}
1359
1360// Close terminates the iteration process, releasing any pending underlying
1361// resources.
1362func (it *HermezForgeBatchIterator) Close() error {
1363	it.sub.Unsubscribe()
1364	return nil
1365}
1366
1367// HermezForgeBatch represents a ForgeBatch event raised by the Hermez contract.
1368type HermezForgeBatch struct {
1369	BatchNum uint64
1370	Raw      types.Log // Blockchain specific contextual infos
1371}
1372
1373// FilterForgeBatch is a free log retrieval operation binding the contract event 0xd7ab70a9e6ed0d6985e74c5cb553d300a13a2217d58266922b275b72fe786982.
1374//
1375// Solidity: event ForgeBatch(uint64 indexed batchNum)
1376func (_Hermez *HermezFilterer) FilterForgeBatch(opts *bind.FilterOpts, batchNum []uint64) (*HermezForgeBatchIterator, error) {
1377
1378	var batchNumRule []interface{}
1379	for _, batchNumItem := range batchNum {
1380		batchNumRule = append(batchNumRule, batchNumItem)
1381	}
1382
1383	logs, sub, err := _Hermez.contract.FilterLogs(opts, "ForgeBatch", batchNumRule)
1384	if err != nil {
1385		return nil, tracerr.Wrap(err)
1386	}
1387	return &HermezForgeBatchIterator{contract: _Hermez.contract, event: "ForgeBatch", logs: logs, sub: sub}, nil
1388}
1389
1390// WatchForgeBatch is a free log subscription operation binding the contract event 0xd7ab70a9e6ed0d6985e74c5cb553d300a13a2217d58266922b275b72fe786982.
1391//
1392// Solidity: event ForgeBatch(uint64 indexed batchNum)
1393func (_Hermez *HermezFilterer) WatchForgeBatch(opts *bind.WatchOpts, sink chan<- *HermezForgeBatch, batchNum []uint64) (event.Subscription, error) {
1394
1395	var batchNumRule []interface{}
1396	for _, batchNumItem := range batchNum {
1397		batchNumRule = append(batchNumRule, batchNumItem)
1398	}
1399
1400	logs, sub, err := _Hermez.contract.WatchLogs(opts, "ForgeBatch", batchNumRule)
1401	if err != nil {
1402		return nil, tracerr.Wrap(err)
1403	}
1404	return event.NewSubscription(func(quit <-chan struct{}) error {
1405		defer sub.Unsubscribe()
1406		for {
1407			select {
1408			case log := <-logs:
1409				// New log arrived, parse the event and forward to the user
1410				event := new(HermezForgeBatch)
1411				if err := _Hermez.contract.UnpackLog(event, "ForgeBatch", log); err != nil {
1412					return tracerr.Wrap(err)
1413				}
1414				event.Raw = log
1415
1416				select {
1417				case sink <- event:
1418				case err := <-sub.Err():
1419					return tracerr.Wrap(err)
1420				case <-quit:
1421					return nil
1422				}
1423			case err := <-sub.Err():
1424				return tracerr.Wrap(err)
1425			case <-quit:
1426				return nil
1427			}
1428		}
1429	}), nil
1430}
1431
1432// ParseForgeBatch is a log parse operation binding the contract event 0xd7ab70a9e6ed0d6985e74c5cb553d300a13a2217d58266922b275b72fe786982.
1433//
1434// Solidity: event ForgeBatch(uint64 indexed batchNum)
1435func (_Hermez *HermezFilterer) ParseForgeBatch(log types.Log) (*HermezForgeBatch, error) {
1436	event := new(HermezForgeBatch)
1437	if err := _Hermez.contract.UnpackLog(event, "ForgeBatch", log); err != nil {
1438		return nil, tracerr.Wrap(err)
1439	}
1440	return event, nil
1441}
1442
1443// HermezL1UserTxEventIterator is returned from FilterL1UserTxEvent and is used to iterate over the raw logs and unpacked data for L1UserTxEvent events raised by the Hermez contract.
1444type HermezL1UserTxEventIterator struct {
1445	Event *HermezL1UserTxEvent // Event containing the contract specifics and raw log
1446
1447	contract *bind.BoundContract // Generic contract to use for unpacking event data
1448	event    string              // Event name to use for unpacking event data
1449
1450	logs chan types.Log        // Log channel receiving the found contract events
1451	sub  ethereum.Subscription // Subscription for errors, completion and termination
1452	done bool                  // Whether the subscription completed delivering logs
1453	fail error                 // Occurred error to stop iteration
1454}
1455
1456// Next advances the iterator to the subsequent event, returning whether there
1457// are any more events found. In case of a retrieval or parsing error, false is
1458// returned and Error() can be queried for the exact failure.
1459func (it *HermezL1UserTxEventIterator) Next() bool {
1460	// If the iterator failed, stop iterating
1461	if it.fail != nil {
1462		return false
1463	}
1464	// If the iterator completed, deliver directly whatever's available
1465	if it.done {
1466		select {
1467		case log := <-it.logs:
1468			it.Event = new(HermezL1UserTxEvent)
1469			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1470				it.fail = err
1471				return false
1472			}
1473			it.Event.Raw = log
1474			return true
1475
1476		default:
1477			return false
1478		}
1479	}
1480	// Iterator still in progress, wait for either a data or an error event
1481	select {
1482	case log := <-it.logs:
1483		it.Event = new(HermezL1UserTxEvent)
1484		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1485			it.fail = err
1486			return false
1487		}
1488		it.Event.Raw = log
1489		return true
1490
1491	case err := <-it.sub.Err():
1492		it.done = true
1493		it.fail = err
1494		return it.Next()
1495	}
1496}
1497
1498// Error returns any retrieval or parsing error occurred during filtering.
1499func (it *HermezL1UserTxEventIterator) Error() error {
1500	return it.fail
1501}
1502
1503// Close terminates the iteration process, releasing any pending underlying
1504// resources.
1505func (it *HermezL1UserTxEventIterator) Close() error {
1506	it.sub.Unsubscribe()
1507	return nil
1508}
1509
1510// HermezL1UserTxEvent represents a L1UserTxEvent event raised by the Hermez contract.
1511type HermezL1UserTxEvent struct {
1512	QueueIndex uint64
1513	Position   uint8
1514	L1UserTx   []byte
1515	Raw        types.Log // Blockchain specific contextual infos
1516}
1517
1518// FilterL1UserTxEvent is a free log retrieval operation binding the contract event 0x7f40be4e420c002c02fa9cad961f6a7620769d32d272f3f8c15e3ff59de9310e.
1519//
1520// Solidity: event L1UserTxEvent(uint64 indexed queueIndex, uint8 indexed position, bytes l1UserTx)
1521func (_Hermez *HermezFilterer) FilterL1UserTxEvent(opts *bind.FilterOpts, queueIndex []uint64, position []uint8) (*HermezL1UserTxEventIterator, error) {
1522
1523	var queueIndexRule []interface{}
1524	for _, queueIndexItem := range queueIndex {
1525		queueIndexRule = append(queueIndexRule, queueIndexItem)
1526	}
1527	var positionRule []interface{}
1528	for _, positionItem := range position {
1529		positionRule = append(positionRule, positionItem)
1530	}
1531
1532	logs, sub, err := _Hermez.contract.FilterLogs(opts, "L1UserTxEvent", queueIndexRule, positionRule)
1533	if err != nil {
1534		return nil, tracerr.Wrap(err)
1535	}
1536	return &HermezL1UserTxEventIterator{contract: _Hermez.contract, event: "L1UserTxEvent", logs: logs, sub: sub}, nil
1537}
1538
1539// WatchL1UserTxEvent is a free log subscription operation binding the contract event 0x7f40be4e420c002c02fa9cad961f6a7620769d32d272f3f8c15e3ff59de9310e.
1540//
1541// Solidity: event L1UserTxEvent(uint64 indexed queueIndex, uint8 indexed position, bytes l1UserTx)
1542func (_Hermez *HermezFilterer) WatchL1UserTxEvent(opts *bind.WatchOpts, sink chan<- *HermezL1UserTxEvent, queueIndex []uint64, position []uint8) (event.Subscription, error) {
1543
1544	var queueIndexRule []interface{}
1545	for _, queueIndexItem := range queueIndex {
1546		queueIndexRule = append(queueIndexRule, queueIndexItem)
1547	}
1548	var positionRule []interface{}
1549	for _, positionItem := range position {
1550		positionRule = append(positionRule, positionItem)
1551	}
1552
1553	logs, sub, err := _Hermez.contract.WatchLogs(opts, "L1UserTxEvent", queueIndexRule, positionRule)
1554	if err != nil {
1555		return nil, tracerr.Wrap(err)
1556	}
1557	return event.NewSubscription(func(quit <-chan struct{}) error {
1558		defer sub.Unsubscribe()
1559		for {
1560			select {
1561			case log := <-logs:
1562				// New log arrived, parse the event and forward to the user
1563				event := new(HermezL1UserTxEvent)
1564				if err := _Hermez.contract.UnpackLog(event, "L1UserTxEvent", log); err != nil {
1565					return tracerr.Wrap(err)
1566				}
1567				event.Raw = log
1568
1569				select {
1570				case sink <- event:
1571				case err := <-sub.Err():
1572					return tracerr.Wrap(err)
1573				case <-quit:
1574					return nil
1575				}
1576			case err := <-sub.Err():
1577				return tracerr.Wrap(err)
1578			case <-quit:
1579				return nil
1580			}
1581		}
1582	}), nil
1583}
1584
1585// ParseL1UserTxEvent is a log parse operation binding the contract event 0x7f40be4e420c002c02fa9cad961f6a7620769d32d272f3f8c15e3ff59de9310e.
1586//
1587// Solidity: event L1UserTxEvent(uint64 indexed queueIndex, uint8 indexed position, bytes l1UserTx)
1588func (_Hermez *HermezFilterer) ParseL1UserTxEvent(log types.Log) (*HermezL1UserTxEvent, error) {
1589	event := new(HermezL1UserTxEvent)
1590	if err := _Hermez.contract.UnpackLog(event, "L1UserTxEvent", log); err != nil {
1591		return nil, tracerr.Wrap(err)
1592	}
1593	return event, nil
1594}
1595
1596// HermezSafeModeIterator is returned from FilterSafeMode and is used to iterate over the raw logs and unpacked data for SafeMode events raised by the Hermez contract.
1597type HermezSafeModeIterator struct {
1598	Event *HermezSafeMode // Event containing the contract specifics and raw log
1599
1600	contract *bind.BoundContract // Generic contract to use for unpacking event data
1601	event    string              // Event name to use for unpacking event data
1602
1603	logs chan types.Log        // Log channel receiving the found contract events
1604	sub  ethereum.Subscription // Subscription for errors, completion and termination
1605	done bool                  // Whether the subscription completed delivering logs
1606	fail error                 // Occurred error to stop iteration
1607}
1608
1609// Next advances the iterator to the subsequent event, returning whether there
1610// are any more events found. In case of a retrieval or parsing error, false is
1611// returned and Error() can be queried for the exact failure.
1612func (it *HermezSafeModeIterator) Next() bool {
1613	// If the iterator failed, stop iterating
1614	if it.fail != nil {
1615		return false
1616	}
1617	// If the iterator completed, deliver directly whatever's available
1618	if it.done {
1619		select {
1620		case log := <-it.logs:
1621			it.Event = new(HermezSafeMode)
1622			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1623				it.fail = err
1624				return false
1625			}
1626			it.Event.Raw = log
1627			return true
1628
1629		default:
1630			return false
1631		}
1632	}
1633	// Iterator still in progress, wait for either a data or an error event
1634	select {
1635	case log := <-it.logs:
1636		it.Event = new(HermezSafeMode)
1637		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1638			it.fail = err
1639			return false
1640		}
1641		it.Event.Raw = log
1642		return true
1643
1644	case err := <-it.sub.Err():
1645		it.done = true
1646		it.fail = err
1647		return it.Next()
1648	}
1649}
1650
1651// Error returns any retrieval or parsing error occurred during filtering.
1652func (it *HermezSafeModeIterator) Error() error {
1653	return it.fail
1654}
1655
1656// Close terminates the iteration process, releasing any pending underlying
1657// resources.
1658func (it *HermezSafeModeIterator) Close() error {
1659	it.sub.Unsubscribe()
1660	return nil
1661}
1662
1663// HermezSafeMode represents a SafeMode event raised by the Hermez contract.
1664type HermezSafeMode struct {
1665	Raw types.Log // Blockchain specific contextual infos
1666}
1667
1668// FilterSafeMode is a free log retrieval operation binding the contract event 0x0410e6ef2bd89ecf5b2dc2f62157f9863e09e89cb7c7f1abb7d4ec43a6019d1e.
1669//
1670// Solidity: event SafeMode()
1671func (_Hermez *HermezFilterer) FilterSafeMode(opts *bind.FilterOpts) (*HermezSafeModeIterator, error) {
1672
1673	logs, sub, err := _Hermez.contract.FilterLogs(opts, "SafeMode")
1674	if err != nil {
1675		return nil, tracerr.Wrap(err)
1676	}
1677	return &HermezSafeModeIterator{contract: _Hermez.contract, event: "SafeMode", logs: logs, sub: sub}, nil
1678}
1679
1680// WatchSafeMode is a free log subscription operation binding the contract event 0x0410e6ef2bd89ecf5b2dc2f62157f9863e09e89cb7c7f1abb7d4ec43a6019d1e.
1681//
1682// Solidity: event SafeMode()
1683func (_Hermez *HermezFilterer) WatchSafeMode(opts *bind.WatchOpts, sink chan<- *HermezSafeMode) (event.Subscription, error) {
1684
1685	logs, sub, err := _Hermez.contract.WatchLogs(opts, "SafeMode")
1686	if err != nil {
1687		return nil, tracerr.Wrap(err)
1688	}
1689	return event.NewSubscription(func(quit <-chan struct{}) error {
1690		defer sub.Unsubscribe()
1691		for {
1692			select {
1693			case log := <-logs:
1694				// New log arrived, parse the event and forward to the user
1695				event := new(HermezSafeMode)
1696				if err := _Hermez.contract.UnpackLog(event, "SafeMode", log); err != nil {
1697					return tracerr.Wrap(err)
1698				}
1699				event.Raw = log
1700
1701				select {
1702				case sink <- event:
1703				case err := <-sub.Err():
1704					return tracerr.Wrap(err)
1705				case <-quit:
1706					return nil
1707				}
1708			case err := <-sub.Err():
1709				return tracerr.Wrap(err)
1710			case <-quit:
1711				return nil
1712			}
1713		}
1714	}), nil
1715}
1716
1717// ParseSafeMode is a log parse operation binding the contract event 0x0410e6ef2bd89ecf5b2dc2f62157f9863e09e89cb7c7f1abb7d4ec43a6019d1e.
1718//
1719// Solidity: event SafeMode()
1720func (_Hermez *HermezFilterer) ParseSafeMode(log types.Log) (*HermezSafeMode, error) {
1721	event := new(HermezSafeMode)
1722	if err := _Hermez.contract.UnpackLog(event, "SafeMode", log); err != nil {
1723		return nil, tracerr.Wrap(err)
1724	}
1725	return event, nil
1726}
1727
1728// HermezUpdateBucketWithdrawIterator is returned from FilterUpdateBucketWithdraw and is used to iterate over the raw logs and unpacked data for UpdateBucketWithdraw events raised by the Hermez contract.
1729type HermezUpdateBucketWithdrawIterator struct {
1730	Event *HermezUpdateBucketWithdraw // Event containing the contract specifics and raw log
1731
1732	contract *bind.BoundContract // Generic contract to use for unpacking event data
1733	event    string              // Event name to use for unpacking event data
1734
1735	logs chan types.Log        // Log channel receiving the found contract events
1736	sub  ethereum.Subscription // Subscription for errors, completion and termination
1737	done bool                  // Whether the subscription completed delivering logs
1738	fail error                 // Occurred error to stop iteration
1739}
1740
1741// Next advances the iterator to the subsequent event, returning whether there
1742// are any more events found. In case of a retrieval or parsing error, false is
1743// returned and Error() can be queried for the exact failure.
1744func (it *HermezUpdateBucketWithdrawIterator) Next() bool {
1745	// If the iterator failed, stop iterating
1746	if it.fail != nil {
1747		return false
1748	}
1749	// If the iterator completed, deliver directly whatever's available
1750	if it.done {
1751		select {
1752		case log := <-it.logs:
1753			it.Event = new(HermezUpdateBucketWithdraw)
1754			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1755				it.fail = err
1756				return false
1757			}
1758			it.Event.Raw = log
1759			return true
1760
1761		default:
1762			return false
1763		}
1764	}
1765	// Iterator still in progress, wait for either a data or an error event
1766	select {
1767	case log := <-it.logs:
1768		it.Event = new(HermezUpdateBucketWithdraw)
1769		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1770			it.fail = err
1771			return false
1772		}
1773		it.Event.Raw = log
1774		return true
1775
1776	case err := <-it.sub.Err():
1777		it.done = true
1778		it.fail = err
1779		return it.Next()
1780	}
1781}
1782
1783// Error returns any retrieval or parsing error occurred during filtering.
1784func (it *HermezUpdateBucketWithdrawIterator) Error() error {
1785	return it.fail
1786}
1787
1788// Close terminates the iteration process, releasing any pending underlying
1789// resources.
1790func (it *HermezUpdateBucketWithdrawIterator) Close() error {
1791	it.sub.Unsubscribe()
1792	return nil
1793}
1794
1795// HermezUpdateBucketWithdraw represents a UpdateBucketWithdraw event raised by the Hermez contract.
1796type HermezUpdateBucketWithdraw struct {
1797	NumBucket   uint8
1798	BlockStamp  *big.Int
1799	Withdrawals *big.Int
1800	Raw         types.Log // Blockchain specific contextual infos
1801}
1802
1803// FilterUpdateBucketWithdraw is a free log retrieval operation binding the contract event 0xa35fe9a9e21cdbbc4774aa8a56e7b97ea9c06afc09ffb06af593d26951e350aa.
1804//
1805// Solidity: event UpdateBucketWithdraw(uint8 indexed numBucket, uint256 indexed blockStamp, uint256 withdrawals)
1806func (_Hermez *HermezFilterer) FilterUpdateBucketWithdraw(opts *bind.FilterOpts, numBucket []uint8, blockStamp []*big.Int) (*HermezUpdateBucketWithdrawIterator, error) {
1807
1808	var numBucketRule []interface{}
1809	for _, numBucketItem := range numBucket {
1810		numBucketRule = append(numBucketRule, numBucketItem)
1811	}
1812	var blockStampRule []interface{}
1813	for _, blockStampItem := range blockStamp {
1814		blockStampRule = append(blockStampRule, blockStampItem)
1815	}
1816
1817	logs, sub, err := _Hermez.contract.FilterLogs(opts, "UpdateBucketWithdraw", numBucketRule, blockStampRule)
1818	if err != nil {
1819		return nil, tracerr.Wrap(err)
1820	}
1821	return &HermezUpdateBucketWithdrawIterator{contract: _Hermez.contract, event: "UpdateBucketWithdraw", logs: logs, sub: sub}, nil
1822}
1823
1824// WatchUpdateBucketWithdraw is a free log subscription operation binding the contract event 0xa35fe9a9e21cdbbc4774aa8a56e7b97ea9c06afc09ffb06af593d26951e350aa.
1825//
1826// Solidity: event UpdateBucketWithdraw(uint8 indexed numBucket, uint256 indexed blockStamp, uint256 withdrawals)
1827func (_Hermez *HermezFilterer) WatchUpdateBucketWithdraw(opts *bind.WatchOpts, sink chan<- *HermezUpdateBucketWithdraw, numBucket []uint8, blockStamp []*big.Int) (event.Subscription, error) {
1828
1829	var numBucketRule []interface{}
1830	for _, numBucketItem := range numBucket {
1831		numBucketRule = append(numBucketRule, numBucketItem)
1832	}
1833	var blockStampRule []interface{}
1834	for _, blockStampItem := range blockStamp {
1835		blockStampRule = append(blockStampRule, blockStampItem)
1836	}
1837
1838	logs, sub, err := _Hermez.contract.WatchLogs(opts, "UpdateBucketWithdraw", numBucketRule, blockStampRule)
1839	if err != nil {
1840		return nil, tracerr.Wrap(err)
1841	}
1842	return event.NewSubscription(func(quit <-chan struct{}) error {
1843		defer sub.Unsubscribe()
1844		for {
1845			select {
1846			case log := <-logs:
1847				// New log arrived, parse the event and forward to the user
1848				event := new(HermezUpdateBucketWithdraw)
1849				if err := _Hermez.contract.UnpackLog(event, "UpdateBucketWithdraw", log); err != nil {
1850					return tracerr.Wrap(err)
1851				}
1852				event.Raw = log
1853
1854				select {
1855				case sink <- event:
1856				case err := <-sub.Err():
1857					return tracerr.Wrap(err)
1858				case <-quit:
1859					return nil
1860				}
1861			case err := <-sub.Err():
1862				return tracerr.Wrap(err)
1863			case <-quit:
1864				return nil
1865			}
1866		}
1867	}), nil
1868}
1869
1870// ParseUpdateBucketWithdraw is a log parse operation binding the contract event 0xa35fe9a9e21cdbbc4774aa8a56e7b97ea9c06afc09ffb06af593d26951e350aa.
1871//
1872// Solidity: event UpdateBucketWithdraw(uint8 indexed numBucket, uint256 indexed blockStamp, uint256 withdrawals)
1873func (_Hermez *HermezFilterer) ParseUpdateBucketWithdraw(log types.Log) (*HermezUpdateBucketWithdraw, error) {
1874	event := new(HermezUpdateBucketWithdraw)
1875	if err := _Hermez.contract.UnpackLog(event, "UpdateBucketWithdraw", log); err != nil {
1876		return nil, tracerr.Wrap(err)
1877	}
1878	return event, nil
1879}
1880
1881// HermezUpdateBucketsParametersIterator is returned from FilterUpdateBucketsParameters and is used to iterate over the raw logs and unpacked data for UpdateBucketsParameters events raised by the Hermez contract.
1882type HermezUpdateBucketsParametersIterator struct {
1883	Event *HermezUpdateBucketsParameters // Event containing the contract specifics and raw log
1884
1885	contract *bind.BoundContract // Generic contract to use for unpacking event data
1886	event    string              // Event name to use for unpacking event data
1887
1888	logs chan types.Log        // Log channel receiving the found contract events
1889	sub  ethereum.Subscription // Subscription for errors, completion and termination
1890	done bool                  // Whether the subscription completed delivering logs
1891	fail error                 // Occurred error to stop iteration
1892}
1893
1894// Next advances the iterator to the subsequent event, returning whether there
1895// are any more events found. In case of a retrieval or parsing error, false is
1896// returned and Error() can be queried for the exact failure.
1897func (it *HermezUpdateBucketsParametersIterator) Next() bool {
1898	// If the iterator failed, stop iterating
1899	if it.fail != nil {
1900		return false
1901	}
1902	// If the iterator completed, deliver directly whatever's available
1903	if it.done {
1904		select {
1905		case log := <-it.logs:
1906			it.Event = new(HermezUpdateBucketsParameters)
1907			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1908				it.fail = err
1909				return false
1910			}
1911			it.Event.Raw = log
1912			return true
1913
1914		default:
1915			return false
1916		}
1917	}
1918	// Iterator still in progress, wait for either a data or an error event
1919	select {
1920	case log := <-it.logs:
1921		it.Event = new(HermezUpdateBucketsParameters)
1922		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
1923			it.fail = err
1924			return false
1925		}
1926		it.Event.Raw = log
1927		return true
1928
1929	case err := <-it.sub.Err():
1930		it.done = true
1931		it.fail = err
1932		return it.Next()
1933	}
1934}
1935
1936// Error returns any retrieval or parsing error occurred during filtering.
1937func (it *HermezUpdateBucketsParametersIterator) Error() error {
1938	return it.fail
1939}
1940
1941// Close terminates the iteration process, releasing any pending underlying
1942// resources.
1943func (it *HermezUpdateBucketsParametersIterator) Close() error {
1944	it.sub.Unsubscribe()
1945	return nil
1946}
1947
1948// HermezUpdateBucketsParameters represents a UpdateBucketsParameters event raised by the Hermez contract.
1949type HermezUpdateBucketsParameters struct {
1950	ArrayBuckets [5][4]*big.Int
1951	Raw          types.Log // Blockchain specific contextual infos
1952}
1953
1954// FilterUpdateBucketsParameters is a free log retrieval operation binding the contract event 0x3c39a1e91c69d4cfeacb11190befc2b1c983746e6b21ab2441a3051de88d4480.
1955//
1956// Solidity: event UpdateBucketsParameters(uint256[4][5] arrayBuckets)
1957func (_Hermez *HermezFilterer) FilterUpdateBucketsParameters(opts *bind.FilterOpts) (*HermezUpdateBucketsParametersIterator, error) {
1958
1959	logs, sub, err := _Hermez.contract.FilterLogs(opts, "UpdateBucketsParameters")
1960	if err != nil {
1961		return nil, tracerr.Wrap(err)
1962	}
1963	return &HermezUpdateBucketsParametersIterator{contract: _Hermez.contract, event: "UpdateBucketsParameters", logs: logs, sub: sub}, nil
1964}
1965
1966// WatchUpdateBucketsParameters is a free log subscription operation binding the contract event 0x3c39a1e91c69d4cfeacb11190befc2b1c983746e6b21ab2441a3051de88d4480.
1967//
1968// Solidity: event UpdateBucketsParameters(uint256[4][5] arrayBuckets)
1969func (_Hermez *HermezFilterer) WatchUpdateBucketsParameters(opts *bind.WatchOpts, sink chan<- *HermezUpdateBucketsParameters) (event.Subscription, error) {
1970
1971	logs, sub, err := _Hermez.contract.WatchLogs(opts, "UpdateBucketsParameters")
1972	if err != nil {
1973		return nil, tracerr.Wrap(err)
1974	}
1975	return event.NewSubscription(func(quit <-chan struct{}) error {
1976		defer sub.Unsubscribe()
1977		for {
1978			select {
1979			case log := <-logs:
1980				// New log arrived, parse the event and forward to the user
1981				event := new(HermezUpdateBucketsParameters)
1982				if err := _Hermez.contract.UnpackLog(event, "UpdateBucketsParameters", log); err != nil {
1983					return tracerr.Wrap(err)
1984				}
1985				event.Raw = log
1986
1987				select {
1988				case sink <- event:
1989				case err := <-sub.Err():
1990					return tracerr.Wrap(err)
1991				case <-quit:
1992					return nil
1993				}
1994			case err := <-sub.Err():
1995				return tracerr.Wrap(err)
1996			case <-quit:
1997				return nil
1998			}
1999		}
2000	}), nil
2001}
2002
2003// ParseUpdateBucketsParameters is a log parse operation binding the contract event 0x3c39a1e91c69d4cfeacb11190befc2b1c983746e6b21ab2441a3051de88d4480.
2004//
2005// Solidity: event UpdateBucketsParameters(uint256[4][5] arrayBuckets)
2006func (_Hermez *HermezFilterer) ParseUpdateBucketsParameters(log types.Log) (*HermezUpdateBucketsParameters, error) {
2007	event := new(HermezUpdateBucketsParameters)
2008	if err := _Hermez.contract.UnpackLog(event, "UpdateBucketsParameters", log); err != nil {
2009		return nil, tracerr.Wrap(err)
2010	}
2011	return event, nil
2012}
2013
2014// HermezUpdateFeeAddTokenIterator is returned from FilterUpdateFeeAddToken and is used to iterate over the raw logs and unpacked data for UpdateFeeAddToken events raised by the Hermez contract.
2015type HermezUpdateFeeAddTokenIterator struct {
2016	Event *HermezUpdateFeeAddToken // Event containing the contract specifics and raw log
2017
2018	contract *bind.BoundContract // Generic contract to use for unpacking event data
2019	event    string              // Event name to use for unpacking event data
2020
2021	logs chan types.Log        // Log channel receiving the found contract events
2022	sub  ethereum.Subscription // Subscription for errors, completion and termination
2023	done bool                  // Whether the subscription completed delivering logs
2024	fail error                 // Occurred error to stop iteration
2025}
2026
2027// Next advances the iterator to the subsequent event, returning whether there
2028// are any more events found. In case of a retrieval or parsing error, false is
2029// returned and Error() can be queried for the exact failure.
2030func (it *HermezUpdateFeeAddTokenIterator) Next() bool {
2031	// If the iterator failed, stop iterating
2032	if it.fail != nil {
2033		return false
2034	}
2035	// If the iterator completed, deliver directly whatever's available
2036	if it.done {
2037		select {
2038		case log := <-it.logs:
2039			it.Event = new(HermezUpdateFeeAddToken)
2040			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
2041				it.fail = err
2042				return false
2043			}
2044			it.Event.Raw = log
2045			return true
2046
2047		default:
2048			return false
2049		}
2050	}
2051	// Iterator still in progress, wait for either a data or an error event
2052	select {
2053	case log := <-it.logs:
2054		it.Event = new(HermezUpdateFeeAddToken)
2055		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
2056			it.fail = err
2057			return false
2058		}
2059		it.Event.Raw = log
2060		return true
2061
2062	case err := <-it.sub.Err():
2063		it.done = true
2064		it.fail = err
2065		return it.Next()
2066	}
2067}
2068
2069// Error returns any retrieval or parsing error occurred during filtering.
2070func (it *HermezUpdateFeeAddTokenIterator) Error() error {
2071	return it.fail
2072}
2073
2074// Close terminates the iteration process, releasing any pending underlying
2075// resources.
2076func (it *HermezUpdateFeeAddTokenIterator) Close() error {
2077	it.sub.Unsubscribe()
2078	return nil
2079}
2080
2081// HermezUpdateFeeAddToken represents a UpdateFeeAddToken event raised by the Hermez contract.
2082type HermezUpdateFeeAddToken struct {
2083	NewFeeAddToken *big.Int
2084	Raw            types.Log // Blockchain specific contextual infos
2085}
2086
2087// FilterUpdateFeeAddToken is a free log retrieval operation binding the contract event 0xd1c873cd16013f0dc5f37992c0d12794389698512895ec036a568e393b46e3c1.
2088//
2089// Solidity: event UpdateFeeAddToken(uint256 newFeeAddToken)
2090func (_Hermez *HermezFilterer) FilterUpdateFeeAddToken(opts *bind.FilterOpts) (*HermezUpdateFeeAddTokenIterator, error) {
2091
2092	logs, sub, err := _Hermez.contract.FilterLogs(opts, "UpdateFeeAddToken")
2093	if err != nil {
2094		return nil, tracerr.Wrap(err)
2095	}
2096	return &HermezUpdateFeeAddTokenIterator{contract: _Hermez.contract, event: "UpdateFeeAddToken", logs: logs, sub: sub}, nil
2097}
2098
2099// WatchUpdateFeeAddToken is a free log subscription operation binding the contract event 0xd1c873cd16013f0dc5f37992c0d12794389698512895ec036a568e393b46e3c1.
2100//
2101// Solidity: event UpdateFeeAddToken(uint256 newFeeAddToken)
2102func (_Hermez *HermezFilterer) WatchUpdateFeeAddToken(opts *bind.WatchOpts, sink chan<- *HermezUpdateFeeAddToken) (event.Subscription, error) {
2103
2104	logs, sub, err := _Hermez.contract.WatchLogs(opts, "UpdateFeeAddToken")
2105	if err != nil {
2106		return nil, tracerr.Wrap(err)
2107	}
2108	return event.NewSubscription(func(quit <-chan struct{}) error {
2109		defer sub.Unsubscribe()
2110		for {
2111			select {
2112			case log := <-logs:
2113				// New log arrived, parse the event and forward to the user
2114				event := new(HermezUpdateFeeAddToken)
2115				if err := _Hermez.contract.UnpackLog(event, "UpdateFeeAddToken", log); err != nil {
2116					return tracerr.Wrap(err)
2117				}
2118				event.Raw = log
2119
2120				select {
2121				case sink <- event:
2122				case err := <-sub.Err():
2123					return tracerr.Wrap(err)
2124				case <-quit:
2125					return nil
2126				}
2127			case err := <-sub.Err():
2128				return tracerr.Wrap(err)
2129			case <-quit:
2130				return nil
2131			}
2132		}
2133	}), nil
2134}
2135
2136// ParseUpdateFeeAddToken is a log parse operation binding the contract event 0xd1c873cd16013f0dc5f37992c0d12794389698512895ec036a568e393b46e3c1.
2137//
2138// Solidity: event UpdateFeeAddToken(uint256 newFeeAddToken)
2139func (_Hermez *HermezFilterer) ParseUpdateFeeAddToken(log types.Log) (*HermezUpdateFeeAddToken, error) {
2140	event := new(HermezUpdateFeeAddToken)
2141	if err := _Hermez.contract.UnpackLog(event, "UpdateFeeAddToken", log); err != nil {
2142		return nil, tracerr.Wrap(err)
2143	}
2144	return event, nil
2145}
2146
2147// HermezUpdateForgeL1L2BatchTimeoutIterator is returned from FilterUpdateForgeL1L2BatchTimeout and is used to iterate over the raw logs and unpacked data for UpdateForgeL1L2BatchTimeout events raised by the Hermez contract.
2148type HermezUpdateForgeL1L2BatchTimeoutIterator struct {
2149	Event *HermezUpdateForgeL1L2BatchTimeout // Event containing the contract specifics and raw log
2150
2151	contract *bind.BoundContract // Generic contract to use for unpacking event data
2152	event    string              // Event name to use for unpacking event data
2153
2154	logs chan types.Log        // Log channel receiving the found contract events
2155	sub  ethereum.Subscription // Subscription for errors, completion and termination
2156	done bool                  // Whether the subscription completed delivering logs
2157	fail error                 // Occurred error to stop iteration
2158}
2159
2160// Next advances the iterator to the subsequent event, returning whether there
2161// are any more events found. In case of a retrieval or parsing error, false is
2162// returned and Error() can be queried for the exact failure.
2163func (it *HermezUpdateForgeL1L2BatchTimeoutIterator) Next() bool {
2164	// If the iterator failed, stop iterating
2165	if it.fail != nil {
2166		return false
2167	}
2168	// If the iterator completed, deliver directly whatever's available
2169	if it.done {
2170		select {
2171		case log := <-it.logs:
2172			it.Event = new(HermezUpdateForgeL1L2BatchTimeout)
2173			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
2174				it.fail = err
2175				return false
2176			}
2177			it.Event.Raw = log
2178			return true
2179
2180		default:
2181			return false
2182		}
2183	}
2184	// Iterator still in progress, wait for either a data or an error event
2185	select {
2186	case log := <-it.logs:
2187		it.Event = new(HermezUpdateForgeL1L2BatchTimeout)
2188		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
2189			it.fail = err
2190			return false
2191		}
2192		it.Event.Raw = log
2193		return true
2194
2195	case err := <-it.sub.Err():
2196		it.done = true
2197		it.fail = err
2198		return it.Next()
2199	}
2200}
2201
2202// Error returns any retrieval or parsing error occurred during filtering.
2203func (it *HermezUpdateForgeL1L2BatchTimeoutIterator) Error() error {
2204	return it.fail
2205}
2206
2207// Close terminates the iteration process, releasing any pending underlying
2208// resources.
2209func (it *HermezUpdateForgeL1L2BatchTimeoutIterator) Close() error {
2210	it.sub.Unsubscribe()
2211	return nil
2212}
2213
2214// HermezUpdateForgeL1L2BatchTimeout represents a UpdateForgeL1L2BatchTimeout event raised by the Hermez contract.
2215type HermezUpdateForgeL1L2BatchTimeout struct {
2216	NewForgeL1L2BatchTimeout uint8
2217	Raw                      types.Log // Blockchain specific contextual infos
2218}
2219
2220// FilterUpdateForgeL1L2BatchTimeout is a free log retrieval operation binding the contract event 0xff6221781ac525b04585dbb55cd2ebd2a92c828ca3e42b23813a1137ac974431.
2221//
2222// Solidity: event UpdateForgeL1L2BatchTimeout(uint8 newForgeL1L2BatchTimeout)
2223func (_Hermez *HermezFilterer) FilterUpdateForgeL1L2BatchTimeout(opts *bind.FilterOpts) (*HermezUpdateForgeL1L2BatchTimeoutIterator, error) {
2224
2225	logs, sub, err := _Hermez.contract.FilterLogs(opts, "UpdateForgeL1L2BatchTimeout")
2226	if err != nil {
2227		return nil, tracerr.Wrap(err)
2228	}
2229	return &HermezUpdateForgeL1L2BatchTimeoutIterator{contract: _Hermez.contract, event: "UpdateForgeL1L2BatchTimeout", logs: logs, sub: sub}, nil
2230}
2231
2232// WatchUpdateForgeL1L2BatchTimeout is a free log subscription operation binding the contract event 0xff6221781ac525b04585dbb55cd2ebd2a92c828ca3e42b23813a1137ac974431.
2233//
2234// Solidity: event UpdateForgeL1L2BatchTimeout(uint8 newForgeL1L2BatchTimeout)
2235func (_Hermez *HermezFilterer) WatchUpdateForgeL1L2BatchTimeout(opts *bind.WatchOpts, sink chan<- *HermezUpdateForgeL1L2BatchTimeout) (event.Subscription, error) {
2236
2237	logs, sub, err := _Hermez.contract.WatchLogs(opts, "UpdateForgeL1L2BatchTimeout")
2238	if err != nil {
2239		return nil, tracerr.Wrap(err)
2240	}
2241	return event.NewSubscription(func(quit <-chan struct{}) error {
2242		defer sub.Unsubscribe()
2243		for {
2244			select {
2245			case log := <-logs:
2246				// New log arrived, parse the event and forward to the user
2247				event := new(HermezUpdateForgeL1L2BatchTimeout)
2248				if err := _Hermez.contract.UnpackLog(event, "UpdateForgeL1L2BatchTimeout", log); err != nil {
2249					return tracerr.Wrap(err)
2250				}
2251				event.Raw = log
2252
2253				select {
2254				case sink <- event:
2255				case err := <-sub.Err():
2256					return tracerr.Wrap(err)
2257				case <-quit:
2258					return nil
2259				}
2260			case err := <-sub.Err():
2261				return tracerr.Wrap(err)
2262			case <-quit:
2263				return nil
2264			}
2265		}
2266	}), nil
2267}
2268
2269// ParseUpdateForgeL1L2BatchTimeout is a log parse operation binding the contract event 0xff6221781ac525b04585dbb55cd2ebd2a92c828ca3e42b23813a1137ac974431.
2270//
2271// Solidity: event UpdateForgeL1L2BatchTimeout(uint8 newForgeL1L2BatchTimeout)
2272func (_Hermez *HermezFilterer) ParseUpdateForgeL1L2BatchTimeout(log types.Log) (*HermezUpdateForgeL1L2BatchTimeout, error) {
2273	event := new(HermezUpdateForgeL1L2BatchTimeout)
2274	if err := _Hermez.contract.UnpackLog(event, "UpdateForgeL1L2BatchTimeout", log); err != nil {
2275		return nil, tracerr.Wrap(err)
2276	}
2277	return event, nil
2278}
2279
2280// HermezUpdateTokenExchangeIterator is returned from FilterUpdateTokenExchange and is used to iterate over the raw logs and unpacked data for UpdateTokenExchange events raised by the Hermez contract.
2281type HermezUpdateTokenExchangeIterator struct {
2282	Event *HermezUpdateTokenExchange // Event containing the contract specifics and raw log
2283
2284	contract *bind.BoundContract // Generic contract to use for unpacking event data
2285	event    string              // Event name to use for unpacking event data
2286
2287	logs chan types.Log        // Log channel receiving the found contract events
2288	sub  ethereum.Subscription // Subscription for errors, completion and termination
2289	done bool                  // Whether the subscription completed delivering logs
2290	fail error                 // Occurred error to stop iteration
2291}
2292
2293// Next advances the iterator to the subsequent event, returning whether there
2294// are any more events found. In case of a retrieval or parsing error, false is
2295// returned and Error() can be queried for the exact failure.
2296func (it *HermezUpdateTokenExchangeIterator) Next() bool {
2297	// If the iterator failed, stop iterating
2298	if it.fail != nil {
2299		return false
2300	}
2301	// If the iterator completed, deliver directly whatever's available
2302	if it.done {
2303		select {
2304		case log := <-it.logs:
2305			it.Event = new(HermezUpdateTokenExchange)
2306			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
2307				it.fail = err
2308				return false
2309			}
2310			it.Event.Raw = log
2311			return true
2312
2313		default:
2314			return false
2315		}
2316	}
2317	// Iterator still in progress, wait for either a data or an error event
2318	select {
2319	case log := <-it.logs:
2320		it.Event = new(HermezUpdateTokenExchange)
2321		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
2322			it.fail = err
2323			return false
2324		}
2325		it.Event.Raw = log
2326		return true
2327
2328	case err := <-it.sub.Err():
2329		it.done = true
2330		it.fail = err
2331		return it.Next()
2332	}
2333}
2334
2335// Error returns any retrieval or parsing error occurred during filtering.
2336func (it *HermezUpdateTokenExchangeIterator) Error() error {
2337	return it.fail
2338}
2339
2340// Close terminates the iteration process, releasing any pending underlying
2341// resources.
2342func (it *HermezUpdateTokenExchangeIterator) Close() error {
2343	it.sub.Unsubscribe()
2344	return nil
2345}
2346
2347// HermezUpdateTokenExchange represents a UpdateTokenExchange event raised by the Hermez contract.
2348type HermezUpdateTokenExchange struct {
2349	AddressArray []common.Address
2350	ValueArray   []uint64
2351	Raw          types.Log // Blockchain specific contextual infos
2352}
2353
2354// FilterUpdateTokenExchange is a free log retrieval operation binding the contract event 0x10ff643ebeca3e33002e61b76fa85e7e10091e30afa39295f91af9838b3033b3.
2355//
2356// Solidity: event UpdateTokenExchange(address[] addressArray, uint64[] valueArray)
2357func (_Hermez *HermezFilterer) FilterUpdateTokenExchange(opts *bind.FilterOpts) (*HermezUpdateTokenExchangeIterator, error) {
2358
2359	logs, sub, err := _Hermez.contract.FilterLogs(opts, "UpdateTokenExchange")
2360	if err != nil {
2361		return nil, tracerr.Wrap(err)
2362	}
2363	return &HermezUpdateTokenExchangeIterator{contract: _Hermez.contract, event: "UpdateTokenExchange", logs: logs, sub: sub}, nil
2364}
2365
2366// WatchUpdateTokenExchange is a free log subscription operation binding the contract event 0x10ff643ebeca3e33002e61b76fa85e7e10091e30afa39295f91af9838b3033b3.
2367//
2368// Solidity: event UpdateTokenExchange(address[] addressArray, uint64[] valueArray)
2369func (_Hermez *HermezFilterer) WatchUpdateTokenExchange(opts *bind.WatchOpts, sink chan<- *HermezUpdateTokenExchange) (event.Subscription, error) {
2370
2371	logs, sub, err := _Hermez.contract.WatchLogs(opts, "UpdateTokenExchange")
2372	if err != nil {
2373		return nil, tracerr.Wrap(err)
2374	}
2375	return event.NewSubscription(func(quit <-chan struct{}) error {
2376		defer sub.Unsubscribe()
2377		for {
2378			select {
2379			case log := <-logs:
2380				// New log arrived, parse the event and forward to the user
2381				event := new(HermezUpdateTokenExchange)
2382				if err := _Hermez.contract.UnpackLog(event, "UpdateTokenExchange", log); err != nil {
2383					return tracerr.Wrap(err)
2384				}
2385				event.Raw = log
2386
2387				select {
2388				case sink <- event:
2389				case err := <-sub.Err():
2390					return tracerr.Wrap(err)
2391				case <-quit:
2392					return nil
2393				}
2394			case err := <-sub.Err():
2395				return tracerr.Wrap(err)
2396			case <-quit:
2397				return nil
2398			}
2399		}
2400	}), nil
2401}
2402
2403// ParseUpdateTokenExchange is a log parse operation binding the contract event 0x10ff643ebeca3e33002e61b76fa85e7e10091e30afa39295f91af9838b3033b3.
2404//
2405// Solidity: event UpdateTokenExchange(address[] addressArray, uint64[] valueArray)
2406func (_Hermez *HermezFilterer) ParseUpdateTokenExchange(log types.Log) (*HermezUpdateTokenExchange, error) {
2407	event := new(HermezUpdateTokenExchange)
2408	if err := _Hermez.contract.UnpackLog(event, "UpdateTokenExchange", log); err != nil {
2409		return nil, tracerr.Wrap(err)
2410	}
2411	return event, nil
2412}
2413
2414// HermezUpdateWithdrawalDelayIterator is returned from FilterUpdateWithdrawalDelay and is used to iterate over the raw logs and unpacked data for UpdateWithdrawalDelay events raised by the Hermez contract.
2415type HermezUpdateWithdrawalDelayIterator struct {
2416	Event *HermezUpdateWithdrawalDelay // Event containing the contract specifics and raw log
2417
2418	contract *bind.BoundContract // Generic contract to use for unpacking event data
2419	event    string              // Event name to use for unpacking event data
2420
2421	logs chan types.Log        // Log channel receiving the found contract events
2422	sub  ethereum.Subscription // Subscription for errors, completion and termination
2423	done bool                  // Whether the subscription completed delivering logs
2424	fail error                 // Occurred error to stop iteration
2425}
2426
2427// Next advances the iterator to the subsequent event, returning whether there
2428// are any more events found. In case of a retrieval or parsing error, false is
2429// returned and Error() can be queried for the exact failure.
2430func (it *HermezUpdateWithdrawalDelayIterator) Next() bool {
2431	// If the iterator failed, stop iterating
2432	if it.fail != nil {
2433		return false
2434	}
2435	// If the iterator completed, deliver directly whatever's available
2436	if it.done {
2437		select {
2438		case log := <-it.logs:
2439			it.Event = new(HermezUpdateWithdrawalDelay)
2440			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
2441				it.fail = err
2442				return false
2443			}
2444			it.Event.Raw = log
2445			return true
2446
2447		default:
2448			return false
2449		}
2450	}
2451	// Iterator still in progress, wait for either a data or an error event
2452	select {
2453	case log := <-it.logs:
2454		it.Event = new(HermezUpdateWithdrawalDelay)
2455		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
2456			it.fail = err
2457			return false
2458		}
2459		it.Event.Raw = log
2460		return true
2461
2462	case err := <-it.sub.Err():
2463		it.done = true
2464		it.fail = err
2465		return it.Next()
2466	}
2467}
2468
2469// Error returns any retrieval or parsing error occurred during filtering.
2470func (it *HermezUpdateWithdrawalDelayIterator) Error() error {
2471	return it.fail
2472}
2473
2474// Close terminates the iteration process, releasing any pending underlying
2475// resources.
2476func (it *HermezUpdateWithdrawalDelayIterator) Close() error {
2477	it.sub.Unsubscribe()
2478	return nil
2479}
2480
2481// HermezUpdateWithdrawalDelay represents a UpdateWithdrawalDelay event raised by the Hermez contract.
2482type HermezUpdateWithdrawalDelay struct {
2483	NewWithdrawalDelay uint64
2484	Raw                types.Log // Blockchain specific contextual infos
2485}
2486
2487// FilterUpdateWithdrawalDelay is a free log retrieval operation binding the contract event 0x9db302c4547a21fb20a3a794e5f63ee87eb6e4afc3325ebdadba2d1fb4a90737.
2488//
2489// Solidity: event UpdateWithdrawalDelay(uint64 newWithdrawalDelay)
2490func (_Hermez *HermezFilterer) FilterUpdateWithdrawalDelay(opts *bind.FilterOpts) (*HermezUpdateWithdrawalDelayIterator, error) {
2491
2492	logs, sub, err := _Hermez.contract.FilterLogs(opts, "UpdateWithdrawalDelay")
2493	if err != nil {
2494		return nil, tracerr.Wrap(err)
2495	}
2496	return &HermezUpdateWithdrawalDelayIterator{contract: _Hermez.contract, event: "UpdateWithdrawalDelay", logs: logs, sub: sub}, nil
2497}
2498
2499// WatchUpdateWithdrawalDelay is a free log subscription operation binding the contract event 0x9db302c4547a21fb20a3a794e5f63ee87eb6e4afc3325ebdadba2d1fb4a90737.
2500//
2501// Solidity: event UpdateWithdrawalDelay(uint64 newWithdrawalDelay)
2502func (_Hermez *HermezFilterer) WatchUpdateWithdrawalDelay(opts *bind.WatchOpts, sink chan<- *HermezUpdateWithdrawalDelay) (event.Subscription, error) {
2503
2504	logs, sub, err := _Hermez.contract.WatchLogs(opts, "UpdateWithdrawalDelay")
2505	if err != nil {
2506		return nil, tracerr.Wrap(err)
2507	}
2508	return event.NewSubscription(func(quit <-chan struct{}) error {
2509		defer sub.Unsubscribe()
2510		for {
2511			select {
2512			case log := <-logs:
2513				// New log arrived, parse the event and forward to the user
2514				event := new(HermezUpdateWithdrawalDelay)
2515				if err := _Hermez.contract.UnpackLog(event, "UpdateWithdrawalDelay", log); err != nil {
2516					return tracerr.Wrap(err)
2517				}
2518				event.Raw = log
2519
2520				select {
2521				case sink <- event:
2522				case err := <-sub.Err():
2523					return tracerr.Wrap(err)
2524				case <-quit:
2525					return nil
2526				}
2527			case err := <-sub.Err():
2528				return tracerr.Wrap(err)
2529			case <-quit:
2530				return nil
2531			}
2532		}
2533	}), nil
2534}
2535
2536// ParseUpdateWithdrawalDelay is a log parse operation binding the contract event 0x9db302c4547a21fb20a3a794e5f63ee87eb6e4afc3325ebdadba2d1fb4a90737.
2537//
2538// Solidity: event UpdateWithdrawalDelay(uint64 newWithdrawalDelay)
2539func (_Hermez *HermezFilterer) ParseUpdateWithdrawalDelay(log types.Log) (*HermezUpdateWithdrawalDelay, error) {
2540	event := new(HermezUpdateWithdrawalDelay)
2541	if err := _Hermez.contract.UnpackLog(event, "UpdateWithdrawalDelay", log); err != nil {
2542		return nil, tracerr.Wrap(err)
2543	}
2544	return event, nil
2545}
2546
2547// HermezWithdrawEventIterator is returned from FilterWithdrawEvent and is used to iterate over the raw logs and unpacked data for WithdrawEvent events raised by the Hermez contract.
2548type HermezWithdrawEventIterator struct {
2549	Event *HermezWithdrawEvent // Event containing the contract specifics and raw log
2550
2551	contract *bind.BoundContract // Generic contract to use for unpacking event data
2552	event    string              // Event name to use for unpacking event data
2553
2554	logs chan types.Log        // Log channel receiving the found contract events
2555	sub  ethereum.Subscription // Subscription for errors, completion and termination
2556	done bool                  // Whether the subscription completed delivering logs
2557	fail error                 // Occurred error to stop iteration
2558}
2559
2560// Next advances the iterator to the subsequent event, returning whether there
2561// are any more events found. In case of a retrieval or parsing error, false is
2562// returned and Error() can be queried for the exact failure.
2563func (it *HermezWithdrawEventIterator) Next() bool {
2564	// If the iterator failed, stop iterating
2565	if it.fail != nil {
2566		return false
2567	}
2568	// If the iterator completed, deliver directly whatever's available
2569	if it.done {
2570		select {
2571		case log := <-it.logs:
2572			it.Event = new(HermezWithdrawEvent)
2573			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
2574				it.fail = err
2575				return false
2576			}
2577			it.Event.Raw = log
2578			return true
2579
2580		default:
2581			return false
2582		}
2583	}
2584	// Iterator still in progress, wait for either a data or an error event
2585	select {
2586	case log := <-it.logs:
2587		it.Event = new(HermezWithdrawEvent)
2588		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
2589			it.fail = err
2590			return false
2591		}
2592		it.Event.Raw = log
2593		return true
2594
2595	case err := <-it.sub.Err():
2596		it.done = true
2597		it.fail = err
2598		return it.Next()
2599	}
2600}
2601
2602// Error returns any retrieval or parsing error occurred during filtering.
2603func (it *HermezWithdrawEventIterator) Error() error {
2604	return it.fail
2605}
2606
2607// Close terminates the iteration process, releasing any pending underlying
2608// resources.
2609func (it *HermezWithdrawEventIterator) Close() error {
2610	it.sub.Unsubscribe()
2611	return nil
2612}
2613
2614// HermezWithdrawEvent represents a WithdrawEvent event raised by the Hermez contract.
2615type HermezWithdrawEvent struct {
2616	Idx             *big.Int
2617	NumExitRoot     *big.Int
2618	InstantWithdraw bool
2619	Raw             types.Log // Blockchain specific contextual infos
2620}
2621
2622// FilterWithdrawEvent is a free log retrieval operation binding the contract event 0x92dd99230eaf5e3f1238fbbd0d72b34e8c2ad759886075bfc9f426ebeeea34f0.
2623//
2624// Solidity: event WithdrawEvent(uint48 indexed idx, uint48 indexed numExitRoot, bool indexed instantWithdraw)
2625func (_Hermez *HermezFilterer) FilterWithdrawEvent(opts *bind.FilterOpts, idx []*big.Int, numExitRoot []*big.Int, instantWithdraw []bool) (*HermezWithdrawEventIterator, error) {
2626
2627	var idxRule []interface{}
2628	for _, idxItem := range idx {
2629		idxRule = append(idxRule, idxItem)
2630	}
2631	var numExitRootRule []interface{}
2632	for _, numExitRootItem := range numExitRoot {
2633		numExitRootRule = append(numExitRootRule, numExitRootItem)
2634	}
2635	var instantWithdrawRule []interface{}
2636	for _, instantWithdrawItem := range instantWithdraw {
2637		instantWithdrawRule = append(instantWithdrawRule, instantWithdrawItem)
2638	}
2639
2640	logs, sub, err := _Hermez.contract.FilterLogs(opts, "WithdrawEvent", idxRule, numExitRootRule, instantWithdrawRule)
2641	if err != nil {
2642		return nil, tracerr.Wrap(err)
2643	}
2644	return &HermezWithdrawEventIterator{contract: _Hermez.contract, event: "WithdrawEvent", logs: logs, sub: sub}, nil
2645}
2646
2647// WatchWithdrawEvent is a free log subscription operation binding the contract event 0x92dd99230eaf5e3f1238fbbd0d72b34e8c2ad759886075bfc9f426ebeeea34f0.
2648//
2649// Solidity: event WithdrawEvent(uint48 indexed idx, uint48 indexed numExitRoot, bool indexed instantWithdraw)
2650func (_Hermez *HermezFilterer) WatchWithdrawEvent(opts *bind.WatchOpts, sink chan<- *HermezWithdrawEvent, idx []*big.Int, numExitRoot []*big.Int, instantWithdraw []bool) (event.Subscription, error) {
2651
2652	var idxRule []interface{}
2653	for _, idxItem := range idx {
2654		idxRule = append(idxRule, idxItem)
2655	}
2656	var numExitRootRule []interface{}
2657	for _, numExitRootItem := range numExitRoot {
2658		numExitRootRule = append(numExitRootRule, numExitRootItem)
2659	}
2660	var instantWithdrawRule []interface{}
2661	for _, instantWithdrawItem := range instantWithdraw {
2662		instantWithdrawRule = append(instantWithdrawRule, instantWithdrawItem)
2663	}
2664
2665	logs, sub, err := _Hermez.contract.WatchLogs(opts, "WithdrawEvent", idxRule, numExitRootRule, instantWithdrawRule)
2666	if err != nil {
2667		return nil, tracerr.Wrap(err)
2668	}
2669	return event.NewSubscription(func(quit <-chan struct{}) error {
2670		defer sub.Unsubscribe()
2671		for {
2672			select {
2673			case log := <-logs:
2674				// New log arrived, parse the event and forward to the user
2675				event := new(HermezWithdrawEvent)
2676				if err := _Hermez.contract.UnpackLog(event, "WithdrawEvent", log); err != nil {
2677					return tracerr.Wrap(err)
2678				}
2679				event.Raw = log
2680
2681				select {
2682				case sink <- event:
2683				case err := <-sub.Err():
2684					return tracerr.Wrap(err)
2685				case <-quit:
2686					return nil
2687				}
2688			case err := <-sub.Err():
2689				return tracerr.Wrap(err)
2690			case <-quit:
2691				return nil
2692			}
2693		}
2694	}), nil
2695}
2696
2697// ParseWithdrawEvent is a log parse operation binding the contract event 0x92dd99230eaf5e3f1238fbbd0d72b34e8c2ad759886075bfc9f426ebeeea34f0.
2698//
2699// Solidity: event WithdrawEvent(uint48 indexed idx, uint48 indexed numExitRoot, bool indexed instantWithdraw)
2700func (_Hermez *HermezFilterer) ParseWithdrawEvent(log types.Log) (*HermezWithdrawEvent, error) {
2701	event := new(HermezWithdrawEvent)
2702	if err := _Hermez.contract.UnpackLog(event, "WithdrawEvent", log); err != nil {
2703		return nil, tracerr.Wrap(err)
2704	}
2705	return event, nil
2706}