From 285c03cd9bf899b69511396ab9dada55ab9288e7 Mon Sep 17 00:00:00 2001 From: Raul Jordan Date: Fri, 24 May 2024 15:20:21 -0500 Subject: [PATCH 1/4] use auto staking pools for assertions --- assertions/pool.go | 104 ++++++++++++++++++ .../assertionStakingPoolgen.go | 8 +- solgen/go/bridgegen/bridgegen.go | 2 +- solgen/go/challengeV2gen/challengeV2gen.go | 2 +- solgen/go/mocksgen/mocksgen.go | 6 +- solgen/go/rollupgen/rollupgen.go | 20 ++-- 6 files changed, 123 insertions(+), 19 deletions(-) create mode 100644 assertions/pool.go diff --git a/assertions/pool.go b/assertions/pool.go new file mode 100644 index 000000000..885f8f161 --- /dev/null +++ b/assertions/pool.go @@ -0,0 +1,104 @@ +package assertions + +import ( + "context" + + protocol "github.com/OffchainLabs/bold/chain-abstraction" + "github.com/OffchainLabs/bold/containers/option" + pools "github.com/OffchainLabs/bold/solgen/go/assertionStakingPoolgen" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" +) + +type useAssertionPoolArgs struct { + parentAssertion protocol.AssertionHash + assertionHash protocol.AssertionHash +} + +func (m *Manager) useAssertionPool( + ctx context.Context, + args useAssertionPoolArgs, +) { + assertionPool, err := m.getOrCreateAssertionPool(ctx, args) + if err != nil { + panic(err) + } +} + +type assertionStakingPool struct{} + +// Get an assertion staking pool for the assertion we wish to post. +func (m *Manager) getOrCreateAssertionPool( + ctx context.Context, + args useAssertionPoolArgs, +) (*assertionStakingPool, error) { + var poolAddr common.Address + poolAddrOpt := m.checkAssertionPoolCreated(ctx, args) + if poolAddrOpt.IsSome() { + poolAddr = poolAddrOpt.Unwrap() + } else { + m.createAssertionStakingPool(ctx, args) + } + return nil, nil +} + +func (m *Manager) createAssertionStakingPool(ctx context.Context, args useAssertionPoolArgs) common.Address { + return common.Address{} +} + +// Scan for any pools created since the latest confirmed assertion +// from the staking pool factory. +func (m *Manager) checkAssertionPoolCreated( + ctx context.Context, + args useAssertionPoolArgs, +) option.Option[common.Address] { + poolFactory, err := pools.NewAssertionStakingPoolCreator(common.Address{}, m.backend) + if err != nil { + panic(err) + } + parent, err := m.chain.ReadAssertionCreationInfo(ctx, args.parentAssertion) + if err != nil { + panic(err) + } + // Keep filtering until we reach the threshold. + filterOpts := &bind.FilterOpts{ + Start: parent.CreationBlock, + End: nil, + } + it, err := poolFactory.FilterNewAssertionPoolCreated( + filterOpts, + []common.Address{m.rollupAddr}, + [][32]byte{ + args.assertionHash.Hash, + }, + ) + if err != nil { + panic(err) + } + defer func() { + if err = it.Close(); err != nil { + panic(err) + } + }() + for it.Next() { + if it.Error() != nil { + panic(err) + } + return option.Some(it.Event.AssertionPool) + } + return option.None[common.Address]() +} + +type monitorPoolCreatorArgs struct { + parentAssertion protocol.AssertionHash + assertionHash protocol.AssertionHash +} + +// Monitor any staking pools that we care about which reach the threshold. +// Should we block until the pool threshold is reached and not post more? +// There is only one canonical assertion branch, so yes we likely do have to wait. +func (m *Manager) monitorAssertionPool( + ctx context.Context, + args monitorPoolCreatorArgs, +) { +} diff --git a/solgen/go/assertionStakingPoolgen/assertionStakingPoolgen.go b/solgen/go/assertionStakingPoolgen/assertionStakingPoolgen.go index d0a7b0c7c..677069158 100644 --- a/solgen/go/assertionStakingPoolgen/assertionStakingPoolgen.go +++ b/solgen/go/assertionStakingPoolgen/assertionStakingPoolgen.go @@ -644,7 +644,7 @@ func (_AbsBoldStakingPool *AbsBoldStakingPoolFilterer) ParseStakeWithdrawn(log t // AssertionStakingPoolMetaData contains all meta data concerning the AssertionStakingPool contract. var AssertionStakingPoolMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rollup\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_assertionHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"name\":\"AmountExceedsBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAmount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"StakeDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"StakeWithdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"assertionHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"prevPrevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sequencerBatchAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"internalType\":\"structBeforeStateData\",\"name\":\"beforeStateData\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"beforeState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"afterState\",\"type\":\"tuple\"}],\"internalType\":\"structAssertionInputs\",\"name\":\"assertionInputs\",\"type\":\"tuple\"}],\"name\":\"createAssertion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"depositBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositIntoPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"makeStakeWithdrawable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"makeStakeWithdrawableAndWithdrawBackIntoPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollup\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakeToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawFromPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawFromPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawStakeBackIntoPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60e060405234801561001057600080fd5b50604051610ee6380380610ee683398101604081905261002f916100ca565b816001600160a01b03166351ed6a306040518163ffffffff1660e01b8152600401602060405180830381865afa15801561006d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061009191906100f6565b6001600160a01b039081166080529190911660a05260c052610118565b80516001600160a01b03811681146100c557600080fd5b919050565b600080604083850312156100dd57600080fd5b6100e6836100ae565b9150602083015190509250929050565b60006020828403121561010857600080fd5b610111826100ae565b9392505050565b60805160a05160c051610d6861017e6000396000818160d301526104be0152600081816101c7015281816104380152818161048d01528181610520015261059501526000818161012a015281816102c0015281816103a401526104160152610d686000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80637476083b116100815780639451944d1161005b5780639451944d1461019a578063956501bb146101a2578063cb23bcb5146101c257600080fd5b80637476083b1461016c578063839159711461017f578063930412af1461019257600080fd5b806330fc43ed116100b257806330fc43ed1461011257806351ed6a30146101255780636b74d5151461016457600080fd5b80632113ed21146100ce57806326c0e5c514610108575b600080fd5b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6101106101e9565b005b610110610120366004610a7c565b610204565b61014c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100ff565b610110610328565b61011061017a366004610a7c565b610338565b61011061018d366004610a95565b610404565b61011061051e565b610110610593565b6100f56101b0366004610aca565b60006020819052908152604090205481565b61014c7f000000000000000000000000000000000000000000000000000000000000000081565b3360009081526020819052604090205461020290610204565b565b8060000361023e576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152602081905260409020548082111561029d576040517fa47b7c6500000000000000000000000000000000000000000000000000000000815233600482015260248101839052604481018290526064015b60405180910390fd5b6102a78282610b14565b336000818152602081905260409020919091556102ef907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908461061a565b60405182815233907f8108595eb6bad3acefa9da467d90cc2217686d5c5ac85460f8b7849c840645fc9060200160405180910390a25050565b61033061051e565b610202610593565b80600003610372576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526020819052604081208054839290610391908490610b2d565b909155506103cc90506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846106c8565b60405181815233907f0a7bb2e28cc4698aac06db79cf9163bfcc20719286cf59fa7d492ceda1b8edc29060200160405180910390a250565b606081013561045d6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610719565b6040517f50f32f680000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906350f32f68906104e890849086907f0000000000000000000000000000000000000000000000000000000000000000903090600401610bbe565b600060405180830381600087803b15801561050257600080fd5b505af1158015610516573d6000803e3d6000fd5b505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166357ef4ab96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561057957600080fd5b505af115801561058d573d6000803e3d6000fd5b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663613739196040518163ffffffff1660e01b81526004016020604051808303816000875af11580156105f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106179190610c84565b50565b6040516001600160a01b0383166024820152604481018290526106c39084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526107fd565b505050565b6040516001600160a01b038085166024830152831660448201526064810182905261058d9085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161065f565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610783573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a79190610c84565b6107b19190610b2d565b6040516001600160a01b03851660248201526044810182905290915061058d9085907f095ea7b3000000000000000000000000000000000000000000000000000000009060640161065f565b6000610852826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166108e29092919063ffffffff16565b8051909150156106c357808060200190518101906108709190610c9d565b6106c35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610294565b60606108f184846000856108fb565b90505b9392505050565b6060824710156109735760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610294565b6001600160a01b0385163b6109ca5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610294565b600080866001600160a01b031685876040516109e69190610ce3565b60006040518083038185875af1925050503d8060008114610a23576040519150601f19603f3d011682016040523d82523d6000602084013e610a28565b606091505b5091509150610a38828286610a43565b979650505050505050565b60608315610a525750816108f4565b825115610a625782518084602001fd5b8160405162461bcd60e51b81526004016102949190610cff565b600060208284031215610a8e57600080fd5b5035919050565b60006102608284031215610aa857600080fd5b50919050565b80356001600160a01b0381168114610ac557600080fd5b919050565b600060208284031215610adc57600080fd5b6108f482610aae565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610b2757610b27610ae5565b92915050565b80820180821115610b2757610b27610ae5565b803567ffffffffffffffff81168114610ac557600080fd5b6040818337604082016040820160005b6002811015610b995767ffffffffffffffff610b8383610b40565b1683526020928301929190910190600101610b68565b505050608081013560038110610bae57600080fd5b608083015260a090810135910152565b60006102c082019050858252843560208301526020850135604083015260408501356060830152606085013560808301526001600160a01b03610c0360808701610aae565b1660a0830152610c1560a08601610b40565b67ffffffffffffffff80821660c085015280610c3360c08901610b40565b1660e08501525050610c4c610100830160e08701610b58565b610c5e6101c083016101a08701610b58565b83610280830152610c7b6102a08301846001600160a01b03169052565b95945050505050565b600060208284031215610c9657600080fd5b5051919050565b600060208284031215610caf57600080fd5b815180151581146108f457600080fd5b60005b83811015610cda578181015183820152602001610cc2565b50506000910152565b60008251610cf5818460208701610cbf565b9190910192915050565b6020815260008251806020840152610d1e816040850160208701610cbf565b601f01601f1916919091016040019291505056fea264697066735822122030b866aa59d4f1411404ab77604fd81cace05eeb71316f63ecd54fd36a87340064736f6c63430008110033", + Bin: "0x60e060405234801561001057600080fd5b50604051610ee6380380610ee683398101604081905261002f916100ca565b816001600160a01b03166351ed6a306040518163ffffffff1660e01b8152600401602060405180830381865afa15801561006d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061009191906100f6565b6001600160a01b039081166080529190911660a05260c052610118565b80516001600160a01b03811681146100c557600080fd5b919050565b600080604083850312156100dd57600080fd5b6100e6836100ae565b9150602083015190509250929050565b60006020828403121561010857600080fd5b610111826100ae565b9392505050565b60805160a05160c051610d6861017e6000396000818160d301526104be0152600081816101c7015281816104380152818161048d01528181610520015261059501526000818161012a015281816102c0015281816103a401526104160152610d686000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80637476083b116100815780639451944d1161005b5780639451944d1461019a578063956501bb146101a2578063cb23bcb5146101c257600080fd5b80637476083b1461016c578063839159711461017f578063930412af1461019257600080fd5b806330fc43ed116100b257806330fc43ed1461011257806351ed6a30146101255780636b74d5151461016457600080fd5b80632113ed21146100ce57806326c0e5c514610108575b600080fd5b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6101106101e9565b005b610110610120366004610a7c565b610204565b61014c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100ff565b610110610328565b61011061017a366004610a7c565b610338565b61011061018d366004610a95565b610404565b61011061051e565b610110610593565b6100f56101b0366004610aca565b60006020819052908152604090205481565b61014c7f000000000000000000000000000000000000000000000000000000000000000081565b3360009081526020819052604090205461020290610204565b565b8060000361023e576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152602081905260409020548082111561029d576040517fa47b7c6500000000000000000000000000000000000000000000000000000000815233600482015260248101839052604481018290526064015b60405180910390fd5b6102a78282610b14565b336000818152602081905260409020919091556102ef907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908461061a565b60405182815233907f8108595eb6bad3acefa9da467d90cc2217686d5c5ac85460f8b7849c840645fc9060200160405180910390a25050565b61033061051e565b610202610593565b80600003610372576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526020819052604081208054839290610391908490610b2d565b909155506103cc90506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846106c8565b60405181815233907f0a7bb2e28cc4698aac06db79cf9163bfcc20719286cf59fa7d492ceda1b8edc29060200160405180910390a250565b606081013561045d6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610719565b6040517f50f32f680000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906350f32f68906104e890849086907f0000000000000000000000000000000000000000000000000000000000000000903090600401610bbe565b600060405180830381600087803b15801561050257600080fd5b505af1158015610516573d6000803e3d6000fd5b505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166357ef4ab96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561057957600080fd5b505af115801561058d573d6000803e3d6000fd5b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663613739196040518163ffffffff1660e01b81526004016020604051808303816000875af11580156105f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106179190610c84565b50565b6040516001600160a01b0383166024820152604481018290526106c39084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526107fd565b505050565b6040516001600160a01b038085166024830152831660448201526064810182905261058d9085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161065f565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610783573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a79190610c84565b6107b19190610b2d565b6040516001600160a01b03851660248201526044810182905290915061058d9085907f095ea7b3000000000000000000000000000000000000000000000000000000009060640161065f565b6000610852826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166108e29092919063ffffffff16565b8051909150156106c357808060200190518101906108709190610c9d565b6106c35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610294565b60606108f184846000856108fb565b90505b9392505050565b6060824710156109735760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610294565b6001600160a01b0385163b6109ca5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610294565b600080866001600160a01b031685876040516109e69190610ce3565b60006040518083038185875af1925050503d8060008114610a23576040519150601f19603f3d011682016040523d82523d6000602084013e610a28565b606091505b5091509150610a38828286610a43565b979650505050505050565b60608315610a525750816108f4565b825115610a625782518084602001fd5b8160405162461bcd60e51b81526004016102949190610cff565b600060208284031215610a8e57600080fd5b5035919050565b60006102608284031215610aa857600080fd5b50919050565b80356001600160a01b0381168114610ac557600080fd5b919050565b600060208284031215610adc57600080fd5b6108f482610aae565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610b2757610b27610ae5565b92915050565b80820180821115610b2757610b27610ae5565b803567ffffffffffffffff81168114610ac557600080fd5b6040818337604082016040820160005b6002811015610b995767ffffffffffffffff610b8383610b40565b1683526020928301929190910190600101610b68565b505050608081013560038110610bae57600080fd5b608083015260a090810135910152565b60006102c082019050858252843560208301526020850135604083015260408501356060830152606085013560808301526001600160a01b03610c0360808701610aae565b1660a0830152610c1560a08601610b40565b67ffffffffffffffff80821660c085015280610c3360c08901610b40565b1660e08501525050610c4c610100830160e08701610b58565b610c5e6101c083016101a08701610b58565b83610280830152610c7b6102a08301846001600160a01b03169052565b95945050505050565b600060208284031215610c9657600080fd5b5051919050565b600060208284031215610caf57600080fd5b815180151581146108f457600080fd5b60005b83811015610cda578181015183820152602001610cc2565b50506000910152565b60008251610cf5818460208701610cbf565b9190910192915050565b6020815260008251806020840152610d1e816040850160208701610cbf565b601f01601f1916919091016040019291505056fea26469706673582212203311fba276085cf76f38fa821bd0ba3d91185eede0407a7204fe9894c95de29264736f6c63430008110033", } // AssertionStakingPoolABI is the input ABI used to generate the binding from. @@ -1378,7 +1378,7 @@ func (_AssertionStakingPool *AssertionStakingPoolFilterer) ParseStakeWithdrawn(l // AssertionStakingPoolCreatorMetaData contains all meta data concerning the AssertionStakingPoolCreator contract. var AssertionStakingPoolCreatorMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"PoolDoesntExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rollup\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_assertionHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"assertionPool\",\"type\":\"address\"}],\"name\":\"NewAssertionPoolCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rollup\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_assertionHash\",\"type\":\"bytes32\"}],\"name\":\"createPool\",\"outputs\":[{\"internalType\":\"contractIAssertionStakingPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rollup\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_assertionHash\",\"type\":\"bytes32\"}],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"contractIAssertionStakingPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50611263806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80639b505aa11461003b578063dc082ad314610077575b600080fd5b61004e6100493660046102b5565b61008a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61004e6100853660046102b5565b61013d565b6000806000801b848460405161009f906102a8565b73ffffffffffffffffffffffffffffffffffffffff909216825260208201526040018190604051809103906000f59050801580156100e1573d6000803e3d6000fd5b5060405173ffffffffffffffffffffffffffffffffffffffff808316825291925084918616907fd628317c6ebae87acc5dbfadeb835cb97692cc6935ea72bf37461e14a0bbee1e9060200160405180910390a390505b92915050565b600061019f60405180602001610152906102a8565b601f1982820381018352601f90910116604081815273ffffffffffffffffffffffffffffffffffffffff8716602083015281018590526060016040516020818303038152906040526101a6565b9392505050565b60008083836040516020016101bc92919061032a565b60408051808303601f1901815282825280516020918201207fff00000000000000000000000000000000000000000000000000000000000000828501523060601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166021850152600060358501526055808501829052835180860390910181526075909401909252825192019190912090915073ffffffffffffffffffffffffffffffffffffffff81163b156102765791506101379050565b6040517f215db33100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ee68061034883390190565b600080604083850312156102c857600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146102ec57600080fd5b946020939093013593505050565b6000815160005b8181101561031b5760208185018101518683015201610301565b50600093019283525090919050565b600061033f61033983866102fa565b846102fa565b94935050505056fe60e060405234801561001057600080fd5b50604051610ee6380380610ee683398101604081905261002f916100ca565b816001600160a01b03166351ed6a306040518163ffffffff1660e01b8152600401602060405180830381865afa15801561006d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061009191906100f6565b6001600160a01b039081166080529190911660a05260c052610118565b80516001600160a01b03811681146100c557600080fd5b919050565b600080604083850312156100dd57600080fd5b6100e6836100ae565b9150602083015190509250929050565b60006020828403121561010857600080fd5b610111826100ae565b9392505050565b60805160a05160c051610d6861017e6000396000818160d301526104be0152600081816101c7015281816104380152818161048d01528181610520015261059501526000818161012a015281816102c0015281816103a401526104160152610d686000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80637476083b116100815780639451944d1161005b5780639451944d1461019a578063956501bb146101a2578063cb23bcb5146101c257600080fd5b80637476083b1461016c578063839159711461017f578063930412af1461019257600080fd5b806330fc43ed116100b257806330fc43ed1461011257806351ed6a30146101255780636b74d5151461016457600080fd5b80632113ed21146100ce57806326c0e5c514610108575b600080fd5b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6101106101e9565b005b610110610120366004610a7c565b610204565b61014c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100ff565b610110610328565b61011061017a366004610a7c565b610338565b61011061018d366004610a95565b610404565b61011061051e565b610110610593565b6100f56101b0366004610aca565b60006020819052908152604090205481565b61014c7f000000000000000000000000000000000000000000000000000000000000000081565b3360009081526020819052604090205461020290610204565b565b8060000361023e576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152602081905260409020548082111561029d576040517fa47b7c6500000000000000000000000000000000000000000000000000000000815233600482015260248101839052604481018290526064015b60405180910390fd5b6102a78282610b14565b336000818152602081905260409020919091556102ef907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908461061a565b60405182815233907f8108595eb6bad3acefa9da467d90cc2217686d5c5ac85460f8b7849c840645fc9060200160405180910390a25050565b61033061051e565b610202610593565b80600003610372576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526020819052604081208054839290610391908490610b2d565b909155506103cc90506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846106c8565b60405181815233907f0a7bb2e28cc4698aac06db79cf9163bfcc20719286cf59fa7d492ceda1b8edc29060200160405180910390a250565b606081013561045d6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610719565b6040517f50f32f680000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906350f32f68906104e890849086907f0000000000000000000000000000000000000000000000000000000000000000903090600401610bbe565b600060405180830381600087803b15801561050257600080fd5b505af1158015610516573d6000803e3d6000fd5b505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166357ef4ab96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561057957600080fd5b505af115801561058d573d6000803e3d6000fd5b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663613739196040518163ffffffff1660e01b81526004016020604051808303816000875af11580156105f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106179190610c84565b50565b6040516001600160a01b0383166024820152604481018290526106c39084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526107fd565b505050565b6040516001600160a01b038085166024830152831660448201526064810182905261058d9085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161065f565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610783573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a79190610c84565b6107b19190610b2d565b6040516001600160a01b03851660248201526044810182905290915061058d9085907f095ea7b3000000000000000000000000000000000000000000000000000000009060640161065f565b6000610852826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166108e29092919063ffffffff16565b8051909150156106c357808060200190518101906108709190610c9d565b6106c35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610294565b60606108f184846000856108fb565b90505b9392505050565b6060824710156109735760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610294565b6001600160a01b0385163b6109ca5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610294565b600080866001600160a01b031685876040516109e69190610ce3565b60006040518083038185875af1925050503d8060008114610a23576040519150601f19603f3d011682016040523d82523d6000602084013e610a28565b606091505b5091509150610a38828286610a43565b979650505050505050565b60608315610a525750816108f4565b825115610a625782518084602001fd5b8160405162461bcd60e51b81526004016102949190610cff565b600060208284031215610a8e57600080fd5b5035919050565b60006102608284031215610aa857600080fd5b50919050565b80356001600160a01b0381168114610ac557600080fd5b919050565b600060208284031215610adc57600080fd5b6108f482610aae565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610b2757610b27610ae5565b92915050565b80820180821115610b2757610b27610ae5565b803567ffffffffffffffff81168114610ac557600080fd5b6040818337604082016040820160005b6002811015610b995767ffffffffffffffff610b8383610b40565b1683526020928301929190910190600101610b68565b505050608081013560038110610bae57600080fd5b608083015260a090810135910152565b60006102c082019050858252843560208301526020850135604083015260408501356060830152606085013560808301526001600160a01b03610c0360808701610aae565b1660a0830152610c1560a08601610b40565b67ffffffffffffffff80821660c085015280610c3360c08901610b40565b1660e08501525050610c4c610100830160e08701610b58565b610c5e6101c083016101a08701610b58565b83610280830152610c7b6102a08301846001600160a01b03169052565b95945050505050565b600060208284031215610c9657600080fd5b5051919050565b600060208284031215610caf57600080fd5b815180151581146108f457600080fd5b60005b83811015610cda578181015183820152602001610cc2565b50506000910152565b60008251610cf5818460208701610cbf565b9190910192915050565b6020815260008251806020840152610d1e816040850160208701610cbf565b601f01601f1916919091016040019291505056fea264697066735822122030b866aa59d4f1411404ab77604fd81cace05eeb71316f63ecd54fd36a87340064736f6c63430008110033a264697066735822122067d8c29ee1e2099b349b67a9e34201e6bcba5f47ce4d3cc5603d64c4ebc73dec64736f6c63430008110033", + Bin: "0x608060405234801561001057600080fd5b50611263806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80639b505aa11461003b578063dc082ad314610077575b600080fd5b61004e6100493660046102b5565b61008a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61004e6100853660046102b5565b61013d565b6000806000801b848460405161009f906102a8565b73ffffffffffffffffffffffffffffffffffffffff909216825260208201526040018190604051809103906000f59050801580156100e1573d6000803e3d6000fd5b5060405173ffffffffffffffffffffffffffffffffffffffff808316825291925084918616907fd628317c6ebae87acc5dbfadeb835cb97692cc6935ea72bf37461e14a0bbee1e9060200160405180910390a390505b92915050565b600061019f60405180602001610152906102a8565b601f1982820381018352601f90910116604081815273ffffffffffffffffffffffffffffffffffffffff8716602083015281018590526060016040516020818303038152906040526101a6565b9392505050565b60008083836040516020016101bc92919061032a565b60408051808303601f1901815282825280516020918201207fff00000000000000000000000000000000000000000000000000000000000000828501523060601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166021850152600060358501526055808501829052835180860390910181526075909401909252825192019190912090915073ffffffffffffffffffffffffffffffffffffffff81163b156102765791506101379050565b6040517f215db33100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ee68061034883390190565b600080604083850312156102c857600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146102ec57600080fd5b946020939093013593505050565b6000815160005b8181101561031b5760208185018101518683015201610301565b50600093019283525090919050565b600061033f61033983866102fa565b846102fa565b94935050505056fe60e060405234801561001057600080fd5b50604051610ee6380380610ee683398101604081905261002f916100ca565b816001600160a01b03166351ed6a306040518163ffffffff1660e01b8152600401602060405180830381865afa15801561006d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061009191906100f6565b6001600160a01b039081166080529190911660a05260c052610118565b80516001600160a01b03811681146100c557600080fd5b919050565b600080604083850312156100dd57600080fd5b6100e6836100ae565b9150602083015190509250929050565b60006020828403121561010857600080fd5b610111826100ae565b9392505050565b60805160a05160c051610d6861017e6000396000818160d301526104be0152600081816101c7015281816104380152818161048d01528181610520015261059501526000818161012a015281816102c0015281816103a401526104160152610d686000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80637476083b116100815780639451944d1161005b5780639451944d1461019a578063956501bb146101a2578063cb23bcb5146101c257600080fd5b80637476083b1461016c578063839159711461017f578063930412af1461019257600080fd5b806330fc43ed116100b257806330fc43ed1461011257806351ed6a30146101255780636b74d5151461016457600080fd5b80632113ed21146100ce57806326c0e5c514610108575b600080fd5b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6101106101e9565b005b610110610120366004610a7c565b610204565b61014c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100ff565b610110610328565b61011061017a366004610a7c565b610338565b61011061018d366004610a95565b610404565b61011061051e565b610110610593565b6100f56101b0366004610aca565b60006020819052908152604090205481565b61014c7f000000000000000000000000000000000000000000000000000000000000000081565b3360009081526020819052604090205461020290610204565b565b8060000361023e576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152602081905260409020548082111561029d576040517fa47b7c6500000000000000000000000000000000000000000000000000000000815233600482015260248101839052604481018290526064015b60405180910390fd5b6102a78282610b14565b336000818152602081905260409020919091556102ef907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908461061a565b60405182815233907f8108595eb6bad3acefa9da467d90cc2217686d5c5ac85460f8b7849c840645fc9060200160405180910390a25050565b61033061051e565b610202610593565b80600003610372576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526020819052604081208054839290610391908490610b2d565b909155506103cc90506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846106c8565b60405181815233907f0a7bb2e28cc4698aac06db79cf9163bfcc20719286cf59fa7d492ceda1b8edc29060200160405180910390a250565b606081013561045d6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610719565b6040517f50f32f680000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906350f32f68906104e890849086907f0000000000000000000000000000000000000000000000000000000000000000903090600401610bbe565b600060405180830381600087803b15801561050257600080fd5b505af1158015610516573d6000803e3d6000fd5b505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166357ef4ab96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561057957600080fd5b505af115801561058d573d6000803e3d6000fd5b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663613739196040518163ffffffff1660e01b81526004016020604051808303816000875af11580156105f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106179190610c84565b50565b6040516001600160a01b0383166024820152604481018290526106c39084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526107fd565b505050565b6040516001600160a01b038085166024830152831660448201526064810182905261058d9085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161065f565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610783573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a79190610c84565b6107b19190610b2d565b6040516001600160a01b03851660248201526044810182905290915061058d9085907f095ea7b3000000000000000000000000000000000000000000000000000000009060640161065f565b6000610852826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166108e29092919063ffffffff16565b8051909150156106c357808060200190518101906108709190610c9d565b6106c35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610294565b60606108f184846000856108fb565b90505b9392505050565b6060824710156109735760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610294565b6001600160a01b0385163b6109ca5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610294565b600080866001600160a01b031685876040516109e69190610ce3565b60006040518083038185875af1925050503d8060008114610a23576040519150601f19603f3d011682016040523d82523d6000602084013e610a28565b606091505b5091509150610a38828286610a43565b979650505050505050565b60608315610a525750816108f4565b825115610a625782518084602001fd5b8160405162461bcd60e51b81526004016102949190610cff565b600060208284031215610a8e57600080fd5b5035919050565b60006102608284031215610aa857600080fd5b50919050565b80356001600160a01b0381168114610ac557600080fd5b919050565b600060208284031215610adc57600080fd5b6108f482610aae565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610b2757610b27610ae5565b92915050565b80820180821115610b2757610b27610ae5565b803567ffffffffffffffff81168114610ac557600080fd5b6040818337604082016040820160005b6002811015610b995767ffffffffffffffff610b8383610b40565b1683526020928301929190910190600101610b68565b505050608081013560038110610bae57600080fd5b608083015260a090810135910152565b60006102c082019050858252843560208301526020850135604083015260408501356060830152606085013560808301526001600160a01b03610c0360808701610aae565b1660a0830152610c1560a08601610b40565b67ffffffffffffffff80821660c085015280610c3360c08901610b40565b1660e08501525050610c4c610100830160e08701610b58565b610c5e6101c083016101a08701610b58565b83610280830152610c7b6102a08301846001600160a01b03169052565b95945050505050565b600060208284031215610c9657600080fd5b5051919050565b600060208284031215610caf57600080fd5b815180151581146108f457600080fd5b60005b83811015610cda578181015183820152602001610cc2565b50506000910152565b60008251610cf5818460208701610cbf565b9190910192915050565b6020815260008251806020840152610d1e816040850160208701610cbf565b601f01601f1916919091016040019291505056fea26469706673582212203311fba276085cf76f38fa821bd0ba3d91185eede0407a7204fe9894c95de29264736f6c63430008110033a264697066735822122048ef59de8b756651048d5b3b453807503deb1db5986de15854912ed278b47fe464736f6c63430008110033", } // AssertionStakingPoolCreatorABI is the input ABI used to generate the binding from. @@ -1757,7 +1757,7 @@ func (_AssertionStakingPoolCreator *AssertionStakingPoolCreatorFilterer) ParseNe // EdgeStakingPoolMetaData contains all meta data concerning the EdgeStakingPool contract. var EdgeStakingPoolMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_challengeManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_edgeId\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"name\":\"AmountExceedsBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"actual\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expected\",\"type\":\"bytes32\"}],\"name\":\"IncorrectEdgeId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAmount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"StakeDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"StakeWithdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"challengeManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"level\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"claimId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"prefixProof\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"internalType\":\"structCreateEdgeArgs\",\"name\":\"args\",\"type\":\"tuple\"}],\"name\":\"createEdge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"depositBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositIntoPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"edgeId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakeToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawFromPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawFromPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60e060405234801561001057600080fd5b50604051610ec8380380610ec883398101604081905261002f916100c6565b816001600160a01b03166351ed6a306040518163ffffffff1660e01b8152600401602060405180830381865afa15801561006d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061009191906100f4565b6001600160a01b039081166080529190911660a05260c052610118565b6001600160a01b03811681146100c357600080fd5b50565b600080604083850312156100d957600080fd5b82516100e4816100ae565b6020939093015192949293505050565b60006020828403121561010657600080fd5b8151610111816100ae565b9392505050565b60805160a05160c051610d4b61017d6000396000818161015b0152818161055801526105ac0152600081816092015281816103a70152818161048401526104dc01526000818160f3015281816102670152818161033b01526104620152610d4b6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80637476083b1161005b5780637476083b14610115578063956501bb146101285780639cfa2a2a14610156578063bd3eec7d1461017d57600080fd5b8063023a96fe1461008d57806326c0e5c5146100d157806330fc43ed146100db57806351ed6a30146100ee575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100d9610190565b005b6100d96100e9366004610a40565b6101ab565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100d9610123366004610a40565b6102cf565b610148610136366004610a59565b60006020819052908152604090205481565b6040519081526020016100c8565b6101487f000000000000000000000000000000000000000000000000000000000000000081565b6100d961018b366004610a82565b61039b565b336000908152602081905260409020546101a9906101ab565b565b806000036101e5576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526020819052604090205480821115610244576040517fa47b7c6500000000000000000000000000000000000000000000000000000000815233600482015260248101839052604481018290526064015b60405180910390fd5b61024e8282610aec565b33600081815260208190526040902091909155610296907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690846105dd565b60405182815233907f8108595eb6bad3acefa9da467d90cc2217686d5c5ac85460f8b7849c840645fc9060200160405180910390a25050565b80600003610309576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526020819052604081208054839290610328908490610b05565b9091555061036390506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084610686565b60405181815233907f0a7bb2e28cc4698aac06db79cf9163bfcc20719286cf59fa7d492ceda1b8edc29060200160405180910390a250565b60006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016631c1b4f3a6103d96020850185610b2e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260ff9091166004820152602401602060405180830381865afa15801561042f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104539190610b49565b90506104a96001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836106dd565b6040517f05fae1410000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906305fae14190610511908690600401610bf8565b6020604051808303816000875af1158015610530573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105549190610b49565b90507f000000000000000000000000000000000000000000000000000000000000000081146105d8576040517f75c0811b000000000000000000000000000000000000000000000000000000008152600481018290527f0000000000000000000000000000000000000000000000000000000000000000602482015260440161023b565b505050565b6040516001600160a01b0383166024820152604481018290526105d89084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526107c1565b6040516001600160a01b03808516602483015283166044820152606481018290526106d79085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610622565b50505050565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076b9190610b49565b6107759190610b05565b6040516001600160a01b0385166024820152604481018290529091506106d79085907f095ea7b30000000000000000000000000000000000000000000000000000000090606401610622565b6000610816826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166108a69092919063ffffffff16565b8051909150156105d857808060200190518101906108349190610c80565b6105d85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161023b565b60606108b584846000856108bf565b90505b9392505050565b6060824710156109375760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161023b565b6001600160a01b0385163b61098e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161023b565b600080866001600160a01b031685876040516109aa9190610cc6565b60006040518083038185875af1925050503d80600081146109e7576040519150601f19603f3d011682016040523d82523d6000602084013e6109ec565b606091505b50915091506109fc828286610a07565b979650505050505050565b60608315610a165750816108b8565b825115610a265782518084602001fd5b8160405162461bcd60e51b815260040161023b9190610ce2565b600060208284031215610a5257600080fd5b5035919050565b600060208284031215610a6b57600080fd5b81356001600160a01b03811681146108b857600080fd5b600060208284031215610a9457600080fd5b813567ffffffffffffffff811115610aab57600080fd5b820160c081850312156108b857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610aff57610aff610abd565b92915050565b80820180821115610aff57610aff610abd565b803560ff81168114610b2957600080fd5b919050565b600060208284031215610b4057600080fd5b6108b882610b18565b600060208284031215610b5b57600080fd5b5051919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610b9757600080fd5b830160208101925035905067ffffffffffffffff811115610bb757600080fd5b803603821315610bc657600080fd5b9250929050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6020815260ff610c0783610b18565b1660208201526020820135604082015260408201356060820152606082013560808201526000610c3a6080840184610b62565b60c060a0850152610c4f60e085018284610bcd565b915050610c5f60a0850185610b62565b601f198584030160c0860152610c76838284610bcd565b9695505050505050565b600060208284031215610c9257600080fd5b815180151581146108b857600080fd5b60005b83811015610cbd578181015183820152602001610ca5565b50506000910152565b60008251610cd8818460208701610ca2565b9190910192915050565b6020815260008251806020840152610d01816040850160208701610ca2565b601f01601f1916919091016040019291505056fea2646970667358221220b25564cfd5c83ddfd5c116ca52b696051757526e56a55848fd3c8650164f2def64736f6c63430008110033", + Bin: "0x60e060405234801561001057600080fd5b50604051610ec8380380610ec883398101604081905261002f916100c6565b816001600160a01b03166351ed6a306040518163ffffffff1660e01b8152600401602060405180830381865afa15801561006d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061009191906100f4565b6001600160a01b039081166080529190911660a05260c052610118565b6001600160a01b03811681146100c357600080fd5b50565b600080604083850312156100d957600080fd5b82516100e4816100ae565b6020939093015192949293505050565b60006020828403121561010657600080fd5b8151610111816100ae565b9392505050565b60805160a05160c051610d4b61017d6000396000818161015b0152818161055801526105ac0152600081816092015281816103a70152818161048401526104dc01526000818160f3015281816102670152818161033b01526104620152610d4b6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80637476083b1161005b5780637476083b14610115578063956501bb146101285780639cfa2a2a14610156578063bd3eec7d1461017d57600080fd5b8063023a96fe1461008d57806326c0e5c5146100d157806330fc43ed146100db57806351ed6a30146100ee575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100d9610190565b005b6100d96100e9366004610a40565b6101ab565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100d9610123366004610a40565b6102cf565b610148610136366004610a59565b60006020819052908152604090205481565b6040519081526020016100c8565b6101487f000000000000000000000000000000000000000000000000000000000000000081565b6100d961018b366004610a82565b61039b565b336000908152602081905260409020546101a9906101ab565b565b806000036101e5576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526020819052604090205480821115610244576040517fa47b7c6500000000000000000000000000000000000000000000000000000000815233600482015260248101839052604481018290526064015b60405180910390fd5b61024e8282610aec565b33600081815260208190526040902091909155610296907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690846105dd565b60405182815233907f8108595eb6bad3acefa9da467d90cc2217686d5c5ac85460f8b7849c840645fc9060200160405180910390a25050565b80600003610309576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526020819052604081208054839290610328908490610b05565b9091555061036390506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084610686565b60405181815233907f0a7bb2e28cc4698aac06db79cf9163bfcc20719286cf59fa7d492ceda1b8edc29060200160405180910390a250565b60006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016631c1b4f3a6103d96020850185610b2e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260ff9091166004820152602401602060405180830381865afa15801561042f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104539190610b49565b90506104a96001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836106dd565b6040517f05fae1410000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906305fae14190610511908690600401610bf8565b6020604051808303816000875af1158015610530573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105549190610b49565b90507f000000000000000000000000000000000000000000000000000000000000000081146105d8576040517f75c0811b000000000000000000000000000000000000000000000000000000008152600481018290527f0000000000000000000000000000000000000000000000000000000000000000602482015260440161023b565b505050565b6040516001600160a01b0383166024820152604481018290526105d89084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526107c1565b6040516001600160a01b03808516602483015283166044820152606481018290526106d79085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610622565b50505050565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076b9190610b49565b6107759190610b05565b6040516001600160a01b0385166024820152604481018290529091506106d79085907f095ea7b30000000000000000000000000000000000000000000000000000000090606401610622565b6000610816826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166108a69092919063ffffffff16565b8051909150156105d857808060200190518101906108349190610c80565b6105d85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161023b565b60606108b584846000856108bf565b90505b9392505050565b6060824710156109375760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161023b565b6001600160a01b0385163b61098e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161023b565b600080866001600160a01b031685876040516109aa9190610cc6565b60006040518083038185875af1925050503d80600081146109e7576040519150601f19603f3d011682016040523d82523d6000602084013e6109ec565b606091505b50915091506109fc828286610a07565b979650505050505050565b60608315610a165750816108b8565b825115610a265782518084602001fd5b8160405162461bcd60e51b815260040161023b9190610ce2565b600060208284031215610a5257600080fd5b5035919050565b600060208284031215610a6b57600080fd5b81356001600160a01b03811681146108b857600080fd5b600060208284031215610a9457600080fd5b813567ffffffffffffffff811115610aab57600080fd5b820160c081850312156108b857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610aff57610aff610abd565b92915050565b80820180821115610aff57610aff610abd565b803560ff81168114610b2957600080fd5b919050565b600060208284031215610b4057600080fd5b6108b882610b18565b600060208284031215610b5b57600080fd5b5051919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610b9757600080fd5b830160208101925035905067ffffffffffffffff811115610bb757600080fd5b803603821315610bc657600080fd5b9250929050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6020815260ff610c0783610b18565b1660208201526020820135604082015260408201356060820152606082013560808201526000610c3a6080840184610b62565b60c060a0850152610c4f60e085018284610bcd565b915050610c5f60a0850185610b62565b601f198584030160c0860152610c76838284610bcd565b9695505050505050565b600060208284031215610c9257600080fd5b815180151581146108b857600080fd5b60005b83811015610cbd578181015183820152602001610ca5565b50506000910152565b60008251610cd8818460208701610ca2565b9190910192915050565b6020815260008251806020840152610d01816040850160208701610ca2565b601f01601f1916919091016040019291505056fea26469706673582212201a6f479128b558432128bd0e2bd6220a2c85771c3c2f0244d820f90ccd4a985a64736f6c63430008110033", } // EdgeStakingPoolABI is the input ABI used to generate the binding from. @@ -2428,7 +2428,7 @@ func (_EdgeStakingPool *EdgeStakingPoolFilterer) ParseStakeWithdrawn(log types.L // EdgeStakingPoolCreatorMetaData contains all meta data concerning the EdgeStakingPoolCreator contract. var EdgeStakingPoolCreatorMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"PoolDoesntExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"NewEdgeStakingPoolCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"createPool\",\"outputs\":[{\"internalType\":\"contractIEdgeStakingPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"contractIEdgeStakingPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50611239806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80639b505aa11461003b578063dc082ad314610077575b600080fd5b61004e6100493660046102a9565b61008a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61004e6100853660046102a9565b610131565b6000806000801b848460405161009f9061029c565b73ffffffffffffffffffffffffffffffffffffffff909216825260208201526040018190604051809103906000f59050801580156100e1573d6000803e3d6000fd5b509050828473ffffffffffffffffffffffffffffffffffffffff167f15e71db3d71eb3b7985105d763101e1d6c1c491ab3e6a0d682558c12cc0bb8d660405160405180910390a390505b92915050565b6000610193604051806020016101469061029c565b601f1982820381018352601f90910116604081815273ffffffffffffffffffffffffffffffffffffffff87166020830152810185905260600160405160208183030381529060405261019a565b9392505050565b60008083836040516020016101b092919061031e565b60408051808303601f1901815282825280516020918201207fff00000000000000000000000000000000000000000000000000000000000000828501523060601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166021850152600060358501526055808501829052835180860390910181526075909401909252825192019190912090915073ffffffffffffffffffffffffffffffffffffffff81163b1561026a57915061012b9050565b6040517f215db33100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ec88061033c83390190565b600080604083850312156102bc57600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146102e057600080fd5b946020939093013593505050565b6000815160005b8181101561030f57602081850181015186830152016102f5565b50600093019283525090919050565b600061033361032d83866102ee565b846102ee565b94935050505056fe60e060405234801561001057600080fd5b50604051610ec8380380610ec883398101604081905261002f916100c6565b816001600160a01b03166351ed6a306040518163ffffffff1660e01b8152600401602060405180830381865afa15801561006d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061009191906100f4565b6001600160a01b039081166080529190911660a05260c052610118565b6001600160a01b03811681146100c357600080fd5b50565b600080604083850312156100d957600080fd5b82516100e4816100ae565b6020939093015192949293505050565b60006020828403121561010657600080fd5b8151610111816100ae565b9392505050565b60805160a05160c051610d4b61017d6000396000818161015b0152818161055801526105ac0152600081816092015281816103a70152818161048401526104dc01526000818160f3015281816102670152818161033b01526104620152610d4b6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80637476083b1161005b5780637476083b14610115578063956501bb146101285780639cfa2a2a14610156578063bd3eec7d1461017d57600080fd5b8063023a96fe1461008d57806326c0e5c5146100d157806330fc43ed146100db57806351ed6a30146100ee575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100d9610190565b005b6100d96100e9366004610a40565b6101ab565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100d9610123366004610a40565b6102cf565b610148610136366004610a59565b60006020819052908152604090205481565b6040519081526020016100c8565b6101487f000000000000000000000000000000000000000000000000000000000000000081565b6100d961018b366004610a82565b61039b565b336000908152602081905260409020546101a9906101ab565b565b806000036101e5576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526020819052604090205480821115610244576040517fa47b7c6500000000000000000000000000000000000000000000000000000000815233600482015260248101839052604481018290526064015b60405180910390fd5b61024e8282610aec565b33600081815260208190526040902091909155610296907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690846105dd565b60405182815233907f8108595eb6bad3acefa9da467d90cc2217686d5c5ac85460f8b7849c840645fc9060200160405180910390a25050565b80600003610309576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526020819052604081208054839290610328908490610b05565b9091555061036390506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084610686565b60405181815233907f0a7bb2e28cc4698aac06db79cf9163bfcc20719286cf59fa7d492ceda1b8edc29060200160405180910390a250565b60006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016631c1b4f3a6103d96020850185610b2e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260ff9091166004820152602401602060405180830381865afa15801561042f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104539190610b49565b90506104a96001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836106dd565b6040517f05fae1410000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906305fae14190610511908690600401610bf8565b6020604051808303816000875af1158015610530573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105549190610b49565b90507f000000000000000000000000000000000000000000000000000000000000000081146105d8576040517f75c0811b000000000000000000000000000000000000000000000000000000008152600481018290527f0000000000000000000000000000000000000000000000000000000000000000602482015260440161023b565b505050565b6040516001600160a01b0383166024820152604481018290526105d89084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526107c1565b6040516001600160a01b03808516602483015283166044820152606481018290526106d79085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610622565b50505050565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076b9190610b49565b6107759190610b05565b6040516001600160a01b0385166024820152604481018290529091506106d79085907f095ea7b30000000000000000000000000000000000000000000000000000000090606401610622565b6000610816826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166108a69092919063ffffffff16565b8051909150156105d857808060200190518101906108349190610c80565b6105d85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161023b565b60606108b584846000856108bf565b90505b9392505050565b6060824710156109375760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161023b565b6001600160a01b0385163b61098e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161023b565b600080866001600160a01b031685876040516109aa9190610cc6565b60006040518083038185875af1925050503d80600081146109e7576040519150601f19603f3d011682016040523d82523d6000602084013e6109ec565b606091505b50915091506109fc828286610a07565b979650505050505050565b60608315610a165750816108b8565b825115610a265782518084602001fd5b8160405162461bcd60e51b815260040161023b9190610ce2565b600060208284031215610a5257600080fd5b5035919050565b600060208284031215610a6b57600080fd5b81356001600160a01b03811681146108b857600080fd5b600060208284031215610a9457600080fd5b813567ffffffffffffffff811115610aab57600080fd5b820160c081850312156108b857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610aff57610aff610abd565b92915050565b80820180821115610aff57610aff610abd565b803560ff81168114610b2957600080fd5b919050565b600060208284031215610b4057600080fd5b6108b882610b18565b600060208284031215610b5b57600080fd5b5051919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610b9757600080fd5b830160208101925035905067ffffffffffffffff811115610bb757600080fd5b803603821315610bc657600080fd5b9250929050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6020815260ff610c0783610b18565b1660208201526020820135604082015260408201356060820152606082013560808201526000610c3a6080840184610b62565b60c060a0850152610c4f60e085018284610bcd565b915050610c5f60a0850185610b62565b601f198584030160c0860152610c76838284610bcd565b9695505050505050565b600060208284031215610c9257600080fd5b815180151581146108b857600080fd5b60005b83811015610cbd578181015183820152602001610ca5565b50506000910152565b60008251610cd8818460208701610ca2565b9190910192915050565b6020815260008251806020840152610d01816040850160208701610ca2565b601f01601f1916919091016040019291505056fea2646970667358221220b25564cfd5c83ddfd5c116ca52b696051757526e56a55848fd3c8650164f2def64736f6c63430008110033a26469706673582212207b5612864a30e294f909fc1bbb91c4a01ca24ca73ab5b261251ccfd89770761a64736f6c63430008110033", + Bin: "0x608060405234801561001057600080fd5b50611239806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80639b505aa11461003b578063dc082ad314610077575b600080fd5b61004e6100493660046102a9565b61008a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61004e6100853660046102a9565b610131565b6000806000801b848460405161009f9061029c565b73ffffffffffffffffffffffffffffffffffffffff909216825260208201526040018190604051809103906000f59050801580156100e1573d6000803e3d6000fd5b509050828473ffffffffffffffffffffffffffffffffffffffff167f15e71db3d71eb3b7985105d763101e1d6c1c491ab3e6a0d682558c12cc0bb8d660405160405180910390a390505b92915050565b6000610193604051806020016101469061029c565b601f1982820381018352601f90910116604081815273ffffffffffffffffffffffffffffffffffffffff87166020830152810185905260600160405160208183030381529060405261019a565b9392505050565b60008083836040516020016101b092919061031e565b60408051808303601f1901815282825280516020918201207fff00000000000000000000000000000000000000000000000000000000000000828501523060601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166021850152600060358501526055808501829052835180860390910181526075909401909252825192019190912090915073ffffffffffffffffffffffffffffffffffffffff81163b1561026a57915061012b9050565b6040517f215db33100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ec88061033c83390190565b600080604083850312156102bc57600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146102e057600080fd5b946020939093013593505050565b6000815160005b8181101561030f57602081850181015186830152016102f5565b50600093019283525090919050565b600061033361032d83866102ee565b846102ee565b94935050505056fe60e060405234801561001057600080fd5b50604051610ec8380380610ec883398101604081905261002f916100c6565b816001600160a01b03166351ed6a306040518163ffffffff1660e01b8152600401602060405180830381865afa15801561006d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061009191906100f4565b6001600160a01b039081166080529190911660a05260c052610118565b6001600160a01b03811681146100c357600080fd5b50565b600080604083850312156100d957600080fd5b82516100e4816100ae565b6020939093015192949293505050565b60006020828403121561010657600080fd5b8151610111816100ae565b9392505050565b60805160a05160c051610d4b61017d6000396000818161015b0152818161055801526105ac0152600081816092015281816103a70152818161048401526104dc01526000818160f3015281816102670152818161033b01526104620152610d4b6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80637476083b1161005b5780637476083b14610115578063956501bb146101285780639cfa2a2a14610156578063bd3eec7d1461017d57600080fd5b8063023a96fe1461008d57806326c0e5c5146100d157806330fc43ed146100db57806351ed6a30146100ee575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100d9610190565b005b6100d96100e9366004610a40565b6101ab565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100d9610123366004610a40565b6102cf565b610148610136366004610a59565b60006020819052908152604090205481565b6040519081526020016100c8565b6101487f000000000000000000000000000000000000000000000000000000000000000081565b6100d961018b366004610a82565b61039b565b336000908152602081905260409020546101a9906101ab565b565b806000036101e5576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526020819052604090205480821115610244576040517fa47b7c6500000000000000000000000000000000000000000000000000000000815233600482015260248101839052604481018290526064015b60405180910390fd5b61024e8282610aec565b33600081815260208190526040902091909155610296907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690846105dd565b60405182815233907f8108595eb6bad3acefa9da467d90cc2217686d5c5ac85460f8b7849c840645fc9060200160405180910390a25050565b80600003610309576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526020819052604081208054839290610328908490610b05565b9091555061036390506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084610686565b60405181815233907f0a7bb2e28cc4698aac06db79cf9163bfcc20719286cf59fa7d492ceda1b8edc29060200160405180910390a250565b60006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016631c1b4f3a6103d96020850185610b2e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260ff9091166004820152602401602060405180830381865afa15801561042f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104539190610b49565b90506104a96001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836106dd565b6040517f05fae1410000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906305fae14190610511908690600401610bf8565b6020604051808303816000875af1158015610530573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105549190610b49565b90507f000000000000000000000000000000000000000000000000000000000000000081146105d8576040517f75c0811b000000000000000000000000000000000000000000000000000000008152600481018290527f0000000000000000000000000000000000000000000000000000000000000000602482015260440161023b565b505050565b6040516001600160a01b0383166024820152604481018290526105d89084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526107c1565b6040516001600160a01b03808516602483015283166044820152606481018290526106d79085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610622565b50505050565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076b9190610b49565b6107759190610b05565b6040516001600160a01b0385166024820152604481018290529091506106d79085907f095ea7b30000000000000000000000000000000000000000000000000000000090606401610622565b6000610816826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166108a69092919063ffffffff16565b8051909150156105d857808060200190518101906108349190610c80565b6105d85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161023b565b60606108b584846000856108bf565b90505b9392505050565b6060824710156109375760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161023b565b6001600160a01b0385163b61098e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161023b565b600080866001600160a01b031685876040516109aa9190610cc6565b60006040518083038185875af1925050503d80600081146109e7576040519150601f19603f3d011682016040523d82523d6000602084013e6109ec565b606091505b50915091506109fc828286610a07565b979650505050505050565b60608315610a165750816108b8565b825115610a265782518084602001fd5b8160405162461bcd60e51b815260040161023b9190610ce2565b600060208284031215610a5257600080fd5b5035919050565b600060208284031215610a6b57600080fd5b81356001600160a01b03811681146108b857600080fd5b600060208284031215610a9457600080fd5b813567ffffffffffffffff811115610aab57600080fd5b820160c081850312156108b857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610aff57610aff610abd565b92915050565b80820180821115610aff57610aff610abd565b803560ff81168114610b2957600080fd5b919050565b600060208284031215610b4057600080fd5b6108b882610b18565b600060208284031215610b5b57600080fd5b5051919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610b9757600080fd5b830160208101925035905067ffffffffffffffff811115610bb757600080fd5b803603821315610bc657600080fd5b9250929050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6020815260ff610c0783610b18565b1660208201526020820135604082015260408201356060820152606082013560808201526000610c3a6080840184610b62565b60c060a0850152610c4f60e085018284610bcd565b915050610c5f60a0850185610b62565b601f198584030160c0860152610c76838284610bcd565b9695505050505050565b600060208284031215610c9257600080fd5b815180151581146108b857600080fd5b60005b83811015610cbd578181015183820152602001610ca5565b50506000910152565b60008251610cd8818460208701610ca2565b9190910192915050565b6020815260008251806020840152610d01816040850160208701610ca2565b601f01601f1916919091016040019291505056fea26469706673582212201a6f479128b558432128bd0e2bd6220a2c85771c3c2f0244d820f90ccd4a985a64736f6c63430008110033a264697066735822122068f9f6b17844cfd2867ca35fcba2908ac23e4e75c8e37cfd9449b3a3d69c988c64736f6c63430008110033", } // EdgeStakingPoolCreatorABI is the input ABI used to generate the binding from. diff --git a/solgen/go/bridgegen/bridgegen.go b/solgen/go/bridgegen/bridgegen.go index c2f99c906..750dcce5c 100644 --- a/solgen/go/bridgegen/bridgegen.go +++ b/solgen/go/bridgegen/bridgegen.go @@ -27342,7 +27342,7 @@ func (_Outbox *OutboxFilterer) ParseSendRootUpdated(log types.Log) (*OutboxSendR // SequencerInboxMetaData contains all meta data concerning the SequencerInbox contract. var SequencerInboxMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxDataSize\",\"type\":\"uint256\"},{\"internalType\":\"contractIReader4844\",\"name\":\"reader4844_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isUsingFeeToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_isDelayBufferable\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyInit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"AlreadyValidDASKeyset\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadBufferConfig\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadMaxTimeVariation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stored\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"received\",\"type\":\"uint256\"}],\"name\":\"BadSequencerNumber\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DataBlobsNotSupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDataLength\",\"type\":\"uint256\"}],\"name\":\"DataTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelayProofRequired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelayedBackwards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelayedTooFar\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Deprecated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExtraGasNotUint64\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceIncludeBlockTooSoon\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HadZeroInit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectMessagePreimage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"InitParamZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelayedAccPreimage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"name\":\"InvalidHeaderFlag\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"KeysetTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingDataHashes\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NativeTokenMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"NoSuchKeyset\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotBatchPoster\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"NotBatchPosterManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotDelayBufferable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotForked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOrigin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"NotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RollupNotChanged\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"messageNum\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"InboxMessageDelivered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"messageNum\",\"type\":\"uint256\"}],\"name\":\"InboxMessageDeliveredFromOrigin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"keysetHash\",\"type\":\"bytes32\"}],\"name\":\"InvalidateKeyset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"OwnerFunctionCalled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"batchSequenceNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"SequencerBatchData\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"batchSequenceNumber\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"beforeAcc\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"afterAcc\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"delayedAcc\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"minBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxBlockNumber\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structIBridge.TimeBounds\",\"name\":\"timeBounds\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"enumIBridge.BatchDataLocation\",\"name\":\"dataLocation\",\"type\":\"uint8\"}],\"name\":\"SequencerBatchDelivered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"keysetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"keysetBytes\",\"type\":\"bytes\"}],\"name\":\"SetValidKeyset\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BROTLI_MESSAGE_HEADER_FLAG\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DAS_MESSAGE_HEADER_FLAG\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DATA_AUTHENTICATED_FLAG\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DATA_BLOB_HEADER_FLAG\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEADER_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TREE_DAS_MESSAGE_HEADER_FLAG\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ZERO_HEAVY_MESSAGE_HEADER_FLAG\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prevMessageCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMessageCount\",\"type\":\"uint256\"}],\"name\":\"addSequencerL2Batch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prevMessageCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMessageCount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"beforeDelayedAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"inboxSeqNum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseFeeL1\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"messageDataHash\",\"type\":\"bytes32\"}],\"internalType\":\"structMessages.Message\",\"name\":\"delayedMessage\",\"type\":\"tuple\"}],\"internalType\":\"structDelayProof\",\"name\":\"delayProof\",\"type\":\"tuple\"}],\"name\":\"addSequencerL2BatchDelayProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prevMessageCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMessageCount\",\"type\":\"uint256\"}],\"name\":\"addSequencerL2BatchFromBlobs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prevMessageCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMessageCount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"beforeDelayedAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"inboxSeqNum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseFeeL1\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"messageDataHash\",\"type\":\"bytes32\"}],\"internalType\":\"structMessages.Message\",\"name\":\"delayedMessage\",\"type\":\"tuple\"}],\"internalType\":\"structDelayProof\",\"name\":\"delayProof\",\"type\":\"tuple\"}],\"name\":\"addSequencerL2BatchFromBlobsDelayProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"addSequencerL2BatchFromOrigin\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prevMessageCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMessageCount\",\"type\":\"uint256\"}],\"name\":\"addSequencerL2BatchFromOrigin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prevMessageCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMessageCount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"beforeDelayedAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"inboxSeqNum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseFeeL1\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"messageDataHash\",\"type\":\"bytes32\"}],\"internalType\":\"structMessages.Message\",\"name\":\"delayedMessage\",\"type\":\"tuple\"}],\"internalType\":\"structDelayProof\",\"name\":\"delayProof\",\"type\":\"tuple\"}],\"name\":\"addSequencerL2BatchFromOriginDelayProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchPosterManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"buffer\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"bufferBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"prevBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"replenishRateInBasis\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"prevSequencedBlockNumber\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"dasKeySetInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isValidKeyset\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"creationBlock\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64[2]\",\"name\":\"l1BlockAndTime\",\"type\":\"uint64[2]\"},{\"internalType\":\"uint256\",\"name\":\"baseFeeL1\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"messageDataHash\",\"type\":\"bytes32\"}],\"name\":\"forceInclusion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"}],\"name\":\"forceInclusionDeadline\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"ksHash\",\"type\":\"bytes32\"}],\"name\":\"getKeysetCreationBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"inboxAccs\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"bridge_\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"delayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delaySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureSeconds\",\"type\":\"uint256\"}],\"internalType\":\"structISequencerInbox.MaxTimeVariation\",\"name\":\"maxTimeVariation_\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"replenishRateInBasis\",\"type\":\"uint64\"}],\"internalType\":\"structBufferConfig\",\"name\":\"bufferConfig_\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"ksHash\",\"type\":\"bytes32\"}],\"name\":\"invalidateKeysetHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isBatchPoster\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDelayBufferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isSequencer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isUsingFeeToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"ksHash\",\"type\":\"bytes32\"}],\"name\":\"isValidKeysetHash\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxDataSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxTimeVariation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"replenishRateInBasis\",\"type\":\"uint64\"}],\"internalType\":\"structBufferConfig\",\"name\":\"bufferConfig_\",\"type\":\"tuple\"}],\"name\":\"postUpgradeInit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reader4844\",\"outputs\":[{\"internalType\":\"contractIReader4844\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeDelayAfterFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollup\",\"outputs\":[{\"internalType\":\"contractIOwnable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newBatchPosterManager\",\"type\":\"address\"}],\"name\":\"setBatchPosterManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"replenishRateInBasis\",\"type\":\"uint64\"}],\"internalType\":\"structBufferConfig\",\"name\":\"bufferConfig_\",\"type\":\"tuple\"}],\"name\":\"setBufferConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBatchPoster_\",\"type\":\"bool\"}],\"name\":\"setIsBatchPoster\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isSequencer_\",\"type\":\"bool\"}],\"name\":\"setIsSequencer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"delayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delaySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureSeconds\",\"type\":\"uint256\"}],\"internalType\":\"structISequencerInbox.MaxTimeVariation\",\"name\":\"maxTimeVariation_\",\"type\":\"tuple\"}],\"name\":\"setMaxTimeVariation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"keysetBytes\",\"type\":\"bytes\"}],\"name\":\"setValidKeyset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalDelayedMessagesRead\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateRollupAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x610180604052306080526202000060a05246610100526200002b62000109602090811b62002d7717901c565b1515610120523480156200003e57600080fd5b50604051620053e8380380620053e88339810160408190526200006191620001bc565b60e084905261012051156200009f576001600160a01b0383161562000099576040516386657a5360e01b815260040160405180910390fd5b620000e8565b6001600160a01b038316620000e8576040516380fc2c0360e01b815260206004820152600a60248201526914995859195c8d0e0d0d60b21b604482015260640160405180910390fd5b6001600160a01b0390921660c052151561014052151561016052506200024f565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b1790529051600091829182916064916200014991906200021e565b600060405180830381855afa9150503d806000811462000186576040519150601f19603f3d011682016040523d82523d6000602084013e6200018b565b606091505b50915091508180156200019f575080516020145b9250505090565b80518015158114620001b757600080fd5b919050565b60008060008060808587031215620001d357600080fd5b845160208601519094506001600160a01b0381168114620001f357600080fd5b92506200020360408601620001a6565b91506200021360608601620001a6565b905092959194509250565b6000825160005b8181101562000241576020818601810151858301520162000225565b506000920191825250919050565b60805160a05160c05160e05161010051610120516101405161016051615084620003646000396000818161043701528181610b86015281816113550152818161184401528181611ed701528181612339015281816128c201528181612a5701528181612f6b01526131ad0152600081816105f401528181610a450152818161331b01526139950152600081816126a3015281816132b90152613ca1015260008181612194015261360c01526000818161070e01528181613f8a0152613fdf01526000818161058f01528181610ffd01528181611e8001528181613a970152613b720152600081816111dd0152818161151101528181611d75015261208a015260008181610893015261221301526150846000f3fe608060405234801561001057600080fd5b50600436106102f45760003560e01c80637fa3a40e11610191578063d1ce8da8116100e3578063e78cea9211610097578063edaafe2011610071578063edaafe2014610758578063f1981578146107e1578063f60a5091146107f457600080fd5b8063e78cea92146106f6578063e8eb1dc314610709578063ebea461d1461073057600080fd5b8063dd44e6e0116100c8578063dd44e6e014610690578063e0bc9729146106bc578063e5a358c8146106cf57600080fd5b8063d1ce8da81461066a578063d9dd67ab1461067d57600080fd5b806392d9f78211610145578063b31761f81161011f578063b31761f814610631578063cb23bcb514610644578063cc2a1a0c1461065757600080fd5b806392d9f782146105ef57806396cc5c7814610616578063a655d9371461061e57600080fd5b80638d910dde116101765780638d910dde1461058a5780638f111f3c146105c9578063917cf8ac146105dc57600080fd5b80637fa3a40e1461056e578063844208601461057757600080fd5b80633e5aa0821161024a5780636d46e987116101fe5780636f12b0c9116101d85780636f12b0c9146104e4578063715ea34b146104f757806371c3e6fe1461054b57600080fd5b80636d46e9871461049b5780636e620055146104be5780636e7df3e7146104d157600080fd5b806369cacded1161022f57806369cacded146104595780636ae71f121461046c5780636c8904501461047457600080fd5b80633e5aa0821461041f5780634b678a661461043257600080fd5b80631f956632116102ac57806327957a491161028657806327957a49146103dd5780632cbf74e5146103e55780632f3985a71461040c57600080fd5b80631f956632146103a45780631ff64790146103b7578063258f0495146103ca57600080fd5b80631637be48116102dd5780631637be481461035457806316af91a7146103875780631ad87e451461038f57600080fd5b806302c99275146102f957806306f130561461033e575b600080fd5b6103207f200000000000000000000000000000000000000000000000000000000000000081565b6040516001600160f81b031990911681526020015b60405180910390f35b6103466107ff565b604051908152602001610335565b6103776103623660046144ab565b60009081526008602052604090205460ff1690565b6040519015158152602001610335565b610320600081565b6103a261039d3660046145f8565b610889565b005b6103a26103b2366004614659565b610bb9565b6103a26103c5366004614692565b610ce5565b6103466103d83660046144ab565b610e7d565b610346602881565b6103207f500000000000000000000000000000000000000000000000000000000000000081565b6103a261041a3660046146af565b610eea565b6103a261042d3660046146cb565b610ffa565b6103777f000000000000000000000000000000000000000000000000000000000000000081565b6103a2610467366004614776565b6112e3565b6103a2611619565b6103207f080000000000000000000000000000000000000000000000000000000000000081565b6103776104a9366004614692565b60096020526000908152604090205460ff1681565b6103a26104cc366004614776565b6117f1565b6103a26104df366004614659565b6118a3565b6103a26104f2366004614804565b6119cf565b61052b6105053660046144ab565b60086020526000908152604090205460ff811690610100900467ffffffffffffffff1682565b60408051921515835267ffffffffffffffff909116602083015201610335565b610377610559366004614692565b60036020526000908152604090205460ff1681565b61034660005481565b6103a26105853660046144ab565b611a01565b6105b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610335565b6103a26105d736600461486f565b611b76565b6103a26105ea3660046148ec565b611e7d565b6103777f000000000000000000000000000000000000000000000000000000000000000081565b6103a2612191565b6103a261062c3660046146af565b612209565b6103a261063f366004614948565b6123c7565b6002546105b1906001600160a01b031681565b600b546105b1906001600160a01b031681565b6103a26106783660046149ae565b6124d6565b61034661068b3660046144ab565b612823565b6106a361069e3660046149f0565b6128b0565b60405167ffffffffffffffff9091168152602001610335565b6103a26106ca36600461486f565b612913565b6103207f400000000000000000000000000000000000000000000000000000000000000081565b6001546105b1906001600160a01b031681565b6103467f000000000000000000000000000000000000000000000000000000000000000081565b61073861299b565b604080519485526020850193909352918301526060820152608001610335565b600c54600d5461079e9167ffffffffffffffff8082169268010000000000000000808404831693600160801b8104841693600160c01b9091048116928082169290041686565b6040805167ffffffffffffffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c001610335565b6103a26107ef366004614a1c565b6129d4565b610320600160ff1b81565b600154604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa158015610860573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108849190614a84565b905090565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001546001600160a01b031615610989576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383166109c9576040517f1ad0f74300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000836001600160a01b031663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a25575060408051601f3d908101601f19168201909252610a2291810190614a9d565b60015b15610a40576001600160a01b03811615610a3e57600191505b505b8015157f0000000000000000000000000000000000000000000000000000000000000000151514610a9d576040517fc3e31f8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038616908117909155604080517fcb23bcb5000000000000000000000000000000000000000000000000000000008152905163cb23bcb5916004808201926020929091908290030181865afa158015610b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b409190614a9d565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055610b84610b7f36859003850185614948565b612e3d565b7f000000000000000000000000000000000000000000000000000000000000000015610bb357610bb382612f69565b50505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c309190614a9d565b6001600160a01b0316336001600160a01b031614158015610c5c5750600b546001600160a01b03163314155b15610c95576040517f660b3b4200000000000000000000000000000000000000000000000000000000815233600482015260240161093d565b6001600160a01b038216600090815260096020526040808220805460ff1916841515179055516004917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5c9190614a9d565b6001600160a01b0316336001600160a01b031614610e265760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de19190614a9d565b6040517f23295f0e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529116602482015260440161093d565b600b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556040516005907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b600081815260086020908152604080832081518083019092525460ff811615158252610100900467ffffffffffffffff16918101829052908203610ed65760405162f20c5d60e01b81526004810184905260240161093d565b6020015167ffffffffffffffff1692915050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f619190614a9d565b6001600160a01b0316336001600160a01b031614610fc25760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b610fcb81612f69565b6040516006907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b827f000000000000000000000000000000000000000000000000000000000000000060005a3360009081526003602052604090205490915060ff1661105257604051632dd9fc9760e01b815260040160405180910390fd5b61105b876131a9565b1561107957604051630e5da8fb60e01b815260040160405180910390fd5b611085888887876131f1565b6001600160a01b038316156112d95736600060206110a483601f614ad0565b6110ae9190614ae3565b90506102006110be600283614be9565b6110c89190614ae3565b6110d3826006614bf8565b6110dd9190614ad0565b6110e79084614ad0565b92503332146110f9576000915061122c565b6001600160a01b0384161561122c57836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561116757506040513d6000823e601f3d908101601f191682016040526111649190810190614c0f565b60015b1561122c5780511561122a576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d79190614a84565b905048817f000000000000000000000000000000000000000000000000000000000000000084516112089190614bf8565b6112129190614bf8565b61121c9190614ae3565b6112269086614ad0565b9450505b505b846001600160a01b031663e3db8a49335a6112479087614cb5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af11580156112b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d59190614cc8565b5050505b5050505050505050565b836000805a9050333214611323576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff1661135357604051632dd9fc9760e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061139157604051631192b39960e31b815260040160405180910390fd5b6113a9886113a436879003870187614ce5565b61334d565b6113b98b8b8b8b8a8a600161345a565b6001600160a01b038316156112d55736600060206113d883601f614ad0565b6113e29190614ae3565b90506102006113f2600283614be9565b6113fc9190614ae3565b611407826006614bf8565b6114119190614ad0565b61141b9084614ad0565b925033321461142d5760009150611560565b6001600160a01b0384161561156057836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561149b57506040513d6000823e601f3d908101601f191682016040526114989190810190614c0f565b60015b156115605780511561155e576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150b9190614a84565b905048817f0000000000000000000000000000000000000000000000000000000000000000845161153c9190614bf8565b6115469190614bf8565b6115509190614ae3565b61155a9086614ad0565b9450505b505b846001600160a01b031663e3db8a49335a61157b9087614cb5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af11580156115e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116099190614cc8565b5050505050505050505050505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561166c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116909190614a9d565b6001600160a01b0316336001600160a01b0316146116f15760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b600154604080517fcb23bcb500000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cb23bcb59160048083019260209291908290030181865afa158015611754573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117789190614a9d565b6002549091506001600160a01b038083169116036117c2576040517fd054909f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b836000805a3360009081526003602052604090205490915060ff1615801561182457506002546001600160a01b03163314155b1561184257604051632dd9fc9760e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061188057604051631192b39960e31b815260040160405180910390fd5b611893886113a436879003870187614ce5565b6113b98b8b8b8b8a8a600061345a565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191a9190614a9d565b6001600160a01b0316336001600160a01b0316141580156119465750600b546001600160a01b03163314155b1561197f576040517f660b3b4200000000000000000000000000000000000000000000000000000000815233600482015260240161093d565b6001600160a01b038216600090815260036020526040808220805460ff1916841515179055516001917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b6040517fc73b9d7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a789190614a9d565b6001600160a01b0316336001600160a01b031614611ad95760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b60008181526008602052604090205460ff16611b0a5760405162f20c5d60e01b81526004810182905260240161093d565b600081815260086020526040808220805460ff191690555182917f5cb4218b272fd214168ac43e90fb4d05d6c36f0b17ffb4c2dd07c234d744eb2a91a26040516003907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b826000805a9050333214611bb6576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff16611be657604051632dd9fc9760e01b815260040160405180910390fd5b611bef876131a9565b15611c0d57604051630e5da8fb60e01b815260040160405180910390fd5b611c1d8a8a8a8a8989600161345a565b6001600160a01b03831615611e71573660006020611c3c83601f614ad0565b611c469190614ae3565b9050610200611c56600283614be9565b611c609190614ae3565b611c6b826006614bf8565b611c759190614ad0565b611c7f9084614ad0565b9250333214611c915760009150611dc4565b6001600160a01b03841615611dc457836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa925050508015611cff57506040513d6000823e601f3d908101601f19168201604052611cfc9190810190614c0f565b60015b15611dc457805115611dc2576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6f9190614a84565b905048817f00000000000000000000000000000000000000000000000000000000000000008451611da09190614bf8565b611daa9190614bf8565b611db49190614ae3565b611dbe9086614ad0565b9450505b505b846001600160a01b031663e3db8a49335a611ddf9087614cb5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af1158015611e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6d9190614cc8565b5050505b50505050505050505050565b837f000000000000000000000000000000000000000000000000000000000000000060005a3360009081526003602052604090205490915060ff16611ed557604051632dd9fc9760e01b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000611f1357604051631192b39960e31b815260040160405180910390fd5b611f26886113a436879003870187614ce5565b611f32898988886131f1565b6001600160a01b03831615612186573660006020611f5183601f614ad0565b611f5b9190614ae3565b9050610200611f6b600283614be9565b611f759190614ae3565b611f80826006614bf8565b611f8a9190614ad0565b611f949084614ad0565b9250333214611fa657600091506120d9565b6001600160a01b038416156120d957836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561201457506040513d6000823e601f3d908101601f191682016040526120119190810190614c0f565b60015b156120d9578051156120d7576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120849190614a84565b905048817f000000000000000000000000000000000000000000000000000000000000000084516120b59190614bf8565b6120bf9190614bf8565b6120c99190614ae3565b6120d39086614ad0565b9450505b505b846001600160a01b031663e3db8a49335a6120f49087614cb5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af115801561215e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121829190614cc8565b5050505b505050505050505050565b467f0000000000000000000000000000000000000000000000000000000000000000036121ea576040517fa301bb0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7801000000000000000100000000000000010000000000000001600a55565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036122c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c0000000000000000000000000000000000000000606482015260840161093d565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b03821614612337576040517f23295f0e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038216602482015260440161093d565b7f000000000000000000000000000000000000000000000000000000000000000061237557604051631192b39960e31b815260040160405180910390fd5b600c5467ffffffffffffffff16156123b9576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123c283612f69565b505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561241a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243e9190614a9d565b6001600160a01b0316336001600160a01b03161461249f5760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b6124a881612e3d565b6040516000907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e908290a250565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254d9190614a9d565b6001600160a01b0316336001600160a01b0316146125ae5760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b600082826040516125c0929190614d93565b6040519081900381207ffe000000000000000000000000000000000000000000000000000000000000006020830152602182015260410160408051601f1981840301815291905280516020909101209050600160ff1b8118620100008310612654576040517fb3d1f41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526008602052604090205460ff16156126a0576040517ffa2fddda0000000000000000000000000000000000000000000000000000000081526004810182905260240161093d565b437f00000000000000000000000000000000000000000000000000000000000000001561272d5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272a9190614a84565b90505b6040805180820182526001815267ffffffffffffffff8381166020808401918252600087815260089091528490209251835491517fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000009092169015157fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff161761010091909216021790555182907fabca9b7986bc22ad0160eb0cb88ae75411eacfba4052af0b457a9335ef655722906127e89088908890614da3565b60405180910390a26040516002907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a25050505050565b6001546040517f16bf5579000000000000000000000000000000000000000000000000000000008152600481018390526000916001600160a01b0316906316bf557990602401602060405180830381865afa158015612886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128aa9190614a84565b92915050565b600a5460009067ffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000156129025760006128f3600c85613585565b90506128fe816135d4565b9150505b61290c8184614dd2565b9392505050565b826000805a3360009081526003602052604090205490915060ff1615801561294657506002546001600160a01b03163314155b1561296457604051632dd9fc9760e01b815260040160405180910390fd5b61296d876131a9565b1561298b57604051630e5da8fb60e01b815260040160405180910390fd5b611c1d8a8a8a8a8989600061345a565b6000806000806000806000806129af613604565b67ffffffffffffffff9384169b50918316995082169750169450505050505b90919293565b6000548611612a0f576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612a458684612a2360208901896149f0565b612a3360408a0160208b016149f0565b612a3e60018d614cb5565b898861367b565b600a5490915067ffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000015612ab657612a93612a8b60208801886149f0565b600c90613720565b600c54612aa99067ffffffffffffffff166135d4565b67ffffffffffffffff1690505b4381612ac560208901896149f0565b67ffffffffffffffff16612ad99190614ad0565b10612b10576040517fad3515d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001891115612b99576001546001600160a01b031663d5719dc2612b3760028c614cb5565b6040518263ffffffff1660e01b8152600401612b5591815260200190565b602060405180830381865afa158015612b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b969190614a84565b90505b60408051602080820184905281830186905282518083038401815260609092019092528051910120600180546001600160a01b03169063d5719dc290612bdf908d614cb5565b6040518263ffffffff1660e01b8152600401612bfd91815260200190565b602060405180830381865afa158015612c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c3e9190614a84565b14612c75576040517f13947fd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080612c818b6137a6565b9150915060008b90506000600160009054906101000a90046001600160a01b03166001600160a01b0316635fca4a166040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d039190614a84565b9050806000808080612d1889888388806137eb565b93509350935093508083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548d6002604051612d5b9493929190614e10565b60405180910390a4505050505050505050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491612de39190614ea9565b600060405180830381855afa9150503d8060008114612e1e576040519150601f19603f3d011682016040523d82523d6000602084013e612e23565b606091505b5091509150818015612e36575080516020145b9250505090565b805167ffffffffffffffff1080612e5f5750602081015167ffffffffffffffff105b80612e755750604081015167ffffffffffffffff105b80612e8b5750606081015167ffffffffffffffff105b15612ec2576040517f09cfba7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600a80546020840151604085015160609095015167ffffffffffffffff908116600160c01b0277ffffffffffffffffffffffffffffffffffffffffffffffff968216600160801b02969096166fffffffffffffffffffffffffffffffff92821668010000000000000000027fffffffffffffffffffffffffffffffff000000000000000000000000000000009094169190951617919091171691909117919091179055565b7f0000000000000000000000000000000000000000000000000000000000000000612fa757604051631192b39960e31b815260040160405180910390fd5b612fb0816139d4565b612fe6576040517fda1c8eb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c5467ffffffffffffffff16158061301257506020810151600c5467ffffffffffffffff9182169116115b1561303e576020810151600c805467ffffffffffffffff191667ffffffffffffffff9092169190911790555b8051600c5467ffffffffffffffff9182169116101561307b578051600c805467ffffffffffffffff191667ffffffffffffffff9092169190911790555b602081810151600c805484517fffffffffffffffff00000000000000000000000000000000ffffffffffffffff9091166801000000000000000067ffffffffffffffff948516027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1617600160801b91841691909102179055604080840151600d805467ffffffffffffffff1916919093161790915560005460015482517feca067ad000000000000000000000000000000000000000000000000000000008152925191936001600160a01b039091169263eca067ad92600480830193928290030181865afa158015613172573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131969190614a84565b036131a6576131a6600c43613720565b50565b60007f000000000000000000000000000000000000000000000000000000000000000080156131d9575060005482115b80156128aa57506131ea600c613a3c565b1592915050565b60008060006131ff86613a6f565b925092509250600080600080613219878b60008c8c6137eb565b93509350935093508a841415801561323357506000198b14155b15613274576040517fac7411c900000000000000000000000000000000000000000000000000000000815260048101859052602481018c905260440161093d565b80838c7f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548b60036040516132af9493929190614e10565b60405180910390a47f00000000000000000000000000000000000000000000000000000000000000001561330f576040517f86657a5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b333214801561333c57507f0000000000000000000000000000000000000000000000000000000000000000155b156112d5576112d587854888613c9e565b60005482111561345657613361600c613ee0565b1561345657600154600080546040517fd5719dc200000000000000000000000000000000000000000000000000000000815291926001600160a01b03169163d5719dc2916133b59160040190815260200190565b602060405180830381865afa1580156133d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133f69190614a84565b905061340b8183600001518460200151613f11565b613441576040517fc334542d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020820151604001516123c290600c90613720565b5050565b600080613468888888613f56565b9150915060008060008061348c868b89613483576000613485565b8d5b8c8c6137eb565b93509350935093508c84141580156134a657506000198d14155b156134e7576040517fac7411c900000000000000000000000000000000000000000000000000000000815260048101859052602481018e905260440161093d565b8083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548a8d61351c57600161351f565b60005b60405161352f9493929190614e10565b60405180910390a486611e6d57837ffe325ca1efe4c5c1062c981c3ee74b781debe4ea9440306a96d2a55759c66c208d8d60405161356e929190614da3565b60405180910390a250505050505050505050505050565b8154600183015460009161290c9167ffffffffffffffff600160c01b8304811692868216928282169268010000000000000000808304821693600160801b810483169391900482169116614164565b600a5460009067ffffffffffffffff9081169083161061360057600a5467ffffffffffffffff166128aa565b5090565b6000808080467f000000000000000000000000000000000000000000000000000000000000000014613641575060019250829150819050806129ce565b5050600a5467ffffffffffffffff808216935068010000000000000000820481169250600160801b8204811691600160c01b9004166129ce565b6040516001600160f81b031960f889901b1660208201526bffffffffffffffffffffffff19606088901b1660218201527fffffffffffffffff00000000000000000000000000000000000000000000000060c087811b8216603584015286901b16603d82015260458101849052606581018390526085810182905260009060a5016040516020818303038152906040528051906020012090505b979650505050505050565b61372a8282613585565b825467ffffffffffffffff928316600160c01b0277ffffffffffffffffffffffffffffffff000000000000000090911691831691909117178255600190910180544390921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b60408051608081018252600080825260208201819052918101829052606081018290526000806137d58561422b565b8151602090920191909120969095509350505050565b60008060008060005488101561382d576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663eca067ad6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138a49190614a84565b8811156138dd576040517f925f8bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f86598a56000000000000000000000000000000000000000000000000000000008152600481018b9052602481018a905260448101889052606481018790526001600160a01b03909116906386598a56906084016080604051808303816000875af1158015613956573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061397a9190614ec5565b60008c90559296509094509250905086158015906139b657507f0000000000000000000000000000000000000000000000000000000000000000155b156139c8576139c88985486000613c9e565b95509550955095915050565b805160009067ffffffffffffffff16158015906139fe5750602082015167ffffffffffffffff1615155b8015613a1a5750612710826040015167ffffffffffffffff1611155b80156128aa5750506020810151905167ffffffffffffffff9182169116111590565b805460009067ffffffffffffffff600160801b8204811691613a6791600160c01b9091041643614cb5565b111592915050565b60408051608081018252600080825260208201819052918101829052606081018290526000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa158015613af3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613b1b9190810190614c0f565b90508051600003613b58576040517f3cd27eb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080613b648761422b565b9150915060008351620200007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bf29190614a84565b613bfc9190614bf8565b613c069190614bf8565b60405190915083907f500000000000000000000000000000000000000000000000000000000000000090613c3e908790602001614efb565b60408051601f1981840301815290829052613c5d939291602001614f31565b604051602081830303815290604052805190602001208260004811613c83576000613c8d565b613c8d4884614ae3565b965096509650505050509193909250565b327f000000000000000000000000000000000000000000000000000000000000000015613d44576000606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d2a9190614a84565b9050613d364882614ae3565b613d409084614ad0565b9250505b67ffffffffffffffff821115613d86576040517f04d5501200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080514260208201526bffffffffffffffffffffffff19606084901b16918101919091526054810186905260748101859052609481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c084901b1660b482015260009060bc0160408051808303601f1901815290829052600154815160208301207f7a88b1070000000000000000000000000000000000000000000000000000000084526001600160a01b0386811660048601526024850191909152919350600092911690637a88b107906044016020604051808303816000875af1158015613e79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e9d9190614a84565b9050807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b83604051613ecf9190614f74565b60405180910390a250505050505050565b6000613eeb82613a3c565b15806128aa5750505467ffffffffffffffff680100000000000000008204811691161090565b6000613f4c83613f2084614303565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b9093149392505050565b60408051608081018252600080825260208201819052918101829052606081018290526000613f86856028614ad0565b90507f000000000000000000000000000000000000000000000000000000000000000081111561400b576040517f4634691b000000000000000000000000000000000000000000000000000000008152600481018290527f0000000000000000000000000000000000000000000000000000000000000000602482015260440161093d565b6000806140178661422b565b9092509050861561412a576140478888600081811061403857614038614dfa565b9050013560f81c60f81b614330565b61409f578787600081811061405e5761405e614dfa565b6040517f6b3333560000000000000000000000000000000000000000000000000000000081529201356001600160f81b03191660048301525060240161093d565b600160ff1b88886000816140b5576140b5614dfa565b6001600160f81b0319920135929092161615801591506140d6575060218710155b1561412a5760006140eb602160018a8c614fa7565b6140f491614fd1565b60008181526008602052604090205490915060ff166141285760405162f20c5d60e01b81526004810182905260240161093d565b505b81888860405160200161413f93929190614fef565b60408051601f1981840301815291905280516020909101209890975095505050505050565b60008088881161417557600061417f565b61417f8989614cb5565b9050600089871161419157600061419b565b61419b8a88614cb5565b90506127106141aa8584614bf8565b6141b49190614ae3565b6141be9089614ad0565b975060008682116141d05760006141da565b6141da8783614cb5565b9050828111156141e75750815b8089111561421c576141f9818a614cb5565b98508689111561421c578589116142105788614212565b855b9350505050613715565b50949998505050505050505050565b604080516080810182526000808252602082018190529181018290526060808201839052916142586143c3565b905060008160000151826020015183604001518460600151886040516020016142d895949392919060c095861b7fffffffffffffffff000000000000000000000000000000000000000000000000908116825294861b8516600882015292851b8416601084015290841b8316601883015290921b16602082015260280190565b604051602081830303815290604052905060288151146142fa576142fa615017565b94909350915050565b60006128aa826000015183602001518460400151856060015186608001518760a001518860c0015161367b565b60006001600160f81b03198216158061435657506001600160f81b03198216600160ff1b145b8061438a57506001600160f81b031982167f8800000000000000000000000000000000000000000000000000000000000000145b806128aa57506001600160f81b031982167f20000000000000000000000000000000000000000000000000000000000000001492915050565b604080516080810182526000808252602082018190529181018290526060810191909152604080516080810182526000808252602082018190529181018290526060810191909152600080600080614419613604565b93509350935093508167ffffffffffffffff1642111561444a5761443d824261502d565b67ffffffffffffffff1685525b6144548142614dd2565b67ffffffffffffffff9081166020870152841643111561448857614478844361502d565b67ffffffffffffffff1660408601525b6144928343614dd2565b67ffffffffffffffff1660608601525092949350505050565b6000602082840312156144bd57600080fd5b5035919050565b6001600160a01b03811681146131a657600080fd5b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614512576145126144d9565b60405290565b60405160e0810167ffffffffffffffff81118282101715614512576145126144d9565b604051601f8201601f1916810167ffffffffffffffff81118282101715614564576145646144d9565b604052919050565b803567ffffffffffffffff8116811461458457600080fd5b919050565b60006060828403121561459b57600080fd5b6040516060810181811067ffffffffffffffff821117156145be576145be6144d9565b6040529050806145cd8361456c565b81526145db6020840161456c565b60208201526145ec6040840161456c565b60408201525092915050565b600080600083850361010081121561460f57600080fd5b843561461a816144c4565b93506080601f198201121561462e57600080fd5b506020840191506146428560a08601614589565b90509250925092565b80151581146131a657600080fd5b6000806040838503121561466c57600080fd5b8235614677816144c4565b915060208301356146878161464b565b809150509250929050565b6000602082840312156146a457600080fd5b813561290c816144c4565b6000606082840312156146c157600080fd5b61290c8383614589565b600080600080600060a086880312156146e357600080fd5b853594506020860135935060408601356146fc816144c4565b94979396509394606081013594506080013592915050565b60008083601f84011261472657600080fd5b50813567ffffffffffffffff81111561473e57600080fd5b60208301915083602082850101111561475657600080fd5b9250929050565b6000610100828403121561477057600080fd5b50919050565b6000806000806000806000806101c0898b03121561479357600080fd5b88359750602089013567ffffffffffffffff8111156147b157600080fd5b6147bd8b828c01614714565b9098509650506040890135945060608901356147d8816144c4565b93506080890135925060a089013591506147f58a60c08b0161475d565b90509295985092959890939650565b60008060008060006080868803121561481c57600080fd5b85359450602086013567ffffffffffffffff81111561483a57600080fd5b61484688828901614714565b909550935050604086013591506060860135614861816144c4565b809150509295509295909350565b600080600080600080600060c0888a03121561488a57600080fd5b87359650602088013567ffffffffffffffff8111156148a857600080fd5b6148b48a828b01614714565b9097509550506040880135935060608801356148cf816144c4565b969995985093969295946080840135945060a09093013592915050565b6000806000806000806101a0878903121561490657600080fd5b8635955060208701359450604087013561491f816144c4565b9350606087013592506080870135915061493c8860a0890161475d565b90509295509295509295565b60006080828403121561495a57600080fd5b6040516080810181811067ffffffffffffffff8211171561497d5761497d6144d9565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600080602083850312156149c157600080fd5b823567ffffffffffffffff8111156149d857600080fd5b6149e485828601614714565b90969095509350505050565b600060208284031215614a0257600080fd5b61290c8261456c565b803560ff8116811461458457600080fd5b60008060008060008060e08789031215614a3557600080fd5b86359550614a4560208801614a0b565b94506080870188811115614a5857600080fd5b60408801945035925060a0870135614a6f816144c4565b8092505060c087013590509295509295509295565b600060208284031215614a9657600080fd5b5051919050565b600060208284031215614aaf57600080fd5b815161290c816144c4565b634e487b7160e01b600052601160045260246000fd5b808201808211156128aa576128aa614aba565b600082614b0057634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115614b40578160001904821115614b2657614b26614aba565b80851615614b3357918102915b93841c9390800290614b0a565b509250929050565b600082614b57575060016128aa565b81614b64575060006128aa565b8160018114614b7a5760028114614b8457614ba0565b60019150506128aa565b60ff841115614b9557614b95614aba565b50506001821b6128aa565b5060208310610133831016604e8410600b8410161715614bc3575081810a6128aa565b614bcd8383614b05565b8060001904821115614be157614be1614aba565b029392505050565b600061290c60ff841683614b48565b80820281158282048414176128aa576128aa614aba565b60006020808385031215614c2257600080fd5b825167ffffffffffffffff80821115614c3a57600080fd5b818501915085601f830112614c4e57600080fd5b815181811115614c6057614c606144d9565b8060051b9150614c7184830161453b565b8181529183018401918481019088841115614c8b57600080fd5b938501935b83851015614ca957845182529385019390850190614c90565b98975050505050505050565b818103818111156128aa576128aa614aba565b600060208284031215614cda57600080fd5b815161290c8161464b565b6000818303610100811215614cf957600080fd5b614d016144ef565b8335815260e0601f1983011215614d1757600080fd5b614d1f614518565b9150614d2d60208501614a0b565b82526040840135614d3d816144c4565b6020830152614d4e6060850161456c565b6040830152614d5f6080850161456c565b606083015260a0840135608083015260c084013560a083015260e084013560c0830152816020820152809250505092915050565b8183823760009101908152919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b67ffffffffffffffff818116838216019080821115614df357614df3614aba565b5092915050565b634e487b7160e01b600052603260045260246000fd5b600060e08201905085825284602083015267ffffffffffffffff8085511660408401528060208601511660608401528060408601511660808401528060608601511660a08401525060048310614e7657634e487b7160e01b600052602160045260246000fd5b8260c083015295945050505050565b60005b83811015614ea0578181015183820152602001614e88565b50506000910152565b60008251614ebb818460208701614e85565b9190910192915050565b60008060008060808587031215614edb57600080fd5b505082516020840151604085015160609095015191969095509092509050565b815160009082906020808601845b83811015614f2557815185529382019390820190600101614f09565b50929695505050505050565b60008451614f43818460208901614e85565b6001600160f81b031985169083019081528351614f67816001840160208801614e85565b0160010195945050505050565b6020815260008251806020840152614f93816040850160208701614e85565b601f01601f19169190910160400192915050565b60008085851115614fb757600080fd5b83861115614fc457600080fd5b5050820193919092039150565b803560208310156128aa57600019602084900360031b1b1692915050565b60008451615001818460208901614e85565b8201838582376000930192835250909392505050565b634e487b7160e01b600052600160045260246000fd5b67ffffffffffffffff828116828216039080821115614df357614df3614aba56fea2646970667358221220799a595cf250405ec8572a95a00a8ecde25414e30e5358a60d4363482527aa9064736f6c63430008110033", + Bin: "0x610180604052306080526202000060a05246610100526200002b62000109602090811b62002d7717901c565b1515610120523480156200003e57600080fd5b50604051620053e8380380620053e88339810160408190526200006191620001bc565b60e084905261012051156200009f576001600160a01b0383161562000099576040516386657a5360e01b815260040160405180910390fd5b620000e8565b6001600160a01b038316620000e8576040516380fc2c0360e01b815260206004820152600a60248201526914995859195c8d0e0d0d60b21b604482015260640160405180910390fd5b6001600160a01b0390921660c052151561014052151561016052506200024f565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b1790529051600091829182916064916200014991906200021e565b600060405180830381855afa9150503d806000811462000186576040519150601f19603f3d011682016040523d82523d6000602084013e6200018b565b606091505b50915091508180156200019f575080516020145b9250505090565b80518015158114620001b757600080fd5b919050565b60008060008060808587031215620001d357600080fd5b845160208601519094506001600160a01b0381168114620001f357600080fd5b92506200020360408601620001a6565b91506200021360608601620001a6565b905092959194509250565b6000825160005b8181101562000241576020818601810151858301520162000225565b506000920191825250919050565b60805160a05160c05160e05161010051610120516101405161016051615084620003646000396000818161043701528181610b86015281816113550152818161184401528181611ed701528181612339015281816128c201528181612a5701528181612f6b01526131ad0152600081816105f401528181610a450152818161331b01526139950152600081816126a3015281816132b90152613ca1015260008181612194015261360c01526000818161070e01528181613f8a0152613fdf01526000818161058f01528181610ffd01528181611e8001528181613a970152613b720152600081816111dd0152818161151101528181611d75015261208a015260008181610893015261221301526150846000f3fe608060405234801561001057600080fd5b50600436106102f45760003560e01c80637fa3a40e11610191578063d1ce8da8116100e3578063e78cea9211610097578063edaafe2011610071578063edaafe2014610758578063f1981578146107e1578063f60a5091146107f457600080fd5b8063e78cea92146106f6578063e8eb1dc314610709578063ebea461d1461073057600080fd5b8063dd44e6e0116100c8578063dd44e6e014610690578063e0bc9729146106bc578063e5a358c8146106cf57600080fd5b8063d1ce8da81461066a578063d9dd67ab1461067d57600080fd5b806392d9f78211610145578063b31761f81161011f578063b31761f814610631578063cb23bcb514610644578063cc2a1a0c1461065757600080fd5b806392d9f782146105ef57806396cc5c7814610616578063a655d9371461061e57600080fd5b80638d910dde116101765780638d910dde1461058a5780638f111f3c146105c9578063917cf8ac146105dc57600080fd5b80637fa3a40e1461056e578063844208601461057757600080fd5b80633e5aa0821161024a5780636d46e987116101fe5780636f12b0c9116101d85780636f12b0c9146104e4578063715ea34b146104f757806371c3e6fe1461054b57600080fd5b80636d46e9871461049b5780636e620055146104be5780636e7df3e7146104d157600080fd5b806369cacded1161022f57806369cacded146104595780636ae71f121461046c5780636c8904501461047457600080fd5b80633e5aa0821461041f5780634b678a661461043257600080fd5b80631f956632116102ac57806327957a491161028657806327957a49146103dd5780632cbf74e5146103e55780632f3985a71461040c57600080fd5b80631f956632146103a45780631ff64790146103b7578063258f0495146103ca57600080fd5b80631637be48116102dd5780631637be481461035457806316af91a7146103875780631ad87e451461038f57600080fd5b806302c99275146102f957806306f130561461033e575b600080fd5b6103207f200000000000000000000000000000000000000000000000000000000000000081565b6040516001600160f81b031990911681526020015b60405180910390f35b6103466107ff565b604051908152602001610335565b6103776103623660046144ab565b60009081526008602052604090205460ff1690565b6040519015158152602001610335565b610320600081565b6103a261039d3660046145f8565b610889565b005b6103a26103b2366004614659565b610bb9565b6103a26103c5366004614692565b610ce5565b6103466103d83660046144ab565b610e7d565b610346602881565b6103207f500000000000000000000000000000000000000000000000000000000000000081565b6103a261041a3660046146af565b610eea565b6103a261042d3660046146cb565b610ffa565b6103777f000000000000000000000000000000000000000000000000000000000000000081565b6103a2610467366004614776565b6112e3565b6103a2611619565b6103207f080000000000000000000000000000000000000000000000000000000000000081565b6103776104a9366004614692565b60096020526000908152604090205460ff1681565b6103a26104cc366004614776565b6117f1565b6103a26104df366004614659565b6118a3565b6103a26104f2366004614804565b6119cf565b61052b6105053660046144ab565b60086020526000908152604090205460ff811690610100900467ffffffffffffffff1682565b60408051921515835267ffffffffffffffff909116602083015201610335565b610377610559366004614692565b60036020526000908152604090205460ff1681565b61034660005481565b6103a26105853660046144ab565b611a01565b6105b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610335565b6103a26105d736600461486f565b611b76565b6103a26105ea3660046148ec565b611e7d565b6103777f000000000000000000000000000000000000000000000000000000000000000081565b6103a2612191565b6103a261062c3660046146af565b612209565b6103a261063f366004614948565b6123c7565b6002546105b1906001600160a01b031681565b600b546105b1906001600160a01b031681565b6103a26106783660046149ae565b6124d6565b61034661068b3660046144ab565b612823565b6106a361069e3660046149f0565b6128b0565b60405167ffffffffffffffff9091168152602001610335565b6103a26106ca36600461486f565b612913565b6103207f400000000000000000000000000000000000000000000000000000000000000081565b6001546105b1906001600160a01b031681565b6103467f000000000000000000000000000000000000000000000000000000000000000081565b61073861299b565b604080519485526020850193909352918301526060820152608001610335565b600c54600d5461079e9167ffffffffffffffff8082169268010000000000000000808404831693600160801b8104841693600160c01b9091048116928082169290041686565b6040805167ffffffffffffffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c001610335565b6103a26107ef366004614a1c565b6129d4565b610320600160ff1b81565b600154604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa158015610860573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108849190614a84565b905090565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001546001600160a01b031615610989576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383166109c9576040517f1ad0f74300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000836001600160a01b031663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a25575060408051601f3d908101601f19168201909252610a2291810190614a9d565b60015b15610a40576001600160a01b03811615610a3e57600191505b505b8015157f0000000000000000000000000000000000000000000000000000000000000000151514610a9d576040517fc3e31f8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038616908117909155604080517fcb23bcb5000000000000000000000000000000000000000000000000000000008152905163cb23bcb5916004808201926020929091908290030181865afa158015610b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b409190614a9d565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055610b84610b7f36859003850185614948565b612e3d565b7f000000000000000000000000000000000000000000000000000000000000000015610bb357610bb382612f69565b50505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c309190614a9d565b6001600160a01b0316336001600160a01b031614158015610c5c5750600b546001600160a01b03163314155b15610c95576040517f660b3b4200000000000000000000000000000000000000000000000000000000815233600482015260240161093d565b6001600160a01b038216600090815260096020526040808220805460ff1916841515179055516004917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5c9190614a9d565b6001600160a01b0316336001600160a01b031614610e265760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de19190614a9d565b6040517f23295f0e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529116602482015260440161093d565b600b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556040516005907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b600081815260086020908152604080832081518083019092525460ff811615158252610100900467ffffffffffffffff16918101829052908203610ed65760405162f20c5d60e01b81526004810184905260240161093d565b6020015167ffffffffffffffff1692915050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f619190614a9d565b6001600160a01b0316336001600160a01b031614610fc25760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b610fcb81612f69565b6040516006907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b827f000000000000000000000000000000000000000000000000000000000000000060005a3360009081526003602052604090205490915060ff1661105257604051632dd9fc9760e01b815260040160405180910390fd5b61105b876131a9565b1561107957604051630e5da8fb60e01b815260040160405180910390fd5b611085888887876131f1565b6001600160a01b038316156112d95736600060206110a483601f614ad0565b6110ae9190614ae3565b90506102006110be600283614be9565b6110c89190614ae3565b6110d3826006614bf8565b6110dd9190614ad0565b6110e79084614ad0565b92503332146110f9576000915061122c565b6001600160a01b0384161561122c57836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561116757506040513d6000823e601f3d908101601f191682016040526111649190810190614c0f565b60015b1561122c5780511561122a576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d79190614a84565b905048817f000000000000000000000000000000000000000000000000000000000000000084516112089190614bf8565b6112129190614bf8565b61121c9190614ae3565b6112269086614ad0565b9450505b505b846001600160a01b031663e3db8a49335a6112479087614cb5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af11580156112b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d59190614cc8565b5050505b5050505050505050565b836000805a9050333214611323576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff1661135357604051632dd9fc9760e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061139157604051631192b39960e31b815260040160405180910390fd5b6113a9886113a436879003870187614ce5565b61334d565b6113b98b8b8b8b8a8a600161345a565b6001600160a01b038316156112d55736600060206113d883601f614ad0565b6113e29190614ae3565b90506102006113f2600283614be9565b6113fc9190614ae3565b611407826006614bf8565b6114119190614ad0565b61141b9084614ad0565b925033321461142d5760009150611560565b6001600160a01b0384161561156057836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561149b57506040513d6000823e601f3d908101601f191682016040526114989190810190614c0f565b60015b156115605780511561155e576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150b9190614a84565b905048817f0000000000000000000000000000000000000000000000000000000000000000845161153c9190614bf8565b6115469190614bf8565b6115509190614ae3565b61155a9086614ad0565b9450505b505b846001600160a01b031663e3db8a49335a61157b9087614cb5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af11580156115e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116099190614cc8565b5050505050505050505050505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561166c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116909190614a9d565b6001600160a01b0316336001600160a01b0316146116f15760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b600154604080517fcb23bcb500000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cb23bcb59160048083019260209291908290030181865afa158015611754573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117789190614a9d565b6002549091506001600160a01b038083169116036117c2576040517fd054909f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b836000805a3360009081526003602052604090205490915060ff1615801561182457506002546001600160a01b03163314155b1561184257604051632dd9fc9760e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061188057604051631192b39960e31b815260040160405180910390fd5b611893886113a436879003870187614ce5565b6113b98b8b8b8b8a8a600061345a565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191a9190614a9d565b6001600160a01b0316336001600160a01b0316141580156119465750600b546001600160a01b03163314155b1561197f576040517f660b3b4200000000000000000000000000000000000000000000000000000000815233600482015260240161093d565b6001600160a01b038216600090815260036020526040808220805460ff1916841515179055516001917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b6040517fc73b9d7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a789190614a9d565b6001600160a01b0316336001600160a01b031614611ad95760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b60008181526008602052604090205460ff16611b0a5760405162f20c5d60e01b81526004810182905260240161093d565b600081815260086020526040808220805460ff191690555182917f5cb4218b272fd214168ac43e90fb4d05d6c36f0b17ffb4c2dd07c234d744eb2a91a26040516003907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b826000805a9050333214611bb6576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff16611be657604051632dd9fc9760e01b815260040160405180910390fd5b611bef876131a9565b15611c0d57604051630e5da8fb60e01b815260040160405180910390fd5b611c1d8a8a8a8a8989600161345a565b6001600160a01b03831615611e71573660006020611c3c83601f614ad0565b611c469190614ae3565b9050610200611c56600283614be9565b611c609190614ae3565b611c6b826006614bf8565b611c759190614ad0565b611c7f9084614ad0565b9250333214611c915760009150611dc4565b6001600160a01b03841615611dc457836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa925050508015611cff57506040513d6000823e601f3d908101601f19168201604052611cfc9190810190614c0f565b60015b15611dc457805115611dc2576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6f9190614a84565b905048817f00000000000000000000000000000000000000000000000000000000000000008451611da09190614bf8565b611daa9190614bf8565b611db49190614ae3565b611dbe9086614ad0565b9450505b505b846001600160a01b031663e3db8a49335a611ddf9087614cb5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af1158015611e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6d9190614cc8565b5050505b50505050505050505050565b837f000000000000000000000000000000000000000000000000000000000000000060005a3360009081526003602052604090205490915060ff16611ed557604051632dd9fc9760e01b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000611f1357604051631192b39960e31b815260040160405180910390fd5b611f26886113a436879003870187614ce5565b611f32898988886131f1565b6001600160a01b03831615612186573660006020611f5183601f614ad0565b611f5b9190614ae3565b9050610200611f6b600283614be9565b611f759190614ae3565b611f80826006614bf8565b611f8a9190614ad0565b611f949084614ad0565b9250333214611fa657600091506120d9565b6001600160a01b038416156120d957836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561201457506040513d6000823e601f3d908101601f191682016040526120119190810190614c0f565b60015b156120d9578051156120d7576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120849190614a84565b905048817f000000000000000000000000000000000000000000000000000000000000000084516120b59190614bf8565b6120bf9190614bf8565b6120c99190614ae3565b6120d39086614ad0565b9450505b505b846001600160a01b031663e3db8a49335a6120f49087614cb5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af115801561215e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121829190614cc8565b5050505b505050505050505050565b467f0000000000000000000000000000000000000000000000000000000000000000036121ea576040517fa301bb0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7801000000000000000100000000000000010000000000000001600a55565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036122c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c0000000000000000000000000000000000000000606482015260840161093d565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b03821614612337576040517f23295f0e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038216602482015260440161093d565b7f000000000000000000000000000000000000000000000000000000000000000061237557604051631192b39960e31b815260040160405180910390fd5b600c5467ffffffffffffffff16156123b9576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123c283612f69565b505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561241a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243e9190614a9d565b6001600160a01b0316336001600160a01b03161461249f5760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b6124a881612e3d565b6040516000907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e908290a250565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254d9190614a9d565b6001600160a01b0316336001600160a01b0316146125ae5760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b600082826040516125c0929190614d93565b6040519081900381207ffe000000000000000000000000000000000000000000000000000000000000006020830152602182015260410160408051601f1981840301815291905280516020909101209050600160ff1b8118620100008310612654576040517fb3d1f41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526008602052604090205460ff16156126a0576040517ffa2fddda0000000000000000000000000000000000000000000000000000000081526004810182905260240161093d565b437f00000000000000000000000000000000000000000000000000000000000000001561272d5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272a9190614a84565b90505b6040805180820182526001815267ffffffffffffffff8381166020808401918252600087815260089091528490209251835491517fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000009092169015157fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff161761010091909216021790555182907fabca9b7986bc22ad0160eb0cb88ae75411eacfba4052af0b457a9335ef655722906127e89088908890614da3565b60405180910390a26040516002907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a25050505050565b6001546040517f16bf5579000000000000000000000000000000000000000000000000000000008152600481018390526000916001600160a01b0316906316bf557990602401602060405180830381865afa158015612886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128aa9190614a84565b92915050565b600a5460009067ffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000156129025760006128f3600c85613585565b90506128fe816135d4565b9150505b61290c8184614dd2565b9392505050565b826000805a3360009081526003602052604090205490915060ff1615801561294657506002546001600160a01b03163314155b1561296457604051632dd9fc9760e01b815260040160405180910390fd5b61296d876131a9565b1561298b57604051630e5da8fb60e01b815260040160405180910390fd5b611c1d8a8a8a8a8989600061345a565b6000806000806000806000806129af613604565b67ffffffffffffffff9384169b50918316995082169750169450505050505b90919293565b6000548611612a0f576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612a458684612a2360208901896149f0565b612a3360408a0160208b016149f0565b612a3e60018d614cb5565b898861367b565b600a5490915067ffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000015612ab657612a93612a8b60208801886149f0565b600c90613720565b600c54612aa99067ffffffffffffffff166135d4565b67ffffffffffffffff1690505b4381612ac560208901896149f0565b67ffffffffffffffff16612ad99190614ad0565b10612b10576040517fad3515d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001891115612b99576001546001600160a01b031663d5719dc2612b3760028c614cb5565b6040518263ffffffff1660e01b8152600401612b5591815260200190565b602060405180830381865afa158015612b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b969190614a84565b90505b60408051602080820184905281830186905282518083038401815260609092019092528051910120600180546001600160a01b03169063d5719dc290612bdf908d614cb5565b6040518263ffffffff1660e01b8152600401612bfd91815260200190565b602060405180830381865afa158015612c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c3e9190614a84565b14612c75576040517f13947fd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080612c818b6137a6565b9150915060008b90506000600160009054906101000a90046001600160a01b03166001600160a01b0316635fca4a166040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d039190614a84565b9050806000808080612d1889888388806137eb565b93509350935093508083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548d6002604051612d5b9493929190614e10565b60405180910390a4505050505050505050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491612de39190614ea9565b600060405180830381855afa9150503d8060008114612e1e576040519150601f19603f3d011682016040523d82523d6000602084013e612e23565b606091505b5091509150818015612e36575080516020145b9250505090565b805167ffffffffffffffff1080612e5f5750602081015167ffffffffffffffff105b80612e755750604081015167ffffffffffffffff105b80612e8b5750606081015167ffffffffffffffff105b15612ec2576040517f09cfba7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600a80546020840151604085015160609095015167ffffffffffffffff908116600160c01b0277ffffffffffffffffffffffffffffffffffffffffffffffff968216600160801b02969096166fffffffffffffffffffffffffffffffff92821668010000000000000000027fffffffffffffffffffffffffffffffff000000000000000000000000000000009094169190951617919091171691909117919091179055565b7f0000000000000000000000000000000000000000000000000000000000000000612fa757604051631192b39960e31b815260040160405180910390fd5b612fb0816139d4565b612fe6576040517fda1c8eb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c5467ffffffffffffffff16158061301257506020810151600c5467ffffffffffffffff9182169116115b1561303e576020810151600c805467ffffffffffffffff191667ffffffffffffffff9092169190911790555b8051600c5467ffffffffffffffff9182169116101561307b578051600c805467ffffffffffffffff191667ffffffffffffffff9092169190911790555b602081810151600c805484517fffffffffffffffff00000000000000000000000000000000ffffffffffffffff9091166801000000000000000067ffffffffffffffff948516027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1617600160801b91841691909102179055604080840151600d805467ffffffffffffffff1916919093161790915560005460015482517feca067ad000000000000000000000000000000000000000000000000000000008152925191936001600160a01b039091169263eca067ad92600480830193928290030181865afa158015613172573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131969190614a84565b036131a6576131a6600c43613720565b50565b60007f000000000000000000000000000000000000000000000000000000000000000080156131d9575060005482115b80156128aa57506131ea600c613a3c565b1592915050565b60008060006131ff86613a6f565b925092509250600080600080613219878b60008c8c6137eb565b93509350935093508a841415801561323357506000198b14155b15613274576040517fac7411c900000000000000000000000000000000000000000000000000000000815260048101859052602481018c905260440161093d565b80838c7f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548b60036040516132af9493929190614e10565b60405180910390a47f00000000000000000000000000000000000000000000000000000000000000001561330f576040517f86657a5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b333214801561333c57507f0000000000000000000000000000000000000000000000000000000000000000155b156112d5576112d587854888613c9e565b60005482111561345657613361600c613ee0565b1561345657600154600080546040517fd5719dc200000000000000000000000000000000000000000000000000000000815291926001600160a01b03169163d5719dc2916133b59160040190815260200190565b602060405180830381865afa1580156133d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133f69190614a84565b905061340b8183600001518460200151613f11565b613441576040517fc334542d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020820151604001516123c290600c90613720565b5050565b600080613468888888613f56565b9150915060008060008061348c868b89613483576000613485565b8d5b8c8c6137eb565b93509350935093508c84141580156134a657506000198d14155b156134e7576040517fac7411c900000000000000000000000000000000000000000000000000000000815260048101859052602481018e905260440161093d565b8083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548a8d61351c57600161351f565b60005b60405161352f9493929190614e10565b60405180910390a486611e6d57837ffe325ca1efe4c5c1062c981c3ee74b781debe4ea9440306a96d2a55759c66c208d8d60405161356e929190614da3565b60405180910390a250505050505050505050505050565b8154600183015460009161290c9167ffffffffffffffff600160c01b8304811692868216928282169268010000000000000000808304821693600160801b810483169391900482169116614164565b600a5460009067ffffffffffffffff9081169083161061360057600a5467ffffffffffffffff166128aa565b5090565b6000808080467f000000000000000000000000000000000000000000000000000000000000000014613641575060019250829150819050806129ce565b5050600a5467ffffffffffffffff808216935068010000000000000000820481169250600160801b8204811691600160c01b9004166129ce565b6040516001600160f81b031960f889901b1660208201526bffffffffffffffffffffffff19606088901b1660218201527fffffffffffffffff00000000000000000000000000000000000000000000000060c087811b8216603584015286901b16603d82015260458101849052606581018390526085810182905260009060a5016040516020818303038152906040528051906020012090505b979650505050505050565b61372a8282613585565b825467ffffffffffffffff928316600160c01b0277ffffffffffffffffffffffffffffffff000000000000000090911691831691909117178255600190910180544390921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b60408051608081018252600080825260208201819052918101829052606081018290526000806137d58561422b565b8151602090920191909120969095509350505050565b60008060008060005488101561382d576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663eca067ad6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138a49190614a84565b8811156138dd576040517f925f8bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f86598a56000000000000000000000000000000000000000000000000000000008152600481018b9052602481018a905260448101889052606481018790526001600160a01b03909116906386598a56906084016080604051808303816000875af1158015613956573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061397a9190614ec5565b60008c90559296509094509250905086158015906139b657507f0000000000000000000000000000000000000000000000000000000000000000155b156139c8576139c88985486000613c9e565b95509550955095915050565b805160009067ffffffffffffffff16158015906139fe5750602082015167ffffffffffffffff1615155b8015613a1a5750612710826040015167ffffffffffffffff1611155b80156128aa5750506020810151905167ffffffffffffffff9182169116111590565b805460009067ffffffffffffffff600160801b8204811691613a6791600160c01b9091041643614cb5565b111592915050565b60408051608081018252600080825260208201819052918101829052606081018290526000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa158015613af3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613b1b9190810190614c0f565b90508051600003613b58576040517f3cd27eb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080613b648761422b565b9150915060008351620200007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bf29190614a84565b613bfc9190614bf8565b613c069190614bf8565b60405190915083907f500000000000000000000000000000000000000000000000000000000000000090613c3e908790602001614efb565b60408051601f1981840301815290829052613c5d939291602001614f31565b604051602081830303815290604052805190602001208260004811613c83576000613c8d565b613c8d4884614ae3565b965096509650505050509193909250565b327f000000000000000000000000000000000000000000000000000000000000000015613d44576000606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d2a9190614a84565b9050613d364882614ae3565b613d409084614ad0565b9250505b67ffffffffffffffff821115613d86576040517f04d5501200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080514260208201526bffffffffffffffffffffffff19606084901b16918101919091526054810186905260748101859052609481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c084901b1660b482015260009060bc0160408051808303601f1901815290829052600154815160208301207f7a88b1070000000000000000000000000000000000000000000000000000000084526001600160a01b0386811660048601526024850191909152919350600092911690637a88b107906044016020604051808303816000875af1158015613e79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e9d9190614a84565b9050807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b83604051613ecf9190614f74565b60405180910390a250505050505050565b6000613eeb82613a3c565b15806128aa5750505467ffffffffffffffff680100000000000000008204811691161090565b6000613f4c83613f2084614303565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b9093149392505050565b60408051608081018252600080825260208201819052918101829052606081018290526000613f86856028614ad0565b90507f000000000000000000000000000000000000000000000000000000000000000081111561400b576040517f4634691b000000000000000000000000000000000000000000000000000000008152600481018290527f0000000000000000000000000000000000000000000000000000000000000000602482015260440161093d565b6000806140178661422b565b9092509050861561412a576140478888600081811061403857614038614dfa565b9050013560f81c60f81b614330565b61409f578787600081811061405e5761405e614dfa565b6040517f6b3333560000000000000000000000000000000000000000000000000000000081529201356001600160f81b03191660048301525060240161093d565b600160ff1b88886000816140b5576140b5614dfa565b6001600160f81b0319920135929092161615801591506140d6575060218710155b1561412a5760006140eb602160018a8c614fa7565b6140f491614fd1565b60008181526008602052604090205490915060ff166141285760405162f20c5d60e01b81526004810182905260240161093d565b505b81888860405160200161413f93929190614fef565b60408051601f1981840301815291905280516020909101209890975095505050505050565b60008088881161417557600061417f565b61417f8989614cb5565b9050600089871161419157600061419b565b61419b8a88614cb5565b90506127106141aa8584614bf8565b6141b49190614ae3565b6141be9089614ad0565b975060008682116141d05760006141da565b6141da8783614cb5565b9050828111156141e75750815b8089111561421c576141f9818a614cb5565b98508689111561421c578589116142105788614212565b855b9350505050613715565b50949998505050505050505050565b604080516080810182526000808252602082018190529181018290526060808201839052916142586143c3565b905060008160000151826020015183604001518460600151886040516020016142d895949392919060c095861b7fffffffffffffffff000000000000000000000000000000000000000000000000908116825294861b8516600882015292851b8416601084015290841b8316601883015290921b16602082015260280190565b604051602081830303815290604052905060288151146142fa576142fa615017565b94909350915050565b60006128aa826000015183602001518460400151856060015186608001518760a001518860c0015161367b565b60006001600160f81b03198216158061435657506001600160f81b03198216600160ff1b145b8061438a57506001600160f81b031982167f8800000000000000000000000000000000000000000000000000000000000000145b806128aa57506001600160f81b031982167f20000000000000000000000000000000000000000000000000000000000000001492915050565b604080516080810182526000808252602082018190529181018290526060810191909152604080516080810182526000808252602082018190529181018290526060810191909152600080600080614419613604565b93509350935093508167ffffffffffffffff1642111561444a5761443d824261502d565b67ffffffffffffffff1685525b6144548142614dd2565b67ffffffffffffffff9081166020870152841643111561448857614478844361502d565b67ffffffffffffffff1660408601525b6144928343614dd2565b67ffffffffffffffff1660608601525092949350505050565b6000602082840312156144bd57600080fd5b5035919050565b6001600160a01b03811681146131a657600080fd5b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614512576145126144d9565b60405290565b60405160e0810167ffffffffffffffff81118282101715614512576145126144d9565b604051601f8201601f1916810167ffffffffffffffff81118282101715614564576145646144d9565b604052919050565b803567ffffffffffffffff8116811461458457600080fd5b919050565b60006060828403121561459b57600080fd5b6040516060810181811067ffffffffffffffff821117156145be576145be6144d9565b6040529050806145cd8361456c565b81526145db6020840161456c565b60208201526145ec6040840161456c565b60408201525092915050565b600080600083850361010081121561460f57600080fd5b843561461a816144c4565b93506080601f198201121561462e57600080fd5b506020840191506146428560a08601614589565b90509250925092565b80151581146131a657600080fd5b6000806040838503121561466c57600080fd5b8235614677816144c4565b915060208301356146878161464b565b809150509250929050565b6000602082840312156146a457600080fd5b813561290c816144c4565b6000606082840312156146c157600080fd5b61290c8383614589565b600080600080600060a086880312156146e357600080fd5b853594506020860135935060408601356146fc816144c4565b94979396509394606081013594506080013592915050565b60008083601f84011261472657600080fd5b50813567ffffffffffffffff81111561473e57600080fd5b60208301915083602082850101111561475657600080fd5b9250929050565b6000610100828403121561477057600080fd5b50919050565b6000806000806000806000806101c0898b03121561479357600080fd5b88359750602089013567ffffffffffffffff8111156147b157600080fd5b6147bd8b828c01614714565b9098509650506040890135945060608901356147d8816144c4565b93506080890135925060a089013591506147f58a60c08b0161475d565b90509295985092959890939650565b60008060008060006080868803121561481c57600080fd5b85359450602086013567ffffffffffffffff81111561483a57600080fd5b61484688828901614714565b909550935050604086013591506060860135614861816144c4565b809150509295509295909350565b600080600080600080600060c0888a03121561488a57600080fd5b87359650602088013567ffffffffffffffff8111156148a857600080fd5b6148b48a828b01614714565b9097509550506040880135935060608801356148cf816144c4565b969995985093969295946080840135945060a09093013592915050565b6000806000806000806101a0878903121561490657600080fd5b8635955060208701359450604087013561491f816144c4565b9350606087013592506080870135915061493c8860a0890161475d565b90509295509295509295565b60006080828403121561495a57600080fd5b6040516080810181811067ffffffffffffffff8211171561497d5761497d6144d9565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600080602083850312156149c157600080fd5b823567ffffffffffffffff8111156149d857600080fd5b6149e485828601614714565b90969095509350505050565b600060208284031215614a0257600080fd5b61290c8261456c565b803560ff8116811461458457600080fd5b60008060008060008060e08789031215614a3557600080fd5b86359550614a4560208801614a0b565b94506080870188811115614a5857600080fd5b60408801945035925060a0870135614a6f816144c4565b8092505060c087013590509295509295509295565b600060208284031215614a9657600080fd5b5051919050565b600060208284031215614aaf57600080fd5b815161290c816144c4565b634e487b7160e01b600052601160045260246000fd5b808201808211156128aa576128aa614aba565b600082614b0057634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115614b40578160001904821115614b2657614b26614aba565b80851615614b3357918102915b93841c9390800290614b0a565b509250929050565b600082614b57575060016128aa565b81614b64575060006128aa565b8160018114614b7a5760028114614b8457614ba0565b60019150506128aa565b60ff841115614b9557614b95614aba565b50506001821b6128aa565b5060208310610133831016604e8410600b8410161715614bc3575081810a6128aa565b614bcd8383614b05565b8060001904821115614be157614be1614aba565b029392505050565b600061290c60ff841683614b48565b80820281158282048414176128aa576128aa614aba565b60006020808385031215614c2257600080fd5b825167ffffffffffffffff80821115614c3a57600080fd5b818501915085601f830112614c4e57600080fd5b815181811115614c6057614c606144d9565b8060051b9150614c7184830161453b565b8181529183018401918481019088841115614c8b57600080fd5b938501935b83851015614ca957845182529385019390850190614c90565b98975050505050505050565b818103818111156128aa576128aa614aba565b600060208284031215614cda57600080fd5b815161290c8161464b565b6000818303610100811215614cf957600080fd5b614d016144ef565b8335815260e0601f1983011215614d1757600080fd5b614d1f614518565b9150614d2d60208501614a0b565b82526040840135614d3d816144c4565b6020830152614d4e6060850161456c565b6040830152614d5f6080850161456c565b606083015260a0840135608083015260c084013560a083015260e084013560c0830152816020820152809250505092915050565b8183823760009101908152919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b67ffffffffffffffff818116838216019080821115614df357614df3614aba565b5092915050565b634e487b7160e01b600052603260045260246000fd5b600060e08201905085825284602083015267ffffffffffffffff8085511660408401528060208601511660608401528060408601511660808401528060608601511660a08401525060048310614e7657634e487b7160e01b600052602160045260246000fd5b8260c083015295945050505050565b60005b83811015614ea0578181015183820152602001614e88565b50506000910152565b60008251614ebb818460208701614e85565b9190910192915050565b60008060008060808587031215614edb57600080fd5b505082516020840151604085015160609095015191969095509092509050565b815160009082906020808601845b83811015614f2557815185529382019390820190600101614f09565b50929695505050505050565b60008451614f43818460208901614e85565b6001600160f81b031985169083019081528351614f67816001840160208801614e85565b0160010195945050505050565b6020815260008251806020840152614f93816040850160208701614e85565b601f01601f19169190910160400192915050565b60008085851115614fb757600080fd5b83861115614fc457600080fd5b5050820193919092039150565b803560208310156128aa57600019602084900360031b1b1692915050565b60008451615001818460208901614e85565b8201838582376000930192835250909392505050565b634e487b7160e01b600052600160045260246000fd5b67ffffffffffffffff828116828216039080821115614df357614df3614aba56fea26469706673582212208d8f6a0748c86495661ac4fd5d7866bd49c400d9ff85e1c219429d77449a5ea264736f6c63430008110033", } // SequencerInboxABI is the input ABI used to generate the binding from. diff --git a/solgen/go/challengeV2gen/challengeV2gen.go b/solgen/go/challengeV2gen/challengeV2gen.go index 24f897fa0..0aab23abf 100644 --- a/solgen/go/challengeV2gen/challengeV2gen.go +++ b/solgen/go/challengeV2gen/challengeV2gen.go @@ -96,7 +96,7 @@ type OneStepData struct { // EdgeChallengeManagerMetaData contains all meta data concerning the EdgeChallengeManager contract. var EdgeChallengeManagerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"}],\"name\":\"AccountHasMadeLayerZeroRival\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssertionHashEmpty\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"h1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"h2\",\"type\":\"bytes32\"}],\"name\":\"AssertionHashMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssertionNoSibling\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssertionNotPending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"levels\",\"type\":\"uint8\"}],\"name\":\"BigStepLevelsTooMany\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"}],\"name\":\"CachedTimeSufficient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"lowerChildId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"upperChildId\",\"type\":\"bytes32\"}],\"name\":\"ChildrenAlreadySet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"argLevel\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"claimLevel\",\"type\":\"uint8\"}],\"name\":\"ClaimEdgeInvalidLevel\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"claimId\",\"type\":\"bytes32\"}],\"name\":\"ClaimEdgeNotLengthOneRival\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClaimEdgeNotPending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"EdgeAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"EdgeAlreadyRefunded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"edgeId2\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"level1\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"level2\",\"type\":\"uint8\"}],\"name\":\"EdgeLevelInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"enumEdgeStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"EdgeNotConfirmed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"EdgeNotExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"claimId\",\"type\":\"bytes32\"}],\"name\":\"EdgeNotLayerZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"EdgeNotLengthOne\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"enumEdgeStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"EdgeNotPending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"level\",\"type\":\"uint8\"}],\"name\":\"EdgeTypeNotSmallStep\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"EdgeUnrivaled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyArray\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyAssertionChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyChallengePeriod\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyClaimId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyEdgeSpecificProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyEndMachineStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyEndRoot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyFirstRival\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyOneStepProofEntry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyOriginId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyPrefixProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyStakeReceiver\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyStaker\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyStartMachineStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyStartRoot\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"assertionEndRoot\",\"type\":\"bytes32\"}],\"name\":\"EndHistoryRootMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"h1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"h2\",\"type\":\"uint256\"}],\"name\":\"HeightDiffLtTwo\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"thresholdBlocks\",\"type\":\"uint256\"}],\"name\":\"InsufficientConfirmationBlocks\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumEdgeType\",\"name\":\"edgeType\",\"type\":\"uint8\"}],\"name\":\"InvalidEdgeType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actualHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expectedHeight\",\"type\":\"uint256\"}],\"name\":\"InvalidEndHeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"end\",\"type\":\"uint256\"}],\"name\":\"InvalidHeights\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"level\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"numBigStepLevels\",\"type\":\"uint8\"}],\"name\":\"LevelTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actualLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxProofLength\",\"type\":\"uint256\"}],\"name\":\"MerkleProofTooLong\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"NotPowerOfTwo\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NotValidator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"originId\",\"type\":\"bytes32\"}],\"name\":\"OriginIdMutualIdMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"confirmedRivalId\",\"type\":\"bytes32\"}],\"name\":\"RivalEdgeConfirmed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeLevels\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numLevels\",\"type\":\"uint256\"}],\"name\":\"StakeAmountsMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroBigStepLevels\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"originId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"level\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"hasRival\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isLayerZero\",\"type\":\"bool\"}],\"name\":\"EdgeAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"lowerChildId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"upperChildId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"lowerChildAlreadyExists\",\"type\":\"bool\"}],\"name\":\"EdgeBisected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"}],\"name\":\"EdgeConfirmedByOneStepProof\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalTimeUnrivaled\",\"type\":\"uint256\"}],\"name\":\"EdgeConfirmedByTime\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"stakeToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"EdgeRefunded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"TimerCacheUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LAYERZERO_BIGSTEPEDGE_HEIGHT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LAYERZERO_BLOCKEDGE_HEIGHT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LAYERZERO_SMALLSTEPEDGE_HEIGHT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NUM_BIGSTEP_LEVEL\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assertionChain\",\"outputs\":[{\"internalType\":\"contractIAssertionChain\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"bisectionHistoryRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"prefixProof\",\"type\":\"bytes\"}],\"name\":\"bisectEdge\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"level\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"originId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"startHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"startHistoryRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"name\":\"calculateEdgeId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"level\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"originId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"startHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"startHistoryRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endHeight\",\"type\":\"uint256\"}],\"name\":\"calculateMutualId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"challengePeriodBlocks\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"beforeHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"internalType\":\"structOneStepData\",\"name\":\"oneStepData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"prevConfig\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"beforeHistoryInclusionProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"afterHistoryInclusionProof\",\"type\":\"bytes32[]\"}],\"name\":\"confirmEdgeByOneStepProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"assertionState\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"prevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inboxAcc\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionStateData\",\"name\":\"claimStateData\",\"type\":\"tuple\"}],\"name\":\"confirmEdgeByTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"}],\"name\":\"confirmedRival\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"level\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"claimId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"prefixProof\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"internalType\":\"structCreateEdgeArgs\",\"name\":\"args\",\"type\":\"tuple\"}],\"name\":\"createLayerZeroEdge\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"edgeExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"edgeLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excessStakeReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"}],\"name\":\"firstRival\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"getEdge\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"originId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"startHistoryRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"startHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"lowerChildId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"upperChildId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"claimId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAtBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"confirmedAtBlock\",\"type\":\"uint64\"},{\"internalType\":\"enumEdgeStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"level\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"refunded\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"totalTimeUnrivaledCache\",\"type\":\"uint64\"}],\"internalType\":\"structChallengeEdge\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enumEdgeType\",\"name\":\"eType\",\"type\":\"uint8\"}],\"name\":\"getLayerZeroEndHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"getPrevAssertionHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"hasLengthOneRival\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"}],\"name\":\"hasMadeLayerZeroRival\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"hasRival\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIAssertionChain\",\"name\":\"_assertionChain\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_challengePeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"contractIOneStepProofEntry\",\"name\":\"_oneStepProofEntry\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroBlockEdgeHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroBigStepEdgeHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroSmallStepEdgeHeight\",\"type\":\"uint256\"},{\"internalType\":\"contractIERC20\",\"name\":\"_stakeToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_excessStakeReceiver\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"_numBigStepLevel\",\"type\":\"uint8\"},{\"internalType\":\"uint256[]\",\"name\":\"_stakeAmounts\",\"type\":\"uint256[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"edgeIds\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"maximumCachedTime\",\"type\":\"uint256\"}],\"name\":\"multiUpdateTimeCacheByChildren\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oneStepProofEntry\",\"outputs\":[{\"internalType\":\"contractIOneStepProofEntry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"refundStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"stakeAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakeToken\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"timeUnrivaled\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"maximumCachedTime\",\"type\":\"uint256\"}],\"name\":\"updateTimerCacheByChildren\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"claimingEdgeId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"maximumCachedTime\",\"type\":\"uint256\"}],\"name\":\"updateTimerCacheByClaim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615ba880620000f46000396000f3fe608060405234801561001057600080fd5b50600436106101ef5760003560e01c8063655b42f31161010f578063c32d8c63116100a2578063eae0328b11610071578063eae0328b146104b1578063edaab54a146104c4578063f8ee77d6146104d7578063fda2892e146104e057600080fd5b8063c32d8c6314610443578063c8bc4e4314610456578063e5b123da1461047e578063e94e051e1461049e57600080fd5b80638c1b3a40116100de5780638c1b3a40146103ea578063908517e9146103fd578063b2a1408e14610410578063bce6f54f1461042357600080fd5b8063655b42f314610378578063748926f3146103b1578063750e0c0f146103c45780638826a370146103d757600080fd5b8063432bb78a1161018757806351ed6a301161015657806351ed6a301461031057806354b64151146103235780635a48e0f4146103465780635d9e24441461035957600080fd5b8063432bb78a1461028d57806346c2781a146102a057806348923bc5146102cb57806348dd2924146102f657600080fd5b80631dce5166116101c35780631dce5166146102555780633e35f5e81461025e578063416e66571461027157806342e1aaa81461027a57600080fd5b80624d8efe146101f457806305fae1411461021a5780631a72d54c1461022d5780631c1b4f3a14610242575b600080fd5b610207610202366004614bb7565b610500565b6040519081526020015b60405180910390f35b610207610228366004614c01565b61051b565b61024061023b366004614cb3565b610aa3565b005b610207610250366004614d86565b610e20565b610207600a5481565b61020761026c366004614d86565b610e41565b610207600b5481565b610207610288366004614db7565b610e54565b61024061029b366004614dd4565b610ed8565b6008546102b3906001600160401b031681565b6040516001600160401b039091168152602001610211565b6009546102de906001600160a01b031681565b6040516001600160a01b039091168152602001610211565b6008546102de90600160401b90046001600160a01b031681565b6006546102de906001600160a01b031681565b610336610331366004614d86565b610f73565b6040519015158152602001610211565b610207610354366004614d86565b610f80565b600d546103669060ff1681565b60405160ff9091168152602001610211565b610336610386366004614e1f565b6001600160a01b03919091166000908152600460209081526040808320938352929052205460ff1690565b6102406103bf366004614d86565b610f8d565b6103366103d2366004614d86565b611080565b6102406103e5366004614e4b565b611097565b6102406103f8366004614e77565b6110ff565b61033661040b366004614d86565b6112ae565b61024061041e366004614f3f565b6112bb565b610207610431366004614d86565b60009081526002602052604090205490565b610207610451366004614f79565b6115c4565b610469610464366004614fbb565b6115dd565b60408051928352602083019190915201610211565b61020761048c366004614d86565b60009081526003602052604090205490565b6005546102de906001600160a01b031681565b6102076104bf366004614d86565b611799565b6102406104d236600461503a565b6117ae565b610207600c5481565b6104f36104ee366004614d86565b611807565b6040516102119190615086565b6000610510878787878787611926565b979650505050505050565b60008060088054906101000a90046001600160a01b03166001600160a01b03166312ab3d3b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561056f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610593919061516e565b159050808015610612575060085460405163facd743b60e01b8152336004820152600160401b9091046001600160a01b03169063facd743b90602401602060405180830381865afa1580156105ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610610919061516e565b155b1561063757604051633b4f6e2b60e21b81523360048201526024015b60405180910390fd5b61063f6149c6565b600061065c6106516020870187615190565b600d5460ff1661196b565b9050600061066982610e54565b9050610673614a0a565b60008360028111156106875761068761505c565b036109525761069960a08801886151ab565b90506000036106bb57604051630c9ccac560e41b815260040160405180910390fd5b6000806106cb60a08a018a6151ab565b8101906106d8919061543f565b925092505060088054906101000a90046001600160a01b03166001600160a01b031663e51019a68a606001358360000151846020015185604001516040518563ffffffff1660e01b81526004016107329493929190615513565b60006040518083038186803b15801561074a57600080fd5b505afa15801561075e573d6000803e3d6000fd5b505060085460208481015186519187015160408089015190516372880cd360e11b8152600160401b9095046001600160a01b0316965063e51019a695506107aa94929392600401615513565b60006040518083038186803b1580156107c257600080fd5b505afa1580156107d6573d6000803e3d6000fd5b5050505080600001516040015189602001351461081b5780516040908101519051631d31f4cd60e11b815260208b01356004820152602481019190915260440161062e565b6040805160c08101825260608b013580825260208481015190830152600854835163e531d8c760e01b815260048101929092529192830191600160401b90046001600160a01b03169063e531d8c790602401602060405180830381865afa15801561088a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ae919061516e565b15158152600854602084810151604051632b5de4f360e11b81526004810191909152920191600091600160401b90046001600160a01b0316906356bbc9e690602401602060405180830381865afa15801561090d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109319190615560565b6001600160401b031611815292516020840152905160409092019190915290505b600954600d5461097a916001918a9185916001600160a01b0390911690879060ff168b6119da565b6006549094506001600160a01b03166000600761099a60208b018b615190565b60ff16815481106109ad576109ad61557d565b60009182526020909120015490506001600160a01b038216158015906109d257508015155b15610a0e5760008660c001516109e857306109f5565b6005546001600160a01b03165b9050610a0c6001600160a01b038416338385611ab0565b505b8560400151866020015187600001517faa4b66b1ce938c06e2a3f8466bae10ef62e747630e3859889f4719fc6427b5a489606001518a608001518b60a001518c60c001518d60e00151604051610a8d959493929190948552602085019390935260ff919091166040840152151560608301521515608082015260a00190565b60405180910390a4505092519695505050505050565b600054610100900460ff1615808015610ac35750600054600160ff909116105b80610add5750303b158015610add575060005460ff166001145b610b405760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161062e565b6000805460ff191660011790558015610b63576000805461ff0019166101001790555b6001600160a01b038c16610b8a5760405163641f043160e11b815260040160405180910390fd5b600880546001600160a01b03808f16600160401b0268010000000000000000600160e01b0319909216919091179091558a16610bd95760405163fb60b0ef60e01b815260040160405180910390fd5b600980546001600160a01b0319166001600160a01b038c161790556001600160401b038b16600003610c1e57604051632283bb7360e21b815260040160405180910390fd5b6008805467ffffffffffffffff19166001600160401b038d16179055600680546001600160a01b0319166001600160a01b03888116919091179091558516610c79576040516301e1d91560e31b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038716179055610c9d89611b1b565b610cbd57604051633abfb6ff60e21b8152600481018a905260240161062e565b600a899055610ccb88611b1b565b610ceb57604051633abfb6ff60e21b81526004810189905260240161062e565b600b889055610cf987611b1b565b610d1957604051633abfb6ff60e21b81526004810188905260240161062e565b600c87905560ff8416600003610d4257604051632a18f5b960e21b815260040160405180910390fd5b60fd8460ff161115610d6c5760405163040d23bf60e41b815260ff8516600482015260240161062e565b600d805460ff191660ff861617905581610d878560026155a9565b60ff1614610dbf5781610d9b8560026155a9565b604051622bb3a760e61b8152600481019290925260ff16602482015260440161062e565b610dcb60078484614a4c565b508015610e12576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b60078181548110610e3057600080fd5b600091825260209091200154905081565b6000610e4e600183611b45565b92915050565b600080826002811115610e6957610e6961505c565b03610e76575050600a5490565b6001826002811115610e8a57610e8a61505c565b03610e97575050600b5490565b6002826002811115610eab57610eab61505c565b03610eb8575050600c5490565b81604051630efcb87b60e21b815260040161062e91906155c2565b919050565b6000829003610efa5760405163521299a960e01b815260040160405180910390fd5b610f2b8383610f0a6001826155d5565b818110610f1957610f1961557d565b60019260209091020135905083611ccf565b5060005b82811015610f6d57610f5b848483818110610f4c57610f4c61557d565b905060200201356000196117ae565b80610f65816155e8565b915050610f2f565b50505050565b6000610e4e600183611d25565b6000610e4e600183611d59565b6000610f9a600183611daa565b9050610fa581611df3565b6006546009820154600780546001600160a01b0390931692600092600160481b900460ff16908110610fd957610fd961557d565b60009182526020909120015490506001600160a01b03821615801590610ffe57508015155b1561101f57600883015461101f906001600160a01b03848116911683611eb6565b600084815260016020526040902061103690611eeb565b604080516001600160a01b03851681526020810184905286917fa635398959ddb5ce3b14537edfc25b2e671274c9b8cad0f4bd634752e69007b6910160405180910390a350505050565b6000818152600160205260408120610e4e90611f1b565b600d5460009081906110b3906001908790879060ff1687611f34565b9150915081156110f857847fbe17755d8d836ad67bfaf8e5b3869aedb4cba03f295a167c5547feddd9ef50ad826040516110ef91815260200190565b60405180910390a25b5050505050565b600061110c600189611d59565b6008546040516304972af960e01b8152919250600160401b90046001600160a01b0316906304972af9906111469084908a90600401615601565b60006040518083038186803b15801561115e57600080fd5b505afa158015611172573d6000803e3d6000fd5b5050505060006040518060600160405280886080016020810190611196919061567a565b6001600160401b0316815260200160088054906101000a90046001600160a01b03166001600160a01b031663e78cea926040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112199190615697565b6001600160a01b0390811682528935602090920191909152600954600d54600b54600c54949550611261946001948f9416928e9288928e928e928e928e9260ff169190611f9b565b600089815260016020526040902061127890611eeb565b6040518a907fe11db4b27bc8c6ea5943ecbb205ae1ca8d56c42c719717aaf8a53d43d0cee7c290600090a3505050505050505050565b6000610e4e600183612301565b60006112c8600184611daa565b90506112d3816123bc565b61131c576112e0816123e0565b60088201546007830154604051631cb1906160e31b815260048101939093526001600160a01b039091166024830152604482015260640161062e565b600080806009840154600d5461133f9160ff600160481b9091048116911661196b565b60028111156113505761135061505c565b1490508080156113d4575060085460078401546040516306106c4560e31b81526004810191909152600160401b9091046001600160a01b031690633083622890602401602060405180830381865afa1580156113b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d4919061516e565b156115495760085460078401546040516372880cd360e11b8152600160401b9092046001600160a01b03169163e51019a69161142091889060c08201359060e0830135906004016156b4565b60006040518083038186803b15801561143857600080fd5b505afa15801561144c573d6000803e3d6000fd5b5050600854604051631171558560e01b815260c08801356004820152600160401b9091046001600160a01b0316925063117155859150602401602060405180830381865afa1580156114a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c69190615560565b600854604051632b5de4f360e11b815260c08701356004820152600160401b9091046001600160a01b0316906356bbc9e690602401602060405180830381865afa158015611518573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153c9190615560565b6115469190615741565b91505b60085460009061156890600190889086906001600160401b0316612415565b600087815260016020526040902090915061158290611eeb565b867f2e0808830a22204cb3fb8f8d784b28bc97e9ce2e39d2f9cde2860de0957d68eb836040516115b491815260200190565b60405180910390a3505050505050565b60006115d386868686866124d4565b9695505050505050565b600080600080600061162c898989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600195949392505061252e9050565b8151929550909350915015806116c4578260400151836020015184600001517faa4b66b1ce938c06e2a3f8466bae10ef62e747630e3859889f4719fc6427b5a4866060015187608001518860a001518960c001518a60e001516040516116bb959493929190948552602085019390935260ff919091166040840152151560608301521515608082015260a00190565b60405180910390a45b8160400151826020015183600001517faa4b66b1ce938c06e2a3f8466bae10ef62e747630e3859889f4719fc6427b5a4856060015186608001518760a001518860c001518960e00151604051611743959493929190948552602085019390935260ff919091166040840152151560608301521515608082015260a00190565b60405180910390a48151604051821515815285908c907f7340510d24b7ec9b5c100f5500d93429d80d00d46f0d18e4e85d0c4cc22b99249060200160405180910390a45051919350909150505b94509492505050565b6000610e4e6117a9600184611daa565b61282f565b6000806117bd60018585612874565b915091508115610f6d57837fbe17755d8d836ad67bfaf8e5b3869aedb4cba03f295a167c5547feddd9ef50ad826040516117f991815260200190565b60405180910390a250505050565b61180f614a97565b61181a600183611daa565b604080516101e0810182528254815260018084015460208301526002840154928201929092526003830154606082015260048301546080820152600583015460a0820152600683015460c0820152600783015460e082015260088301546001600160a01b038116610100830152600160a01b90046001600160401b039081166101208301526009840154908116610140830152909291610160840191600160401b900460ff16908111156118d0576118d061505c565b60018111156118e1576118e161505c565b81526009919091015460ff600160481b820481166020840152600160501b820416151560408301526001600160401b03600160581b9091041660609091015292915050565b600061193587878787876124d4565b60408051602081019290925281018390526060016040516020818303038152906040528051906020012090509695505050505050565b60008260ff1660000361198057506000610e4e565b8160ff168360ff161161199557506001610e4e565b6119a08260016155a9565b60ff168360ff16036119b457506002610e4e565b6040516315c1b4af60e31b815260ff80851660048301528316602482015260440161062e565b6119e26149c6565b6000806119f28a8a8a8a89612898565b915091506000611a03838b89612d19565b90506000611a1283838d612e2c565b90508515611a96576000611a2582612e5f565b33600090815260038f016020908152604080832084845290915290205490915060ff1615611a6f57604051632d23561d60e11b81523360048201526024810182905260440161062e565b33600090815260038e016020908152604080832093835292905220805460ff191660011790555b611aa08c82612e83565b9c9b505050505050505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610f6d9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261317a565b600081600003611b2d57506000919050565b6000611b3a6001846155d5565b929092161592915050565b6000818152602083905260408120611b5c90611f1b565b611b7b5760405162a7b02b60e01b81526004810183905260240161062e565b6000828152602084905260408120611b9290611eeb565b6000818152600186016020526040812054919250819003611bc6576040516336843d9f60e21b815260040160405180910390fd5b6040516815539492559053115160ba1b6020820152602901604051602081830303815290604052805190602001208103611c2f57600084815260208690526040902060080154611c2690600160a01b90046001600160401b0316436155d5565b92505050610e4e565b6000818152602086905260409020611c4690611f1b565b611c655760405162a7b02b60e01b81526004810182905260240161062e565b60008181526020869052604080822060089081015487845291909220909101546001600160401b03600160a01b928390048116929091041680821115611cba57611caf81836155d5565b945050505050610e4e565b6000945050505050610e4e565b505092915050565b600082815260208490526040812060090154600160581b90046001600160401b0316828110611d1b5760405163d1f5928160e01b8152600481018290526024810184905260440161062e565b90505b9392505050565b6000611d318383612301565b8015611d1e57506000828152602084905260409020611d4f9061282f565b6001149392505050565b600080611d668484611daa565b90505b6009810154600160481b900460ff1615611da25780546000908152600185016020526040902054611d9a8582611daa565b915050611d69565b549392505050565b6000818152602083905260408120611dc190611f1b565b611de05760405162a7b02b60e01b81526004810183905260240161062e565b5060009081526020919091526040902090565b60016009820154600160401b900460ff166001811115611e1557611e1561505c565b14611e4d57611e23816123e0565b6009820154604051633bc499ed60e21b815261062e9291600160401b900460ff1690600401615761565b611e56816123bc565b611e63576112e0816123e0565b6009810154600160501b900460ff161515600103611ea057611e84816123e0565b60405163307f766960e01b815260040161062e91815260200190565b600901805460ff60501b1916600160501b179055565b6040516001600160a01b038316602482015260448101829052611ee690849063a9059cbb60e01b90606401611ae4565b505050565b6000610e4e8260090160099054906101000a900460ff1683600001548460020154856001015486600401546124d4565b60080154600160a01b90046001600160401b0316151590565b6000806000611f438888611b45565b9050611f518888888861324c565b600086815260208990526040902060090154611f7d90600160581b90046001600160401b031682615775565b9050611f8b88888387613374565b92509250505b9550959350505050565b60008b815260208d905260409020611fb290611f1b565b611fd15760405162a7b02b60e01b8152600481018c905260240161062e565b600260008c815260208e90526040902060090154611ff990600160481b900460ff168561196b565b600281111561200a5761200a61505c565b146120475760008b815260208d905260409081902060090154905163348aefdf60e01b8152600160481b90910460ff16600482015260240161062e565b60008b815260208d90526040902061205e9061282f565b6001146120985760008b815260208d90526040902061207c9061282f565b6040516306b595e560e41b815260040161062e91815260200190565b60008b815260208d905260409020600201548b825b60018f600001600084815260200190815260200160002060090160099054906101000a900460ff1660ff1611156121555760008f60000160008481526020019081526020016000206000015490508f60010160008281526020019081526020016000205492508f600001600084815260200190815260200160002060020154826121379190615788565b6121419085615775565b935061214d8683615788565b9150506120ad565b50506121b28d60000160008e8152602001908152602001600020600101548b60000135838b8b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133fa92505050565b60008b6001600160a01b031663b5112fd28b848e600001358f80602001906121da91906151ab565b6040518663ffffffff1660e01b81526004016121fa95949392919061579f565b602060405180830381865afa158015612217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223b9190615800565b90506122a08e60000160008f815260200190815260200160002060030154828460016122679190615775565b8a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133fa92505050565b6122aa8e8e613480565b60008d815260208f9052604090206122c1906134ea565b5050506000998a5250505060209790975250506040909320600901805467ffffffffffffffff60581b191667ffffffffffffffff60581b17905550505050565b600081815260208390526040812061231890611f1b565b6123375760405162a7b02b60e01b81526004810183905260240161062e565b600082815260208490526040812061234e90611eeb565b6000818152600186016020526040812054919250819003612382576040516336843d9f60e21b815260040160405180910390fd5b6040516815539492559053115160ba1b602082015260290160408051601f1981840301815291905280516020909101201415949350505050565b600781015460009015801590610e4e575050600801546001600160a01b0316151590565b6000610e4e8260090160099054906101000a900460ff1683600001548460020154856001015486600401548760030154611926565b600083815260208590526040812061242c90611f1b565b61244b5760405162a7b02b60e01b81526004810185905260240161062e565b6000612457868661356c565b905061246c6001600160401b03851682615775565b9050826001600160401b03168110156124aa5760405163011a8d4d60e41b8152600481018290526001600160401b038416602482015260440161062e565b60008581526020879052604090206124c1906134ea565b6124cb8686613480565b95945050505050565b6040516001600160f81b031960f887901b1660208201526021810185905260418101849052606181018390526081810182905260009060a10160405160208183030381529060405280519060200120905095945050505050565b60006125386149c6565b6125406149c6565b60008087815260208990526040902060090154600160401b900460ff16600181111561256e5761256e61505c565b146125ad57600086815260208890526040908190206009015490516323f8405d60e01b815261062e918891600160401b90910460ff1690600401615761565b6125b78787612301565b6125d7576040516380e07e4560e01b81526004810187905260240161062e565b6000868152602088905260408120604080516101e0810182528254815260018084015460208301526002840154928201929092526003830154606082015260048301546080820152600583015460a0820152600683015460c0820152600783015460e082015260088301546001600160a01b038116610100830152600160a01b90046001600160401b039081166101208301526009840154908116610140830152909291610160840191600160401b900460ff169081111561269b5761269b61505c565b60018111156126ac576126ac61505c565b815260099190910154600160481b810460ff9081166020840152600160501b8204161515604080840191909152600160581b9091046001600160401b0316606090920191909152810151608082015191925060009161270b91906135f1565b9050600080878060200190518101906127249190615874565b909250905061275489612738856001615775565b6060870151608088015161274d906001615775565b8686613685565b505060006127606149c6565b60006127818560000151866020015187604001518d888a6101800151613956565b905061278c816139ee565b600081815260208e9052604090209093506127a690611f1b565b6127b7576127b48c82612e83565b91505b506127c06149c6565b60006127e186600001518c8789606001518a608001518b6101800151613956565b90506127ed8d82612e83565b91505061281d8382600001518e60000160008f8152602001908152602001600020613a179092919063ffffffff16565b919b909a509098509650505050505050565b6000808260020154836004015461284691906155d5565b905080600003610e4e57612859836123e0565b60405162a7b02b60e01b815260040161062e91815260200190565b60008061288c8585612886888861356c565b86613374565b91509150935093915050565b604080516060808201835260008083526020830152918101919091526000806128cd6128c76020890189615190565b8561196b565b60028111156128de576128de61505c565b03612b67576020850151855160000361290a576040516374b5e30d60e11b815260040160405180910390fd5b855160608801351461293f5785516040516316c5de8f60e21b815260048101919091526060880135602482015260440161062e565b8560400151612961576040516360b4921b60e11b815260040160405180910390fd5b856060015161298357604051635a2e8e1d60e11b815260040160405180910390fd5b61299060a08801886151ab565b90506000036129b257604051630c9ccac560e41b815260040160405180910390fd5b60006129c160a08901896151ab565b8101906129ce919061543f565b509091506000905087608001516020015160028111156129f0576129f061505c565b03612a0e5760405163231b2f2960e11b815260040160405180910390fd5b60008760a00151602001516002811115612a2a57612a2a61505c565b03612a4857604051638999857d60e01b815260040160405180910390fd5b6000866001600160a01b031663c39619c4612a668a60800151613a7e565b6040518263ffffffff1660e01b8152600401612a8291906158d7565b602060405180830381865afa158015612a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac39190615800565b90506000876001600160a01b031663c39619c4612ae38b60a00151613a7e565b6040518263ffffffff1660e01b8152600401612aff91906158d7565b602060405180830381865afa158015612b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b409190615800565b6040805160608101825293845260208401919091528201929092529350909150611f919050565b612b75878760600135611d25565b612b9b5760405160016292642960e01b031981526060870135600482015260240161062e565b6060860135600090815260208890526040812090612bb882611eeb565b905060006009830154600160401b900460ff166001811115612bdc57612bdc61505c565b14612bfa576040516312459ffd60e01b815260040160405180910390fd5b6009820154612c1390600160481b900460ff1686613ab9565b60ff16612c2360208a018a615190565b60ff1614612c6c57612c386020890189615190565b600983015460405163564f308b60e11b815260ff9283166004820152600160481b909104909116602482015260440161062e565b612c7960a08901896151ab565b9050600003612c9b57604051630c9ccac560e41b815260040160405180910390fd5b600080808080612cae60a08e018e6151ab565b810190612cbb9190615905565b94509450945094509450612cd98760010154868960020154866133fa565b612ced8760030154858960040154856133fa565b604051806060016040528086815260200185815260200182815250869850985050505050505050611f91565b604080516000808252602082019092528190612d3f90612d3a908751613adb565b613b11565b9050612d4a83611b1b565b612d6a57604051633abfb6ff60e21b81526004810184905260240161062e565b82846040013514612d9b57604080516337f318af60e21b81529085013560048201526024810184905260440161062e565b612db784602001358660200151866040013588604001516133fa565b612dc460808501856151ab565b9050600003612de657604051631a1503a960e11b815260040160405180910390fd5b600080612df660808701876151ab565b810190612e0391906159a0565b9092509050612e21836001602089013561274d60408b013583615775565b509095945050505050565b612e34614a97565b611d1b84846000602086018035906040880135906060890135903390612e5a908b615190565b613caa565b6000610e4e82610180015183600001518460400151856020015186608001516124d4565b612e8b6149c6565b6000612e96836139ee565b6000818152602086905260409020909150612eb090611f1b565b15612ed157604051635e76f9ef60e11b81526004810182905260240161062e565b600081815260208581526040918290208551815590850151600180830191909155918501516002820155606085015160038201556080850151600482015560a0850151600582015560c0850151600682015560e085015160078201556101008501516008820180546101208801516001600160401b03908116600160a01b026001600160e01b03199092166001600160a01b03909416939093171790556101408601516009830180549190921667ffffffffffffffff19821681178355610160880151889590939268ffffffffffffffffff191690911790600160401b908490811115612fc057612fc061505c565b021790555061018082810151600990920180546101a08501516101c0909501516001600160401b0316600160581b0267ffffffffffffffff60581b19951515600160501b0260ff60501b1960ff909616600160481b02959095166affff00000000000000000019909216919091179390931793909316919091179091558301518351604085015160208601516080870151600094613063949093909290916124d4565b60008181526001870160205260408120549192508190036130c2576040516815539492559053115160ba1b602082015260290160408051601f198184030181529181528151602092830120600085815260018a0190935291205561310a565b6040516815539492559053115160ba1b602082015260290160405160208183030381529060405280519060200120810361310a57600082815260018701602052604090208390555b6040805161010081018252848152602080820185905287518284015260e0880151606083015260008681529089905291909120608082019061314b9061282f565b815261018087015160ff166020820152911515604083015260e090950151151560609091015250919392505050565b60006131cf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613db39092919063ffffffff16565b805190915015611ee657808060200190518101906131ed919061516e565b611ee65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161062e565b60008281526020859052604080822054858352912061326a90611eeb565b146132b857600083815260208590526040902061328690611eeb565b6000838152602086905260409081902054905163e2e27f8760e01b81526004810192909252602482015260440161062e565b600082815260208590526040808220600990810154868452919092209091015460ff600160481b928390048116926132f292041683613ab9565b60ff1614610f6d576000838152602085905260409020600901548390839061332490600160481b900460ff1684613ab9565b60008581526020889052604090819020600901549051637e726d1560e01b81526004810194909452602484019290925260ff9081166044840152600160481b90910416606482015260840161062e565b6000806000613384878786611ccf565b90506001600160401b03851161339a57846133a3565b6001600160401b035b9450808511156133ec575050506000838152602085905260409020600901805467ffffffffffffffff60581b1916600160581b6001600160401b03851602179055600182611790565b600097909650945050505050565b600061342f82848660405160200161341491815260200190565b60405160208183030381529060405280519060200120613dc2565b90508085146110f85760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420696e636c7573696f6e2070726f6f66000000000000000000604482015260640161062e565b600081815260208390526040812061349790611eeb565b600081815260028501602052604090205490915080156134d457604051630dd7028f60e41b8152600481018490526024810182905260440161062e565b5060009081526002909201602052604090912055565b60006009820154600160401b900460ff16600181111561350c5761350c61505c565b146135445761351a816123e0565b60098201546040516323f8405d60e01b815261062e9291600160401b900460ff1690600401615761565b60090180546001600160401b03431668ffffffffffffffffff1990911617600160401b179055565b6000806135798484611b45565b60008481526020869052604090206005015490915015611d1e576000838152602085905260408082206005810154835281832060099081015460069092015484529190922001546001600160401b03600160581b92839004811692909104168082106135e557806135e7565b815b6115d39084615775565b600060026135ff84846155d5565b10156136285760405163240a616560e21b8152600481018490526024810183905260440161062e565b61363283836155d5565b60020361364b57613644836001615775565b9050610e4e565b6000836136596001856155d5565b189050600061366782613e64565b9050600019811b8061367a6001876155d5565b169695505050505050565b600085116136cc5760405162461bcd60e51b815260206004820152601460248201527305072652d73697a652063616e6e6f7420626520360641b604482015260640161062e565b856136d683613b11565b146137235760405162461bcd60e51b815260206004820152601b60248201527f50726520657870616e73696f6e20726f6f74206d69736d617463680000000000604482015260640161062e565b8461372d83613f93565b146137845760405162461bcd60e51b815260206004820152602160248201527f5072652073697a6520646f6573206e6f74206d6174636820657870616e73696f6044820152603760f91b606482015260840161062e565b8285106137d35760405162461bcd60e51b815260206004820181905260248201527f5072652073697a65206e6f74206c657373207468616e20706f73742073697a65604482015260640161062e565b60008590506000806137e88560008751613fee565b90505b858310156138a05760006137ff848861414a565b9050845183106138465760405162461bcd60e51b8152602060048201526012602482015271496e646578206f7574206f662072616e676560701b604482015260640161062e565b61386a828287868151811061385d5761385d61557d565b602002602001015161422e565b91506001811b61387a8186615775565b94508785111561388c5761388c6159f9565b83613896816155e8565b94505050506137eb565b866138aa82613b11565b146139025760405162461bcd60e51b815260206004820152602260248201527f506f737420657870616e73696f6e20726f6f74206e6f7420657175616c20706f6044820152611cdd60f21b606482015260840161062e565b8351821461394b5760405162461bcd60e51b8152602060048201526016602482015275496e636f6d706c6574652070726f6f6620757361676560501b604482015260640161062e565b505050505050505050565b61395e614a97565b61396b878787878761476a565b50604080516101e08101825296875260208701959095529385019290925260608401526080830152600060a0830181905260c0830181905260e0830181905261010083018190526001600160401b0343166101208401526101408301819052610160830181905260ff9091166101808301526101a082018190526101c082015290565b6000610e4e82610180015183600001518460400151856020015186608001518760600151611926565b6005830154151580613a2c5750600683015415155b15613a6e57613a3a836123e0565b600584015460068501546040516308b0e71d60e41b815260048101939093526024830191909152604482015260640161062e565b6005830191909155600690910155565b613a86614b11565b60405180604001604052808360000151815260200183602001516002811115613ab157613ab161505c565b905292915050565b600080613ac78460016155a9565b9050613ad3818461196b565b509392505050565b6060611d1e83600084604051602001613af691815260200190565b6040516020818303038152906040528051906020012061422e565b600080825111613b5c5760405162461bcd60e51b815260206004820152601660248201527522b6b83a3c9036b2b935b6329032bc3830b739b4b7b760511b604482015260640161062e565b604082511115613bae5760405162461bcd60e51b815260206004820152601a60248201527f4d65726b6c6520657870616e73696f6e20746f6f206c61726765000000000000604482015260640161062e565b6000805b8351811015613ca3576000848281518110613bcf57613bcf61557d565b60200260200101519050826000801b03613c3b578015613c365780925060018551613bfa91906155d5565b8214613c3657604051613c1d908490600090602001918252602082015260400190565b6040516020818303038152906040528051906020012092505b613c90565b8015613c5a576040805160208101839052908101849052606001613c1d565b604051613c77908490600090602001918252602082015260400190565b6040516020818303038152906040528051906020012092505b5080613c9b816155e8565b915050613bb2565b5092915050565b613cb2614a97565b6001600160a01b038316613cd95760405163f289e65760e01b815260040160405180910390fd5b6000849003613cfb57604051636932bcfd60e01b815260040160405180910390fd5b613d08898989898961476a565b604051806101e001604052808a81526020018981526020018881526020018781526020018681526020016000801b81526020016000801b8152602001858152602001846001600160a01b03168152602001436001600160401b0316815260200160006001600160401b0316815260200160006001811115613d8b57613d8b61505c565b815260ff84166020820152600060408201819052606090910152905098975050505050505050565b6060611d1b84846000856147fa565b8251600090610100811115613df557604051637ed6198f60e11b815260048101829052610100602482015260440161062e565b8260005b82811015613e5a576000878281518110613e1557613e1561557d565b60200260200101519050816001901b8716600003613e4157826000528060205260406000209250613e51565b8060005282602052604060002092505b50600101613df9565b5095945050505050565b600081600003613eb65760405162461bcd60e51b815260206004820152601c60248201527f5a65726f20686173206e6f207369676e69666963616e74206269747300000000604482015260640161062e565b600160801b8210613ed457608091821c91613ed19082615775565b90505b600160401b8210613ef257604091821c91613eef9082615775565b90505b6401000000008210613f1157602091821c91613f0e9082615775565b90505b620100008210613f2e57601091821c91613f2b9082615775565b90505b6101008210613f4a57600891821c91613f479082615775565b90505b60108210613f6557600491821c91613f629082615775565b90505b60048210613f8057600291821c91613f7d9082615775565b90505b60028210610ed357610e4e600182615775565b600080805b8351811015613ca357838181518110613fb357613fb361557d565b60200260200101516000801b14613fdc57613fcf816002615af3565b613fd99083615775565b91505b80613fe6816155e8565b915050613f98565b60608183106140395760405162461bcd60e51b815260206004820152601760248201527614dd185c9d081b9bdd081b195cdcc81d1a185b88195b99604a1b604482015260640161062e565b83518211156140945760405162461bcd60e51b815260206004820152602160248201527f456e64206e6f74206c657373206f7220657175616c207468616e206c656e67746044820152600d60fb1b606482015260840161062e565b60006140a084846155d5565b6001600160401b038111156140b7576140b76151f1565b6040519080825280602002602001820160405280156140e0578160200160208202803683370190505b509050835b83811015614141578581815181106140ff576140ff61557d565b602002602001015182868361411491906155d5565b815181106141245761412461557d565b602090810291909101015280614139816155e8565b9150506140e5565b50949350505050565b60008183106141955760405162461bcd60e51b815260206004820152601760248201527614dd185c9d081b9bdd081b195cdcc81d1a185b88195b99604a1b604482015260640161062e565b60006141a2838518613e64565b9050600060016141b28382615775565b6001901b6141c091906155d5565b905084811684821681156141d757611caf82614920565b80156141e657611caf81613e64565b60405162461bcd60e51b815260206004820152601b60248201527f426f7468207920616e64207a2063616e6e6f74206265207a65726f0000000000604482015260640161062e565b6060604083106142715760405162461bcd60e51b815260206004820152600e60248201526d098caeccad840e8dede40d0d2ced60931b604482015260640161062e565b60008290036142c25760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f7420617070656e6420656d70747920737562747265650000000000604482015260640161062e565b6040845111156143145760405162461bcd60e51b815260206004820152601a60248201527f4d65726b6c6520657870616e73696f6e20746f6f206c61726765000000000000604482015260640161062e565b835160000361439257600061432a846001615775565b6001600160401b03811115614341576143416151f1565b60405190808252806020026020018201604052801561436a578160200160208202803683370190505b509050828185815181106143805761438061557d565b60209081029190910101529050611d1e565b835183106144005760405162461bcd60e51b815260206004820152603560248201527f4c6576656c2067726561746572207468616e2068696768657374206c6576656c6044820152741037b31031bab93932b73a1032bc3830b739b4b7b760591b606482015260840161062e565b81600061440c86613f93565b9050600061441b866002615af3565b6144259083615775565b9050600061443283613e64565b61443b83613e64565b116144885787516001600160401b03811115614459576144596151f1565b604051908082528060200260200182016040528015614482578160200160208202803683370190505b506144d7565b8751614495906001615775565b6001600160401b038111156144ac576144ac6151f1565b6040519080825280602002602001820160405280156144d5578160200160208202803683370190505b505b905060408151111561452b5760405162461bcd60e51b815260206004820152601c60248201527f417070656e642063726561746573206f76657273697a65207472656500000000604482015260640161062e565b60005b88518110156146cc57878110156145ba578881815181106145515761455161557d565b60200260200101516000801b146145b55760405162461bcd60e51b815260206004820152602260248201527f417070656e642061626f7665206c65617374207369676e69666963616e7420626044820152611a5d60f21b606482015260840161062e565b6146ba565b6000859003614600578881815181106145d5576145d561557d565b60200260200101518282815181106145ef576145ef61557d565b6020026020010181815250506146ba565b8881815181106146125761461261557d565b60200260200101516000801b0361464a57848282815181106146365761463661557d565b6020908102919091010152600094506146ba565b6000801b8282815181106146605761466061557d565b60200260200101818152505088818151811061467e5761467e61557d565b6020026020010151856040516020016146a1929190918252602082015260400190565b6040516020818303038152906040528051906020012094505b806146c4816155e8565b91505061452e565b508315614700578381600183516146e391906155d5565b815181106146f3576146f361557d565b6020026020010181815250505b806001825161470f91906155d5565b8151811061471f5761471f61557d565b60200260200101516000801b036105105760405162461bcd60e51b815260206004820152600f60248201526e4c61737420656e747279207a65726f60881b604482015260640161062e565b600085900361478c5760405163235e76ef60e21b815260040160405180910390fd5b8281116147b6576040516308183ebd60e21b8152600481018490526024810182905260440161062e565b60008490036147d8576040516320f1a0f960e21b815260040160405180910390fd5b60008290036110f857604051635cb6e5bb60e01b815260040160405180910390fd5b60608247101561485b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161062e565b6001600160a01b0385163b6148b25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161062e565b600080866001600160a01b031685876040516148ce9190615b23565b60006040518083038185875af1925050503d806000811461490b576040519150601f19603f3d011682016040523d82523d6000602084013e614910565b606091505b509150915061051082828661498d565b60008082116149715760405162461bcd60e51b815260206004820152601c60248201527f5a65726f20686173206e6f207369676e69666963616e74206269747300000000604482015260640161062e565b600082806149806001826155d5565b16189050611d1e81613e64565b6060831561499c575081611d1e565b8251156149ac5782518084602001fd5b8160405162461bcd60e51b815260040161062e9190615b3f565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b6040805160c081018252600080825260208201819052918101829052606081019190915260808101614a3a614b30565b8152602001614a47614b30565b905290565b828054828255906000526020600020908101928215614a87579160200282015b82811115614a87578235825591602001919060010190614a6c565b50614a93929150614b57565b5090565b604080516101e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290529061016082019081526000602082018190526040820181905260609091015290565b6040518060400160405280614b24614b6c565b81526020016000905290565b6040518060600160405280614b43614b6c565b815260200160008152600060209091015290565b5b80821115614a935760008155600101614b58565b6040518060400160405280614b7f614b88565b8152602001614a475b60405180604001604052806002906020820280368337509192915050565b803560ff81168114610ed357600080fd5b60008060008060008060c08789031215614bd057600080fd5b614bd987614ba6565b9860208801359850604088013597606081013597506080810135965060a00135945092505050565b600060208284031215614c1357600080fd5b81356001600160401b03811115614c2957600080fd5b820160c08185031215611d1e57600080fd5b6001600160a01b0381168114614c5057600080fd5b50565b6001600160401b0381168114614c5057600080fd5b60008083601f840112614c7a57600080fd5b5081356001600160401b03811115614c9157600080fd5b6020830191508360208260051b8501011115614cac57600080fd5b9250929050565b60008060008060008060008060008060006101408c8e031215614cd557600080fd5b8b35614ce081614c3b565b9a5060208c0135614cf081614c53565b995060408c0135614d0081614c3b565b985060608c0135975060808c0135965060a08c0135955060c08c0135614d2581614c3b565b945060e08c0135614d3581614c3b565b9350614d446101008d01614ba6565b92506101208c01356001600160401b03811115614d6057600080fd5b614d6c8e828f01614c68565b915080935050809150509295989b509295989b9093969950565b600060208284031215614d9857600080fd5b5035919050565b60038110614c5057600080fd5b8035610ed381614d9f565b600060208284031215614dc957600080fd5b8135611d1e81614d9f565b600080600060408486031215614de957600080fd5b83356001600160401b03811115614dff57600080fd5b614e0b86828701614c68565b909790965060209590950135949350505050565b60008060408385031215614e3257600080fd5b8235614e3d81614c3b565b946020939093013593505050565b600080600060608486031215614e6057600080fd5b505081359360208301359350604090920135919050565b6000806000806000806000878903610120811215614e9457600080fd5b8835975060208901356001600160401b0380821115614eb257600080fd5b908a01906040828d031215614ec657600080fd5b81985060a0603f1984011215614edb57600080fd5b60408b01975060e08b0135925080831115614ef557600080fd5b614f018c848d01614c68565b90975095506101008b0135925086915080831115614f1e57600080fd5b5050614f2c8a828b01614c68565b989b979a50959850939692959293505050565b600080828403610120811215614f5457600080fd5b83359250610100601f1982011215614f6b57600080fd5b506020830190509250929050565b600080600080600060a08688031215614f9157600080fd5b614f9a86614ba6565b97602087013597506040870135966060810135965060800135945092505050565b60008060008060608587031215614fd157600080fd5b843593506020850135925060408501356001600160401b0380821115614ff657600080fd5b818701915087601f83011261500a57600080fd5b81358181111561501957600080fd5b88602082850101111561502b57600080fd5b95989497505060200194505050565b6000806040838503121561504d57600080fd5b50508035926020909101359150565b634e487b7160e01b600052602160045260246000fd5b600281106150825761508261505c565b9052565b60006101e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401516150f4828501826001600160a01b03169052565b5050610120838101516001600160401b038116848301525050610140838101516001600160401b0381168483015250506101608084015161513782850182615072565b50506101808381015160ff16908301526101a0808401511515908301526101c0808401516001600160401b03811682850152611cc7565b60006020828403121561518057600080fd5b81518015158114611d1e57600080fd5b6000602082840312156151a257600080fd5b611d1e82614ba6565b6000808335601e198436030181126151c257600080fd5b8301803591506001600160401b038211156151dc57600080fd5b602001915036819003821315614cac57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715615229576152296151f1565b60405290565b604080519081016001600160401b0381118282101715615229576152296151f1565b604051601f8201601f191681016001600160401b0381118282101715615279576152796151f1565b604052919050565b60006001600160401b0382111561529a5761529a6151f1565b5060051b60200190565b600082601f8301126152b557600080fd5b813560206152ca6152c583615281565b615251565b82815260059290921b840181019181810190868411156152e957600080fd5b8286015b8481101561530457803583529183019183016152ed565b509695505050505050565b600082601f83011261532057600080fd5b61532861522f565b80604084018581111561533a57600080fd5b845b81811015612e2157803561534f81614c53565b84526020938401930161533c565b600081830361010081121561537157600080fd5b615379615207565b915060c081121561538957600080fd5b615391615207565b608082121561539f57600080fd5b6153a761522f565b915084601f8501126153b857600080fd5b6153c061522f565b8060408601878111156153d257600080fd5b865b818110156153ec5780358452602093840193016153d4565b508185526153fa888261530f565b602086015250505081815261541160808501614dac565b602082015260a08401356040820152808352505060c0820135602082015260e0820135604082015292915050565b6000806000610220848603121561545557600080fd5b83356001600160401b0381111561546b57600080fd5b615477868287016152a4565b935050615487856020860161535d565b915061549785610120860161535d565b90509250925092565b80518260005b60028110156154c55782518252602092830192909101906001016154a6565b5050506020808201516040840160005b60028110156154fb5782516001600160401b0316825291830191908301906001016154d5565b505050505050565b60038110614c5057614c5061505c565b60006101208201905085825261552d6020830186516154a0565b602085015161553b81615503565b60a08301526040949094015160c082015260e081019290925261010090910152919050565b60006020828403121561557257600080fd5b8151611d1e81614c53565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60ff8181168382160190811115610e4e57610e4e615593565b602081016155cf83615503565b91905290565b81810381811115610e4e57610e4e615593565b6000600182016155fa576155fa615593565b5060010190565b600060c0820190508382528235602083015260208301356040830152604083013561562b81614c3b565b6001600160a01b031660608381019190915283013561564981614c53565b6001600160401b0380821660808501526080850135915061566982614c53565b80821660a085015250509392505050565b60006020828403121561568c57600080fd5b8135611d1e81614c53565b6000602082840312156156a957600080fd5b8151611d1e81614c3b565b8481526101208101602060408682850137606083016040870160005b60028110156156ff5781356156e481614c53565b6001600160401b0316835291830191908301906001016156d0565b50505050608085013561571181614d9f565b61571a81615503565b8060a08401525060a085013560c08301528360e08301528261010083015295945050505050565b6001600160401b03828116828216039080821115613ca357613ca3615593565b82815260408101611d1e6020830184615072565b80820180821115610e4e57610e4e615593565b8082028115828204841417610e4e57610e4e615593565b8551815260018060a01b0360208701511660208201526040860151604082015284606082015283608082015260c060a08201528160c0820152818360e0830137600081830160e090810191909152601f909201601f19160101949350505050565b60006020828403121561581257600080fd5b5051919050565b600082601f83011261582a57600080fd5b8151602061583a6152c583615281565b82815260059290921b8401810191818101908684111561585957600080fd5b8286015b84811015615304578051835291830191830161585d565b6000806040838503121561588757600080fd5b82516001600160401b038082111561589e57600080fd5b6158aa86838701615819565b935060208501519150808211156158c057600080fd5b506158cd85828601615819565b9150509250929050565b600060a0820190506158ea8284516154a0565b60208301516158f881615503565b8060808401525092915050565b600080600080600060a0868803121561591d57600080fd5b853594506020860135935060408601356001600160401b038082111561594257600080fd5b61594e89838a016152a4565b9450606088013591508082111561596457600080fd5b61597089838a016152a4565b9350608088013591508082111561598657600080fd5b50615993888289016152a4565b9150509295509295909350565b600080604083850312156159b357600080fd5b82356001600160401b03808211156159ca57600080fd5b6159d6868387016152a4565b935060208501359150808211156159ec57600080fd5b506158cd858286016152a4565b634e487b7160e01b600052600160045260246000fd5b600181815b80851115615a4a578160001904821115615a3057615a30615593565b80851615615a3d57918102915b93841c9390800290615a14565b509250929050565b600082615a6157506001610e4e565b81615a6e57506000610e4e565b8160018114615a845760028114615a8e57615aaa565b6001915050610e4e565b60ff841115615a9f57615a9f615593565b50506001821b610e4e565b5060208310610133831016604e8410600b8410161715615acd575081810a610e4e565b615ad78383615a0f565b8060001904821115615aeb57615aeb615593565b029392505050565b6000611d1e8383615a52565b60005b83811015615b1a578181015183820152602001615b02565b50506000910152565b60008251615b35818460208701615aff565b9190910192915050565b6020815260008251806020840152615b5e816040850160208701615aff565b601f01601f1916919091016040019291505056fea2646970667358221220e4a67147278613f859084de41e5f9b81b96d3e86d276108d6d625e16260f312664736f6c63430008110033", + Bin: "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615ba880620000f46000396000f3fe608060405234801561001057600080fd5b50600436106101ef5760003560e01c8063655b42f31161010f578063c32d8c63116100a2578063eae0328b11610071578063eae0328b146104b1578063edaab54a146104c4578063f8ee77d6146104d7578063fda2892e146104e057600080fd5b8063c32d8c6314610443578063c8bc4e4314610456578063e5b123da1461047e578063e94e051e1461049e57600080fd5b80638c1b3a40116100de5780638c1b3a40146103ea578063908517e9146103fd578063b2a1408e14610410578063bce6f54f1461042357600080fd5b8063655b42f314610378578063748926f3146103b1578063750e0c0f146103c45780638826a370146103d757600080fd5b8063432bb78a1161018757806351ed6a301161015657806351ed6a301461031057806354b64151146103235780635a48e0f4146103465780635d9e24441461035957600080fd5b8063432bb78a1461028d57806346c2781a146102a057806348923bc5146102cb57806348dd2924146102f657600080fd5b80631dce5166116101c35780631dce5166146102555780633e35f5e81461025e578063416e66571461027157806342e1aaa81461027a57600080fd5b80624d8efe146101f457806305fae1411461021a5780631a72d54c1461022d5780631c1b4f3a14610242575b600080fd5b610207610202366004614bb7565b610500565b6040519081526020015b60405180910390f35b610207610228366004614c01565b61051b565b61024061023b366004614cb3565b610aa3565b005b610207610250366004614d86565b610e20565b610207600a5481565b61020761026c366004614d86565b610e41565b610207600b5481565b610207610288366004614db7565b610e54565b61024061029b366004614dd4565b610ed8565b6008546102b3906001600160401b031681565b6040516001600160401b039091168152602001610211565b6009546102de906001600160a01b031681565b6040516001600160a01b039091168152602001610211565b6008546102de90600160401b90046001600160a01b031681565b6006546102de906001600160a01b031681565b610336610331366004614d86565b610f73565b6040519015158152602001610211565b610207610354366004614d86565b610f80565b600d546103669060ff1681565b60405160ff9091168152602001610211565b610336610386366004614e1f565b6001600160a01b03919091166000908152600460209081526040808320938352929052205460ff1690565b6102406103bf366004614d86565b610f8d565b6103366103d2366004614d86565b611080565b6102406103e5366004614e4b565b611097565b6102406103f8366004614e77565b6110ff565b61033661040b366004614d86565b6112ae565b61024061041e366004614f3f565b6112bb565b610207610431366004614d86565b60009081526002602052604090205490565b610207610451366004614f79565b6115c4565b610469610464366004614fbb565b6115dd565b60408051928352602083019190915201610211565b61020761048c366004614d86565b60009081526003602052604090205490565b6005546102de906001600160a01b031681565b6102076104bf366004614d86565b611799565b6102406104d236600461503a565b6117ae565b610207600c5481565b6104f36104ee366004614d86565b611807565b6040516102119190615086565b6000610510878787878787611926565b979650505050505050565b60008060088054906101000a90046001600160a01b03166001600160a01b03166312ab3d3b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561056f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610593919061516e565b159050808015610612575060085460405163facd743b60e01b8152336004820152600160401b9091046001600160a01b03169063facd743b90602401602060405180830381865afa1580156105ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610610919061516e565b155b1561063757604051633b4f6e2b60e21b81523360048201526024015b60405180910390fd5b61063f6149c6565b600061065c6106516020870187615190565b600d5460ff1661196b565b9050600061066982610e54565b9050610673614a0a565b60008360028111156106875761068761505c565b036109525761069960a08801886151ab565b90506000036106bb57604051630c9ccac560e41b815260040160405180910390fd5b6000806106cb60a08a018a6151ab565b8101906106d8919061543f565b925092505060088054906101000a90046001600160a01b03166001600160a01b031663e51019a68a606001358360000151846020015185604001516040518563ffffffff1660e01b81526004016107329493929190615513565b60006040518083038186803b15801561074a57600080fd5b505afa15801561075e573d6000803e3d6000fd5b505060085460208481015186519187015160408089015190516372880cd360e11b8152600160401b9095046001600160a01b0316965063e51019a695506107aa94929392600401615513565b60006040518083038186803b1580156107c257600080fd5b505afa1580156107d6573d6000803e3d6000fd5b5050505080600001516040015189602001351461081b5780516040908101519051631d31f4cd60e11b815260208b01356004820152602481019190915260440161062e565b6040805160c08101825260608b013580825260208481015190830152600854835163e531d8c760e01b815260048101929092529192830191600160401b90046001600160a01b03169063e531d8c790602401602060405180830381865afa15801561088a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ae919061516e565b15158152600854602084810151604051632b5de4f360e11b81526004810191909152920191600091600160401b90046001600160a01b0316906356bbc9e690602401602060405180830381865afa15801561090d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109319190615560565b6001600160401b031611815292516020840152905160409092019190915290505b600954600d5461097a916001918a9185916001600160a01b0390911690879060ff168b6119da565b6006549094506001600160a01b03166000600761099a60208b018b615190565b60ff16815481106109ad576109ad61557d565b60009182526020909120015490506001600160a01b038216158015906109d257508015155b15610a0e5760008660c001516109e857306109f5565b6005546001600160a01b03165b9050610a0c6001600160a01b038416338385611ab0565b505b8560400151866020015187600001517faa4b66b1ce938c06e2a3f8466bae10ef62e747630e3859889f4719fc6427b5a489606001518a608001518b60a001518c60c001518d60e00151604051610a8d959493929190948552602085019390935260ff919091166040840152151560608301521515608082015260a00190565b60405180910390a4505092519695505050505050565b600054610100900460ff1615808015610ac35750600054600160ff909116105b80610add5750303b158015610add575060005460ff166001145b610b405760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161062e565b6000805460ff191660011790558015610b63576000805461ff0019166101001790555b6001600160a01b038c16610b8a5760405163641f043160e11b815260040160405180910390fd5b600880546001600160a01b03808f16600160401b0268010000000000000000600160e01b0319909216919091179091558a16610bd95760405163fb60b0ef60e01b815260040160405180910390fd5b600980546001600160a01b0319166001600160a01b038c161790556001600160401b038b16600003610c1e57604051632283bb7360e21b815260040160405180910390fd5b6008805467ffffffffffffffff19166001600160401b038d16179055600680546001600160a01b0319166001600160a01b03888116919091179091558516610c79576040516301e1d91560e31b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038716179055610c9d89611b1b565b610cbd57604051633abfb6ff60e21b8152600481018a905260240161062e565b600a899055610ccb88611b1b565b610ceb57604051633abfb6ff60e21b81526004810189905260240161062e565b600b889055610cf987611b1b565b610d1957604051633abfb6ff60e21b81526004810188905260240161062e565b600c87905560ff8416600003610d4257604051632a18f5b960e21b815260040160405180910390fd5b60fd8460ff161115610d6c5760405163040d23bf60e41b815260ff8516600482015260240161062e565b600d805460ff191660ff861617905581610d878560026155a9565b60ff1614610dbf5781610d9b8560026155a9565b604051622bb3a760e61b8152600481019290925260ff16602482015260440161062e565b610dcb60078484614a4c565b508015610e12576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b60078181548110610e3057600080fd5b600091825260209091200154905081565b6000610e4e600183611b45565b92915050565b600080826002811115610e6957610e6961505c565b03610e76575050600a5490565b6001826002811115610e8a57610e8a61505c565b03610e97575050600b5490565b6002826002811115610eab57610eab61505c565b03610eb8575050600c5490565b81604051630efcb87b60e21b815260040161062e91906155c2565b919050565b6000829003610efa5760405163521299a960e01b815260040160405180910390fd5b610f2b8383610f0a6001826155d5565b818110610f1957610f1961557d565b60019260209091020135905083611ccf565b5060005b82811015610f6d57610f5b848483818110610f4c57610f4c61557d565b905060200201356000196117ae565b80610f65816155e8565b915050610f2f565b50505050565b6000610e4e600183611d25565b6000610e4e600183611d59565b6000610f9a600183611daa565b9050610fa581611df3565b6006546009820154600780546001600160a01b0390931692600092600160481b900460ff16908110610fd957610fd961557d565b60009182526020909120015490506001600160a01b03821615801590610ffe57508015155b1561101f57600883015461101f906001600160a01b03848116911683611eb6565b600084815260016020526040902061103690611eeb565b604080516001600160a01b03851681526020810184905286917fa635398959ddb5ce3b14537edfc25b2e671274c9b8cad0f4bd634752e69007b6910160405180910390a350505050565b6000818152600160205260408120610e4e90611f1b565b600d5460009081906110b3906001908790879060ff1687611f34565b9150915081156110f857847fbe17755d8d836ad67bfaf8e5b3869aedb4cba03f295a167c5547feddd9ef50ad826040516110ef91815260200190565b60405180910390a25b5050505050565b600061110c600189611d59565b6008546040516304972af960e01b8152919250600160401b90046001600160a01b0316906304972af9906111469084908a90600401615601565b60006040518083038186803b15801561115e57600080fd5b505afa158015611172573d6000803e3d6000fd5b5050505060006040518060600160405280886080016020810190611196919061567a565b6001600160401b0316815260200160088054906101000a90046001600160a01b03166001600160a01b031663e78cea926040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112199190615697565b6001600160a01b0390811682528935602090920191909152600954600d54600b54600c54949550611261946001948f9416928e9288928e928e928e928e9260ff169190611f9b565b600089815260016020526040902061127890611eeb565b6040518a907fe11db4b27bc8c6ea5943ecbb205ae1ca8d56c42c719717aaf8a53d43d0cee7c290600090a3505050505050505050565b6000610e4e600183612301565b60006112c8600184611daa565b90506112d3816123bc565b61131c576112e0816123e0565b60088201546007830154604051631cb1906160e31b815260048101939093526001600160a01b039091166024830152604482015260640161062e565b600080806009840154600d5461133f9160ff600160481b9091048116911661196b565b60028111156113505761135061505c565b1490508080156113d4575060085460078401546040516306106c4560e31b81526004810191909152600160401b9091046001600160a01b031690633083622890602401602060405180830381865afa1580156113b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d4919061516e565b156115495760085460078401546040516372880cd360e11b8152600160401b9092046001600160a01b03169163e51019a69161142091889060c08201359060e0830135906004016156b4565b60006040518083038186803b15801561143857600080fd5b505afa15801561144c573d6000803e3d6000fd5b5050600854604051631171558560e01b815260c08801356004820152600160401b9091046001600160a01b0316925063117155859150602401602060405180830381865afa1580156114a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c69190615560565b600854604051632b5de4f360e11b815260c08701356004820152600160401b9091046001600160a01b0316906356bbc9e690602401602060405180830381865afa158015611518573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153c9190615560565b6115469190615741565b91505b60085460009061156890600190889086906001600160401b0316612415565b600087815260016020526040902090915061158290611eeb565b867f2e0808830a22204cb3fb8f8d784b28bc97e9ce2e39d2f9cde2860de0957d68eb836040516115b491815260200190565b60405180910390a3505050505050565b60006115d386868686866124d4565b9695505050505050565b600080600080600061162c898989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600195949392505061252e9050565b8151929550909350915015806116c4578260400151836020015184600001517faa4b66b1ce938c06e2a3f8466bae10ef62e747630e3859889f4719fc6427b5a4866060015187608001518860a001518960c001518a60e001516040516116bb959493929190948552602085019390935260ff919091166040840152151560608301521515608082015260a00190565b60405180910390a45b8160400151826020015183600001517faa4b66b1ce938c06e2a3f8466bae10ef62e747630e3859889f4719fc6427b5a4856060015186608001518760a001518860c001518960e00151604051611743959493929190948552602085019390935260ff919091166040840152151560608301521515608082015260a00190565b60405180910390a48151604051821515815285908c907f7340510d24b7ec9b5c100f5500d93429d80d00d46f0d18e4e85d0c4cc22b99249060200160405180910390a45051919350909150505b94509492505050565b6000610e4e6117a9600184611daa565b61282f565b6000806117bd60018585612874565b915091508115610f6d57837fbe17755d8d836ad67bfaf8e5b3869aedb4cba03f295a167c5547feddd9ef50ad826040516117f991815260200190565b60405180910390a250505050565b61180f614a97565b61181a600183611daa565b604080516101e0810182528254815260018084015460208301526002840154928201929092526003830154606082015260048301546080820152600583015460a0820152600683015460c0820152600783015460e082015260088301546001600160a01b038116610100830152600160a01b90046001600160401b039081166101208301526009840154908116610140830152909291610160840191600160401b900460ff16908111156118d0576118d061505c565b60018111156118e1576118e161505c565b81526009919091015460ff600160481b820481166020840152600160501b820416151560408301526001600160401b03600160581b9091041660609091015292915050565b600061193587878787876124d4565b60408051602081019290925281018390526060016040516020818303038152906040528051906020012090509695505050505050565b60008260ff1660000361198057506000610e4e565b8160ff168360ff161161199557506001610e4e565b6119a08260016155a9565b60ff168360ff16036119b457506002610e4e565b6040516315c1b4af60e31b815260ff80851660048301528316602482015260440161062e565b6119e26149c6565b6000806119f28a8a8a8a89612898565b915091506000611a03838b89612d19565b90506000611a1283838d612e2c565b90508515611a96576000611a2582612e5f565b33600090815260038f016020908152604080832084845290915290205490915060ff1615611a6f57604051632d23561d60e11b81523360048201526024810182905260440161062e565b33600090815260038e016020908152604080832093835292905220805460ff191660011790555b611aa08c82612e83565b9c9b505050505050505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610f6d9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261317a565b600081600003611b2d57506000919050565b6000611b3a6001846155d5565b929092161592915050565b6000818152602083905260408120611b5c90611f1b565b611b7b5760405162a7b02b60e01b81526004810183905260240161062e565b6000828152602084905260408120611b9290611eeb565b6000818152600186016020526040812054919250819003611bc6576040516336843d9f60e21b815260040160405180910390fd5b6040516815539492559053115160ba1b6020820152602901604051602081830303815290604052805190602001208103611c2f57600084815260208690526040902060080154611c2690600160a01b90046001600160401b0316436155d5565b92505050610e4e565b6000818152602086905260409020611c4690611f1b565b611c655760405162a7b02b60e01b81526004810182905260240161062e565b60008181526020869052604080822060089081015487845291909220909101546001600160401b03600160a01b928390048116929091041680821115611cba57611caf81836155d5565b945050505050610e4e565b6000945050505050610e4e565b505092915050565b600082815260208490526040812060090154600160581b90046001600160401b0316828110611d1b5760405163d1f5928160e01b8152600481018290526024810184905260440161062e565b90505b9392505050565b6000611d318383612301565b8015611d1e57506000828152602084905260409020611d4f9061282f565b6001149392505050565b600080611d668484611daa565b90505b6009810154600160481b900460ff1615611da25780546000908152600185016020526040902054611d9a8582611daa565b915050611d69565b549392505050565b6000818152602083905260408120611dc190611f1b565b611de05760405162a7b02b60e01b81526004810183905260240161062e565b5060009081526020919091526040902090565b60016009820154600160401b900460ff166001811115611e1557611e1561505c565b14611e4d57611e23816123e0565b6009820154604051633bc499ed60e21b815261062e9291600160401b900460ff1690600401615761565b611e56816123bc565b611e63576112e0816123e0565b6009810154600160501b900460ff161515600103611ea057611e84816123e0565b60405163307f766960e01b815260040161062e91815260200190565b600901805460ff60501b1916600160501b179055565b6040516001600160a01b038316602482015260448101829052611ee690849063a9059cbb60e01b90606401611ae4565b505050565b6000610e4e8260090160099054906101000a900460ff1683600001548460020154856001015486600401546124d4565b60080154600160a01b90046001600160401b0316151590565b6000806000611f438888611b45565b9050611f518888888861324c565b600086815260208990526040902060090154611f7d90600160581b90046001600160401b031682615775565b9050611f8b88888387613374565b92509250505b9550959350505050565b60008b815260208d905260409020611fb290611f1b565b611fd15760405162a7b02b60e01b8152600481018c905260240161062e565b600260008c815260208e90526040902060090154611ff990600160481b900460ff168561196b565b600281111561200a5761200a61505c565b146120475760008b815260208d905260409081902060090154905163348aefdf60e01b8152600160481b90910460ff16600482015260240161062e565b60008b815260208d90526040902061205e9061282f565b6001146120985760008b815260208d90526040902061207c9061282f565b6040516306b595e560e41b815260040161062e91815260200190565b60008b815260208d905260409020600201548b825b60018f600001600084815260200190815260200160002060090160099054906101000a900460ff1660ff1611156121555760008f60000160008481526020019081526020016000206000015490508f60010160008281526020019081526020016000205492508f600001600084815260200190815260200160002060020154826121379190615788565b6121419085615775565b935061214d8683615788565b9150506120ad565b50506121b28d60000160008e8152602001908152602001600020600101548b60000135838b8b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133fa92505050565b60008b6001600160a01b031663b5112fd28b848e600001358f80602001906121da91906151ab565b6040518663ffffffff1660e01b81526004016121fa95949392919061579f565b602060405180830381865afa158015612217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223b9190615800565b90506122a08e60000160008f815260200190815260200160002060030154828460016122679190615775565b8a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133fa92505050565b60008d815260208f9052604090206122b790613480565b6122c18e8e613502565b5050506000998a5250505060209790975250506040909320600901805467ffffffffffffffff60581b191667ffffffffffffffff60581b17905550505050565b600081815260208390526040812061231890611f1b565b6123375760405162a7b02b60e01b81526004810183905260240161062e565b600082815260208490526040812061234e90611eeb565b6000818152600186016020526040812054919250819003612382576040516336843d9f60e21b815260040160405180910390fd5b6040516815539492559053115160ba1b602082015260290160408051601f1981840301815291905280516020909101201415949350505050565b600781015460009015801590610e4e575050600801546001600160a01b0316151590565b6000610e4e8260090160099054906101000a900460ff1683600001548460020154856001015486600401548760030154611926565b600083815260208590526040812061242c90611f1b565b61244b5760405162a7b02b60e01b81526004810185905260240161062e565b6000612457868661356c565b905061246c6001600160401b03851682615775565b9050826001600160401b03168110156124aa5760405163011a8d4d60e41b8152600481018290526001600160401b038416602482015260440161062e565b60008581526020879052604090206124c190613480565b6124cb8686613502565b95945050505050565b6040516001600160f81b031960f887901b1660208201526021810185905260418101849052606181018390526081810182905260009060a10160405160208183030381529060405280519060200120905095945050505050565b60006125386149c6565b6125406149c6565b60008087815260208990526040902060090154600160401b900460ff16600181111561256e5761256e61505c565b146125ad57600086815260208890526040908190206009015490516323f8405d60e01b815261062e918891600160401b90910460ff1690600401615761565b6125b78787612301565b6125d7576040516380e07e4560e01b81526004810187905260240161062e565b6000868152602088905260408120604080516101e0810182528254815260018084015460208301526002840154928201929092526003830154606082015260048301546080820152600583015460a0820152600683015460c0820152600783015460e082015260088301546001600160a01b038116610100830152600160a01b90046001600160401b039081166101208301526009840154908116610140830152909291610160840191600160401b900460ff169081111561269b5761269b61505c565b60018111156126ac576126ac61505c565b815260099190910154600160481b810460ff9081166020840152600160501b8204161515604080840191909152600160581b9091046001600160401b0316606090920191909152810151608082015191925060009161270b91906135f1565b9050600080878060200190518101906127249190615874565b909250905061275489612738856001615775565b6060870151608088015161274d906001615775565b8686613685565b505060006127606149c6565b60006127818560000151866020015187604001518d888a6101800151613956565b905061278c816139ee565b600081815260208e9052604090209093506127a690611f1b565b6127b7576127b48c82612e83565b91505b506127c06149c6565b60006127e186600001518c8789606001518a608001518b6101800151613956565b90506127ed8d82612e83565b91505061281d8382600001518e60000160008f8152602001908152602001600020613a179092919063ffffffff16565b919b909a509098509650505050505050565b6000808260020154836004015461284691906155d5565b905080600003610e4e57612859836123e0565b60405162a7b02b60e01b815260040161062e91815260200190565b60008061288c8585612886888861356c565b86613374565b91509150935093915050565b604080516060808201835260008083526020830152918101919091526000806128cd6128c76020890189615190565b8561196b565b60028111156128de576128de61505c565b03612b67576020850151855160000361290a576040516374b5e30d60e11b815260040160405180910390fd5b855160608801351461293f5785516040516316c5de8f60e21b815260048101919091526060880135602482015260440161062e565b8560400151612961576040516360b4921b60e11b815260040160405180910390fd5b856060015161298357604051635a2e8e1d60e11b815260040160405180910390fd5b61299060a08801886151ab565b90506000036129b257604051630c9ccac560e41b815260040160405180910390fd5b60006129c160a08901896151ab565b8101906129ce919061543f565b509091506000905087608001516020015160028111156129f0576129f061505c565b03612a0e5760405163231b2f2960e11b815260040160405180910390fd5b60008760a00151602001516002811115612a2a57612a2a61505c565b03612a4857604051638999857d60e01b815260040160405180910390fd5b6000866001600160a01b031663c39619c4612a668a60800151613a7e565b6040518263ffffffff1660e01b8152600401612a8291906158d7565b602060405180830381865afa158015612a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac39190615800565b90506000876001600160a01b031663c39619c4612ae38b60a00151613a7e565b6040518263ffffffff1660e01b8152600401612aff91906158d7565b602060405180830381865afa158015612b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b409190615800565b6040805160608101825293845260208401919091528201929092529350909150611f919050565b612b75878760600135611d25565b612b9b5760405160016292642960e01b031981526060870135600482015260240161062e565b6060860135600090815260208890526040812090612bb882611eeb565b905060006009830154600160401b900460ff166001811115612bdc57612bdc61505c565b14612bfa576040516312459ffd60e01b815260040160405180910390fd5b6009820154612c1390600160481b900460ff1686613ab9565b60ff16612c2360208a018a615190565b60ff1614612c6c57612c386020890189615190565b600983015460405163564f308b60e11b815260ff9283166004820152600160481b909104909116602482015260440161062e565b612c7960a08901896151ab565b9050600003612c9b57604051630c9ccac560e41b815260040160405180910390fd5b600080808080612cae60a08e018e6151ab565b810190612cbb9190615905565b94509450945094509450612cd98760010154868960020154866133fa565b612ced8760030154858960040154856133fa565b604051806060016040528086815260200185815260200182815250869850985050505050505050611f91565b604080516000808252602082019092528190612d3f90612d3a908751613adb565b613b11565b9050612d4a83611b1b565b612d6a57604051633abfb6ff60e21b81526004810184905260240161062e565b82846040013514612d9b57604080516337f318af60e21b81529085013560048201526024810184905260440161062e565b612db784602001358660200151866040013588604001516133fa565b612dc460808501856151ab565b9050600003612de657604051631a1503a960e11b815260040160405180910390fd5b600080612df660808701876151ab565b810190612e0391906159a0565b9092509050612e21836001602089013561274d60408b013583615775565b509095945050505050565b612e34614a97565b611d1b84846000602086018035906040880135906060890135903390612e5a908b615190565b613caa565b6000610e4e82610180015183600001518460400151856020015186608001516124d4565b612e8b6149c6565b6000612e96836139ee565b6000818152602086905260409020909150612eb090611f1b565b15612ed157604051635e76f9ef60e11b81526004810182905260240161062e565b600081815260208581526040918290208551815590850151600180830191909155918501516002820155606085015160038201556080850151600482015560a0850151600582015560c0850151600682015560e085015160078201556101008501516008820180546101208801516001600160401b03908116600160a01b026001600160e01b03199092166001600160a01b03909416939093171790556101408601516009830180549190921667ffffffffffffffff19821681178355610160880151889590939268ffffffffffffffffff191690911790600160401b908490811115612fc057612fc061505c565b021790555061018082810151600990920180546101a08501516101c0909501516001600160401b0316600160581b0267ffffffffffffffff60581b19951515600160501b0260ff60501b1960ff909616600160481b02959095166affff00000000000000000019909216919091179390931793909316919091179091558301518351604085015160208601516080870151600094613063949093909290916124d4565b60008181526001870160205260408120549192508190036130c2576040516815539492559053115160ba1b602082015260290160408051601f198184030181529181528151602092830120600085815260018a0190935291205561310a565b6040516815539492559053115160ba1b602082015260290160405160208183030381529060405280519060200120810361310a57600082815260018701602052604090208390555b6040805161010081018252848152602080820185905287518284015260e0880151606083015260008681529089905291909120608082019061314b9061282f565b815261018087015160ff166020820152911515604083015260e090950151151560609091015250919392505050565b60006131cf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613db39092919063ffffffff16565b805190915015611ee657808060200190518101906131ed919061516e565b611ee65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161062e565b60008281526020859052604080822054858352912061326a90611eeb565b146132b857600083815260208590526040902061328690611eeb565b6000838152602086905260409081902054905163e2e27f8760e01b81526004810192909252602482015260440161062e565b600082815260208590526040808220600990810154868452919092209091015460ff600160481b928390048116926132f292041683613ab9565b60ff1614610f6d576000838152602085905260409020600901548390839061332490600160481b900460ff1684613ab9565b60008581526020889052604090819020600901549051637e726d1560e01b81526004810194909452602484019290925260ff9081166044840152600160481b90910416606482015260840161062e565b6000806000613384878786611ccf565b90506001600160401b03851161339a57846133a3565b6001600160401b035b9450808511156133ec575050506000838152602085905260409020600901805467ffffffffffffffff60581b1916600160581b6001600160401b03851602179055600182611790565b600097909650945050505050565b600061342f82848660405160200161341491815260200190565b60405160208183030381529060405280519060200120613dc2565b90508085146110f85760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420696e636c7573696f6e2070726f6f66000000000000000000604482015260640161062e565b60006009820154600160401b900460ff1660018111156134a2576134a261505c565b146134da576134b0816123e0565b60098201546040516323f8405d60e01b815261062e9291600160401b900460ff1690600401615761565b60090180546001600160401b03431668ffffffffffffffffff1990911617600160401b179055565b600081815260208390526040812061351990611eeb565b6000818152600285016020526040902054909150801561355657604051630dd7028f60e41b8152600481018490526024810182905260440161062e565b5060009081526002909201602052604090912055565b6000806135798484611b45565b60008481526020869052604090206005015490915015611d1e576000838152602085905260408082206005810154835281832060099081015460069092015484529190922001546001600160401b03600160581b92839004811692909104168082106135e557806135e7565b815b6115d39084615775565b600060026135ff84846155d5565b10156136285760405163240a616560e21b8152600481018490526024810183905260440161062e565b61363283836155d5565b60020361364b57613644836001615775565b9050610e4e565b6000836136596001856155d5565b189050600061366782613e64565b9050600019811b8061367a6001876155d5565b169695505050505050565b600085116136cc5760405162461bcd60e51b815260206004820152601460248201527305072652d73697a652063616e6e6f7420626520360641b604482015260640161062e565b856136d683613b11565b146137235760405162461bcd60e51b815260206004820152601b60248201527f50726520657870616e73696f6e20726f6f74206d69736d617463680000000000604482015260640161062e565b8461372d83613f93565b146137845760405162461bcd60e51b815260206004820152602160248201527f5072652073697a6520646f6573206e6f74206d6174636820657870616e73696f6044820152603760f91b606482015260840161062e565b8285106137d35760405162461bcd60e51b815260206004820181905260248201527f5072652073697a65206e6f74206c657373207468616e20706f73742073697a65604482015260640161062e565b60008590506000806137e88560008751613fee565b90505b858310156138a05760006137ff848861414a565b9050845183106138465760405162461bcd60e51b8152602060048201526012602482015271496e646578206f7574206f662072616e676560701b604482015260640161062e565b61386a828287868151811061385d5761385d61557d565b602002602001015161422e565b91506001811b61387a8186615775565b94508785111561388c5761388c6159f9565b83613896816155e8565b94505050506137eb565b866138aa82613b11565b146139025760405162461bcd60e51b815260206004820152602260248201527f506f737420657870616e73696f6e20726f6f74206e6f7420657175616c20706f6044820152611cdd60f21b606482015260840161062e565b8351821461394b5760405162461bcd60e51b8152602060048201526016602482015275496e636f6d706c6574652070726f6f6620757361676560501b604482015260640161062e565b505050505050505050565b61395e614a97565b61396b878787878761476a565b50604080516101e08101825296875260208701959095529385019290925260608401526080830152600060a0830181905260c0830181905260e0830181905261010083018190526001600160401b0343166101208401526101408301819052610160830181905260ff9091166101808301526101a082018190526101c082015290565b6000610e4e82610180015183600001518460400151856020015186608001518760600151611926565b6005830154151580613a2c5750600683015415155b15613a6e57613a3a836123e0565b600584015460068501546040516308b0e71d60e41b815260048101939093526024830191909152604482015260640161062e565b6005830191909155600690910155565b613a86614b11565b60405180604001604052808360000151815260200183602001516002811115613ab157613ab161505c565b905292915050565b600080613ac78460016155a9565b9050613ad3818461196b565b509392505050565b6060611d1e83600084604051602001613af691815260200190565b6040516020818303038152906040528051906020012061422e565b600080825111613b5c5760405162461bcd60e51b815260206004820152601660248201527522b6b83a3c9036b2b935b6329032bc3830b739b4b7b760511b604482015260640161062e565b604082511115613bae5760405162461bcd60e51b815260206004820152601a60248201527f4d65726b6c6520657870616e73696f6e20746f6f206c61726765000000000000604482015260640161062e565b6000805b8351811015613ca3576000848281518110613bcf57613bcf61557d565b60200260200101519050826000801b03613c3b578015613c365780925060018551613bfa91906155d5565b8214613c3657604051613c1d908490600090602001918252602082015260400190565b6040516020818303038152906040528051906020012092505b613c90565b8015613c5a576040805160208101839052908101849052606001613c1d565b604051613c77908490600090602001918252602082015260400190565b6040516020818303038152906040528051906020012092505b5080613c9b816155e8565b915050613bb2565b5092915050565b613cb2614a97565b6001600160a01b038316613cd95760405163f289e65760e01b815260040160405180910390fd5b6000849003613cfb57604051636932bcfd60e01b815260040160405180910390fd5b613d08898989898961476a565b604051806101e001604052808a81526020018981526020018881526020018781526020018681526020016000801b81526020016000801b8152602001858152602001846001600160a01b03168152602001436001600160401b0316815260200160006001600160401b0316815260200160006001811115613d8b57613d8b61505c565b815260ff84166020820152600060408201819052606090910152905098975050505050505050565b6060611d1b84846000856147fa565b8251600090610100811115613df557604051637ed6198f60e11b815260048101829052610100602482015260440161062e565b8260005b82811015613e5a576000878281518110613e1557613e1561557d565b60200260200101519050816001901b8716600003613e4157826000528060205260406000209250613e51565b8060005282602052604060002092505b50600101613df9565b5095945050505050565b600081600003613eb65760405162461bcd60e51b815260206004820152601c60248201527f5a65726f20686173206e6f207369676e69666963616e74206269747300000000604482015260640161062e565b600160801b8210613ed457608091821c91613ed19082615775565b90505b600160401b8210613ef257604091821c91613eef9082615775565b90505b6401000000008210613f1157602091821c91613f0e9082615775565b90505b620100008210613f2e57601091821c91613f2b9082615775565b90505b6101008210613f4a57600891821c91613f479082615775565b90505b60108210613f6557600491821c91613f629082615775565b90505b60048210613f8057600291821c91613f7d9082615775565b90505b60028210610ed357610e4e600182615775565b600080805b8351811015613ca357838181518110613fb357613fb361557d565b60200260200101516000801b14613fdc57613fcf816002615af3565b613fd99083615775565b91505b80613fe6816155e8565b915050613f98565b60608183106140395760405162461bcd60e51b815260206004820152601760248201527614dd185c9d081b9bdd081b195cdcc81d1a185b88195b99604a1b604482015260640161062e565b83518211156140945760405162461bcd60e51b815260206004820152602160248201527f456e64206e6f74206c657373206f7220657175616c207468616e206c656e67746044820152600d60fb1b606482015260840161062e565b60006140a084846155d5565b6001600160401b038111156140b7576140b76151f1565b6040519080825280602002602001820160405280156140e0578160200160208202803683370190505b509050835b83811015614141578581815181106140ff576140ff61557d565b602002602001015182868361411491906155d5565b815181106141245761412461557d565b602090810291909101015280614139816155e8565b9150506140e5565b50949350505050565b60008183106141955760405162461bcd60e51b815260206004820152601760248201527614dd185c9d081b9bdd081b195cdcc81d1a185b88195b99604a1b604482015260640161062e565b60006141a2838518613e64565b9050600060016141b28382615775565b6001901b6141c091906155d5565b905084811684821681156141d757611caf82614920565b80156141e657611caf81613e64565b60405162461bcd60e51b815260206004820152601b60248201527f426f7468207920616e64207a2063616e6e6f74206265207a65726f0000000000604482015260640161062e565b6060604083106142715760405162461bcd60e51b815260206004820152600e60248201526d098caeccad840e8dede40d0d2ced60931b604482015260640161062e565b60008290036142c25760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f7420617070656e6420656d70747920737562747265650000000000604482015260640161062e565b6040845111156143145760405162461bcd60e51b815260206004820152601a60248201527f4d65726b6c6520657870616e73696f6e20746f6f206c61726765000000000000604482015260640161062e565b835160000361439257600061432a846001615775565b6001600160401b03811115614341576143416151f1565b60405190808252806020026020018201604052801561436a578160200160208202803683370190505b509050828185815181106143805761438061557d565b60209081029190910101529050611d1e565b835183106144005760405162461bcd60e51b815260206004820152603560248201527f4c6576656c2067726561746572207468616e2068696768657374206c6576656c6044820152741037b31031bab93932b73a1032bc3830b739b4b7b760591b606482015260840161062e565b81600061440c86613f93565b9050600061441b866002615af3565b6144259083615775565b9050600061443283613e64565b61443b83613e64565b116144885787516001600160401b03811115614459576144596151f1565b604051908082528060200260200182016040528015614482578160200160208202803683370190505b506144d7565b8751614495906001615775565b6001600160401b038111156144ac576144ac6151f1565b6040519080825280602002602001820160405280156144d5578160200160208202803683370190505b505b905060408151111561452b5760405162461bcd60e51b815260206004820152601c60248201527f417070656e642063726561746573206f76657273697a65207472656500000000604482015260640161062e565b60005b88518110156146cc57878110156145ba578881815181106145515761455161557d565b60200260200101516000801b146145b55760405162461bcd60e51b815260206004820152602260248201527f417070656e642061626f7665206c65617374207369676e69666963616e7420626044820152611a5d60f21b606482015260840161062e565b6146ba565b6000859003614600578881815181106145d5576145d561557d565b60200260200101518282815181106145ef576145ef61557d565b6020026020010181815250506146ba565b8881815181106146125761461261557d565b60200260200101516000801b0361464a57848282815181106146365761463661557d565b6020908102919091010152600094506146ba565b6000801b8282815181106146605761466061557d565b60200260200101818152505088818151811061467e5761467e61557d565b6020026020010151856040516020016146a1929190918252602082015260400190565b6040516020818303038152906040528051906020012094505b806146c4816155e8565b91505061452e565b508315614700578381600183516146e391906155d5565b815181106146f3576146f361557d565b6020026020010181815250505b806001825161470f91906155d5565b8151811061471f5761471f61557d565b60200260200101516000801b036105105760405162461bcd60e51b815260206004820152600f60248201526e4c61737420656e747279207a65726f60881b604482015260640161062e565b600085900361478c5760405163235e76ef60e21b815260040160405180910390fd5b8281116147b6576040516308183ebd60e21b8152600481018490526024810182905260440161062e565b60008490036147d8576040516320f1a0f960e21b815260040160405180910390fd5b60008290036110f857604051635cb6e5bb60e01b815260040160405180910390fd5b60608247101561485b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161062e565b6001600160a01b0385163b6148b25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161062e565b600080866001600160a01b031685876040516148ce9190615b23565b60006040518083038185875af1925050503d806000811461490b576040519150601f19603f3d011682016040523d82523d6000602084013e614910565b606091505b509150915061051082828661498d565b60008082116149715760405162461bcd60e51b815260206004820152601c60248201527f5a65726f20686173206e6f207369676e69666963616e74206269747300000000604482015260640161062e565b600082806149806001826155d5565b16189050611d1e81613e64565b6060831561499c575081611d1e565b8251156149ac5782518084602001fd5b8160405162461bcd60e51b815260040161062e9190615b3f565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b6040805160c081018252600080825260208201819052918101829052606081019190915260808101614a3a614b30565b8152602001614a47614b30565b905290565b828054828255906000526020600020908101928215614a87579160200282015b82811115614a87578235825591602001919060010190614a6c565b50614a93929150614b57565b5090565b604080516101e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290529061016082019081526000602082018190526040820181905260609091015290565b6040518060400160405280614b24614b6c565b81526020016000905290565b6040518060600160405280614b43614b6c565b815260200160008152600060209091015290565b5b80821115614a935760008155600101614b58565b6040518060400160405280614b7f614b88565b8152602001614a475b60405180604001604052806002906020820280368337509192915050565b803560ff81168114610ed357600080fd5b60008060008060008060c08789031215614bd057600080fd5b614bd987614ba6565b9860208801359850604088013597606081013597506080810135965060a00135945092505050565b600060208284031215614c1357600080fd5b81356001600160401b03811115614c2957600080fd5b820160c08185031215611d1e57600080fd5b6001600160a01b0381168114614c5057600080fd5b50565b6001600160401b0381168114614c5057600080fd5b60008083601f840112614c7a57600080fd5b5081356001600160401b03811115614c9157600080fd5b6020830191508360208260051b8501011115614cac57600080fd5b9250929050565b60008060008060008060008060008060006101408c8e031215614cd557600080fd5b8b35614ce081614c3b565b9a5060208c0135614cf081614c53565b995060408c0135614d0081614c3b565b985060608c0135975060808c0135965060a08c0135955060c08c0135614d2581614c3b565b945060e08c0135614d3581614c3b565b9350614d446101008d01614ba6565b92506101208c01356001600160401b03811115614d6057600080fd5b614d6c8e828f01614c68565b915080935050809150509295989b509295989b9093969950565b600060208284031215614d9857600080fd5b5035919050565b60038110614c5057600080fd5b8035610ed381614d9f565b600060208284031215614dc957600080fd5b8135611d1e81614d9f565b600080600060408486031215614de957600080fd5b83356001600160401b03811115614dff57600080fd5b614e0b86828701614c68565b909790965060209590950135949350505050565b60008060408385031215614e3257600080fd5b8235614e3d81614c3b565b946020939093013593505050565b600080600060608486031215614e6057600080fd5b505081359360208301359350604090920135919050565b6000806000806000806000878903610120811215614e9457600080fd5b8835975060208901356001600160401b0380821115614eb257600080fd5b908a01906040828d031215614ec657600080fd5b81985060a0603f1984011215614edb57600080fd5b60408b01975060e08b0135925080831115614ef557600080fd5b614f018c848d01614c68565b90975095506101008b0135925086915080831115614f1e57600080fd5b5050614f2c8a828b01614c68565b989b979a50959850939692959293505050565b600080828403610120811215614f5457600080fd5b83359250610100601f1982011215614f6b57600080fd5b506020830190509250929050565b600080600080600060a08688031215614f9157600080fd5b614f9a86614ba6565b97602087013597506040870135966060810135965060800135945092505050565b60008060008060608587031215614fd157600080fd5b843593506020850135925060408501356001600160401b0380821115614ff657600080fd5b818701915087601f83011261500a57600080fd5b81358181111561501957600080fd5b88602082850101111561502b57600080fd5b95989497505060200194505050565b6000806040838503121561504d57600080fd5b50508035926020909101359150565b634e487b7160e01b600052602160045260246000fd5b600281106150825761508261505c565b9052565b60006101e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401516150f4828501826001600160a01b03169052565b5050610120838101516001600160401b038116848301525050610140838101516001600160401b0381168483015250506101608084015161513782850182615072565b50506101808381015160ff16908301526101a0808401511515908301526101c0808401516001600160401b03811682850152611cc7565b60006020828403121561518057600080fd5b81518015158114611d1e57600080fd5b6000602082840312156151a257600080fd5b611d1e82614ba6565b6000808335601e198436030181126151c257600080fd5b8301803591506001600160401b038211156151dc57600080fd5b602001915036819003821315614cac57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715615229576152296151f1565b60405290565b604080519081016001600160401b0381118282101715615229576152296151f1565b604051601f8201601f191681016001600160401b0381118282101715615279576152796151f1565b604052919050565b60006001600160401b0382111561529a5761529a6151f1565b5060051b60200190565b600082601f8301126152b557600080fd5b813560206152ca6152c583615281565b615251565b82815260059290921b840181019181810190868411156152e957600080fd5b8286015b8481101561530457803583529183019183016152ed565b509695505050505050565b600082601f83011261532057600080fd5b61532861522f565b80604084018581111561533a57600080fd5b845b81811015612e2157803561534f81614c53565b84526020938401930161533c565b600081830361010081121561537157600080fd5b615379615207565b915060c081121561538957600080fd5b615391615207565b608082121561539f57600080fd5b6153a761522f565b915084601f8501126153b857600080fd5b6153c061522f565b8060408601878111156153d257600080fd5b865b818110156153ec5780358452602093840193016153d4565b508185526153fa888261530f565b602086015250505081815261541160808501614dac565b602082015260a08401356040820152808352505060c0820135602082015260e0820135604082015292915050565b6000806000610220848603121561545557600080fd5b83356001600160401b0381111561546b57600080fd5b615477868287016152a4565b935050615487856020860161535d565b915061549785610120860161535d565b90509250925092565b80518260005b60028110156154c55782518252602092830192909101906001016154a6565b5050506020808201516040840160005b60028110156154fb5782516001600160401b0316825291830191908301906001016154d5565b505050505050565b60038110614c5057614c5061505c565b60006101208201905085825261552d6020830186516154a0565b602085015161553b81615503565b60a08301526040949094015160c082015260e081019290925261010090910152919050565b60006020828403121561557257600080fd5b8151611d1e81614c53565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60ff8181168382160190811115610e4e57610e4e615593565b602081016155cf83615503565b91905290565b81810381811115610e4e57610e4e615593565b6000600182016155fa576155fa615593565b5060010190565b600060c0820190508382528235602083015260208301356040830152604083013561562b81614c3b565b6001600160a01b031660608381019190915283013561564981614c53565b6001600160401b0380821660808501526080850135915061566982614c53565b80821660a085015250509392505050565b60006020828403121561568c57600080fd5b8135611d1e81614c53565b6000602082840312156156a957600080fd5b8151611d1e81614c3b565b8481526101208101602060408682850137606083016040870160005b60028110156156ff5781356156e481614c53565b6001600160401b0316835291830191908301906001016156d0565b50505050608085013561571181614d9f565b61571a81615503565b8060a08401525060a085013560c08301528360e08301528261010083015295945050505050565b6001600160401b03828116828216039080821115613ca357613ca3615593565b82815260408101611d1e6020830184615072565b80820180821115610e4e57610e4e615593565b8082028115828204841417610e4e57610e4e615593565b8551815260018060a01b0360208701511660208201526040860151604082015284606082015283608082015260c060a08201528160c0820152818360e0830137600081830160e090810191909152601f909201601f19160101949350505050565b60006020828403121561581257600080fd5b5051919050565b600082601f83011261582a57600080fd5b8151602061583a6152c583615281565b82815260059290921b8401810191818101908684111561585957600080fd5b8286015b84811015615304578051835291830191830161585d565b6000806040838503121561588757600080fd5b82516001600160401b038082111561589e57600080fd5b6158aa86838701615819565b935060208501519150808211156158c057600080fd5b506158cd85828601615819565b9150509250929050565b600060a0820190506158ea8284516154a0565b60208301516158f881615503565b8060808401525092915050565b600080600080600060a0868803121561591d57600080fd5b853594506020860135935060408601356001600160401b038082111561594257600080fd5b61594e89838a016152a4565b9450606088013591508082111561596457600080fd5b61597089838a016152a4565b9350608088013591508082111561598657600080fd5b50615993888289016152a4565b9150509295509295909350565b600080604083850312156159b357600080fd5b82356001600160401b03808211156159ca57600080fd5b6159d6868387016152a4565b935060208501359150808211156159ec57600080fd5b506158cd858286016152a4565b634e487b7160e01b600052600160045260246000fd5b600181815b80851115615a4a578160001904821115615a3057615a30615593565b80851615615a3d57918102915b93841c9390800290615a14565b509250929050565b600082615a6157506001610e4e565b81615a6e57506000610e4e565b8160018114615a845760028114615a8e57615aaa565b6001915050610e4e565b60ff841115615a9f57615a9f615593565b50506001821b610e4e565b5060208310610133831016604e8410600b8410161715615acd575081810a610e4e565b615ad78383615a0f565b8060001904821115615aeb57615aeb615593565b029392505050565b6000611d1e8383615a52565b60005b83811015615b1a578181015183820152602001615b02565b50506000910152565b60008251615b35818460208701615aff565b9190910192915050565b6020815260008251806020840152615b5e816040850160208701615aff565b601f01601f1916919091016040019291505056fea2646970667358221220d16f315416e45d03840254203fc13acae28f39822ccdfbcec1b5662cc9d0fd0f64736f6c63430008110033", } // EdgeChallengeManagerABI is the input ABI used to generate the binding from. diff --git a/solgen/go/mocksgen/mocksgen.go b/solgen/go/mocksgen/mocksgen.go index ca854a482..33b366746 100644 --- a/solgen/go/mocksgen/mocksgen.go +++ b/solgen/go/mocksgen/mocksgen.go @@ -6405,7 +6405,7 @@ func (_ProxyAdminForBinding *ProxyAdminForBindingFilterer) ParseOwnershipTransfe // SequencerInboxBlobMockMetaData contains all meta data concerning the SequencerInboxBlobMock contract. var SequencerInboxBlobMockMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxDataSize_\",\"type\":\"uint256\"},{\"internalType\":\"contractIReader4844\",\"name\":\"reader_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isUsingFeeToken_\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isDelayBufferable_\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyInit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"AlreadyValidDASKeyset\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadBufferConfig\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadMaxTimeVariation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stored\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"received\",\"type\":\"uint256\"}],\"name\":\"BadSequencerNumber\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DataBlobsNotSupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDataLength\",\"type\":\"uint256\"}],\"name\":\"DataTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelayProofRequired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelayedBackwards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelayedTooFar\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Deprecated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExtraGasNotUint64\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceIncludeBlockTooSoon\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HadZeroInit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectMessagePreimage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"InitParamZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelayedAccPreimage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"name\":\"InvalidHeaderFlag\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"KeysetTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingDataHashes\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NativeTokenMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"NoSuchKeyset\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotBatchPoster\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"NotBatchPosterManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotDelayBufferable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotForked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOrigin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"NotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RollupNotChanged\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"messageNum\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"InboxMessageDelivered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"messageNum\",\"type\":\"uint256\"}],\"name\":\"InboxMessageDeliveredFromOrigin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"keysetHash\",\"type\":\"bytes32\"}],\"name\":\"InvalidateKeyset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"OwnerFunctionCalled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"batchSequenceNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"SequencerBatchData\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"batchSequenceNumber\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"beforeAcc\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"afterAcc\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"delayedAcc\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"minBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxBlockNumber\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structIBridge.TimeBounds\",\"name\":\"timeBounds\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"enumIBridge.BatchDataLocation\",\"name\":\"dataLocation\",\"type\":\"uint8\"}],\"name\":\"SequencerBatchDelivered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"keysetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"keysetBytes\",\"type\":\"bytes\"}],\"name\":\"SetValidKeyset\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BROTLI_MESSAGE_HEADER_FLAG\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DAS_MESSAGE_HEADER_FLAG\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DATA_AUTHENTICATED_FLAG\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DATA_BLOB_HEADER_FLAG\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEADER_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TREE_DAS_MESSAGE_HEADER_FLAG\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ZERO_HEAVY_MESSAGE_HEADER_FLAG\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prevMessageCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMessageCount\",\"type\":\"uint256\"}],\"name\":\"addSequencerL2Batch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prevMessageCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMessageCount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"beforeDelayedAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"inboxSeqNum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseFeeL1\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"messageDataHash\",\"type\":\"bytes32\"}],\"internalType\":\"structMessages.Message\",\"name\":\"delayedMessage\",\"type\":\"tuple\"}],\"internalType\":\"structDelayProof\",\"name\":\"delayProof\",\"type\":\"tuple\"}],\"name\":\"addSequencerL2BatchDelayProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prevMessageCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMessageCount\",\"type\":\"uint256\"}],\"name\":\"addSequencerL2BatchFromBlobs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prevMessageCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMessageCount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"beforeDelayedAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"inboxSeqNum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseFeeL1\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"messageDataHash\",\"type\":\"bytes32\"}],\"internalType\":\"structMessages.Message\",\"name\":\"delayedMessage\",\"type\":\"tuple\"}],\"internalType\":\"structDelayProof\",\"name\":\"delayProof\",\"type\":\"tuple\"}],\"name\":\"addSequencerL2BatchFromBlobsDelayProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"addSequencerL2BatchFromOrigin\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prevMessageCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMessageCount\",\"type\":\"uint256\"}],\"name\":\"addSequencerL2BatchFromOrigin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prevMessageCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMessageCount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"beforeDelayedAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"inboxSeqNum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseFeeL1\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"messageDataHash\",\"type\":\"bytes32\"}],\"internalType\":\"structMessages.Message\",\"name\":\"delayedMessage\",\"type\":\"tuple\"}],\"internalType\":\"structDelayProof\",\"name\":\"delayProof\",\"type\":\"tuple\"}],\"name\":\"addSequencerL2BatchFromOriginDelayProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchPosterManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"buffer\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"bufferBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"prevBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"replenishRateInBasis\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"prevSequencedBlockNumber\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"dasKeySetInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isValidKeyset\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"creationBlock\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64[2]\",\"name\":\"l1BlockAndTime\",\"type\":\"uint64[2]\"},{\"internalType\":\"uint256\",\"name\":\"baseFeeL1\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"messageDataHash\",\"type\":\"bytes32\"}],\"name\":\"forceInclusion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"}],\"name\":\"forceInclusionDeadline\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"ksHash\",\"type\":\"bytes32\"}],\"name\":\"getKeysetCreationBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"inboxAccs\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"bridge_\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"delayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delaySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureSeconds\",\"type\":\"uint256\"}],\"internalType\":\"structISequencerInbox.MaxTimeVariation\",\"name\":\"maxTimeVariation_\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"replenishRateInBasis\",\"type\":\"uint64\"}],\"internalType\":\"structBufferConfig\",\"name\":\"bufferConfig_\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"ksHash\",\"type\":\"bytes32\"}],\"name\":\"invalidateKeysetHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isBatchPoster\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDelayBufferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isSequencer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isUsingFeeToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"ksHash\",\"type\":\"bytes32\"}],\"name\":\"isValidKeysetHash\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxDataSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxTimeVariation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"replenishRateInBasis\",\"type\":\"uint64\"}],\"internalType\":\"structBufferConfig\",\"name\":\"bufferConfig_\",\"type\":\"tuple\"}],\"name\":\"postUpgradeInit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reader4844\",\"outputs\":[{\"internalType\":\"contractIReader4844\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeDelayAfterFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollup\",\"outputs\":[{\"internalType\":\"contractIOwnable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newBatchPosterManager\",\"type\":\"address\"}],\"name\":\"setBatchPosterManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"replenishRateInBasis\",\"type\":\"uint64\"}],\"internalType\":\"structBufferConfig\",\"name\":\"bufferConfig_\",\"type\":\"tuple\"}],\"name\":\"setBufferConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBatchPoster_\",\"type\":\"bool\"}],\"name\":\"setIsBatchPoster\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isSequencer_\",\"type\":\"bool\"}],\"name\":\"setIsSequencer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"delayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delaySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureSeconds\",\"type\":\"uint256\"}],\"internalType\":\"structISequencerInbox.MaxTimeVariation\",\"name\":\"maxTimeVariation_\",\"type\":\"tuple\"}],\"name\":\"setMaxTimeVariation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"keysetBytes\",\"type\":\"bytes\"}],\"name\":\"setValidKeyset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalDelayedMessagesRead\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateRollupAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x610180604052306080526202000060a05246610100526200002b62000115602090811b62002d7717901c565b1515610120523480156200003e57600080fd5b50604051620052be380380620052be8339810160408190526200006191620001c8565b838383838360e081815250506101205115620000a6576001600160a01b03831615620000a0576040516386657a5360e01b815260040160405180910390fd5b620000ef565b6001600160a01b038316620000ef576040516380fc2c0360e01b815260206004820152600a60248201526914995859195c8d0e0d0d60b21b604482015260640160405180910390fd5b6001600160a01b0390921660c052151561014052151561016052506200025b9350505050565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b1790529051600091829182916064916200015591906200022a565b600060405180830381855afa9150503d806000811462000192576040519150601f19603f3d011682016040523d82523d6000602084013e62000197565b606091505b5091509150818015620001ab575080516020145b9250505090565b80518015158114620001c357600080fd5b919050565b60008060008060808587031215620001df57600080fd5b845160208601519094506001600160a01b0381168114620001ff57600080fd5b92506200020f60408601620001b2565b91506200021f60608601620001b2565b905092959194509250565b6000825160005b818110156200024d576020818601810151858301520162000231565b506000920191825250919050565b60805160a05160c05160e05161010051610120516101405161016051614f5c620003626000396000818161043701528181610b86015281816113550152818161184401528181611ed701528181612339015281816128c201528181612a5701528181612f6b01526131ad0152600081816105f401528181610a450152818161331b01526139950152600081816126a3015281816132b90152613b7b015260008181612194015261360c01526000818161070e01528181613e640152613eb901526000818161058f01528181610ffd0152611e800152600081816111dd0152818161151101528181611d75015261208a01526000818161089301526122130152614f5c6000f3fe608060405234801561001057600080fd5b50600436106102f45760003560e01c80637fa3a40e11610191578063d1ce8da8116100e3578063e78cea9211610097578063edaafe2011610071578063edaafe2014610758578063f1981578146107e1578063f60a5091146107f457600080fd5b8063e78cea92146106f6578063e8eb1dc314610709578063ebea461d1461073057600080fd5b8063dd44e6e0116100c8578063dd44e6e014610690578063e0bc9729146106bc578063e5a358c8146106cf57600080fd5b8063d1ce8da81461066a578063d9dd67ab1461067d57600080fd5b806392d9f78211610145578063b31761f81161011f578063b31761f814610631578063cb23bcb514610644578063cc2a1a0c1461065757600080fd5b806392d9f782146105ef57806396cc5c7814610616578063a655d9371461061e57600080fd5b80638d910dde116101765780638d910dde1461058a5780638f111f3c146105c9578063917cf8ac146105dc57600080fd5b80637fa3a40e1461056e578063844208601461057757600080fd5b80633e5aa0821161024a5780636d46e987116101fe5780636f12b0c9116101d85780636f12b0c9146104e4578063715ea34b146104f757806371c3e6fe1461054b57600080fd5b80636d46e9871461049b5780636e620055146104be5780636e7df3e7146104d157600080fd5b806369cacded1161022f57806369cacded146104595780636ae71f121461046c5780636c8904501461047457600080fd5b80633e5aa0821461041f5780634b678a661461043257600080fd5b80631f956632116102ac57806327957a491161028657806327957a49146103dd5780632cbf74e5146103e55780632f3985a71461040c57600080fd5b80631f956632146103a45780631ff64790146103b7578063258f0495146103ca57600080fd5b80631637be48116102dd5780631637be481461035457806316af91a7146103875780631ad87e451461038f57600080fd5b806302c99275146102f957806306f130561461033e575b600080fd5b6103207f200000000000000000000000000000000000000000000000000000000000000081565b6040516001600160f81b031990911681526020015b60405180910390f35b6103466107ff565b604051908152602001610335565b610377610362366004614385565b60009081526008602052604090205460ff1690565b6040519015158152602001610335565b610320600081565b6103a261039d3660046144d2565b610889565b005b6103a26103b2366004614533565b610bb9565b6103a26103c536600461456c565b610ce5565b6103466103d8366004614385565b610e7d565b610346602881565b6103207f500000000000000000000000000000000000000000000000000000000000000081565b6103a261041a366004614589565b610eea565b6103a261042d3660046145a5565b610ffa565b6103777f000000000000000000000000000000000000000000000000000000000000000081565b6103a2610467366004614650565b6112e3565b6103a2611619565b6103207f080000000000000000000000000000000000000000000000000000000000000081565b6103776104a936600461456c565b60096020526000908152604090205460ff1681565b6103a26104cc366004614650565b6117f1565b6103a26104df366004614533565b6118a3565b6103a26104f23660046146de565b6119cf565b61052b610505366004614385565b60086020526000908152604090205460ff811690610100900467ffffffffffffffff1682565b60408051921515835267ffffffffffffffff909116602083015201610335565b61037761055936600461456c565b60036020526000908152604090205460ff1681565b61034660005481565b6103a2610585366004614385565b611a01565b6105b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610335565b6103a26105d7366004614749565b611b76565b6103a26105ea3660046147c6565b611e7d565b6103777f000000000000000000000000000000000000000000000000000000000000000081565b6103a2612191565b6103a261062c366004614589565b612209565b6103a261063f366004614822565b6123c7565b6002546105b1906001600160a01b031681565b600b546105b1906001600160a01b031681565b6103a2610678366004614888565b6124d6565b61034661068b366004614385565b612823565b6106a361069e3660046148ca565b6128b0565b60405167ffffffffffffffff9091168152602001610335565b6103a26106ca366004614749565b612913565b6103207f400000000000000000000000000000000000000000000000000000000000000081565b6001546105b1906001600160a01b031681565b6103467f000000000000000000000000000000000000000000000000000000000000000081565b61073861299b565b604080519485526020850193909352918301526060820152608001610335565b600c54600d5461079e9167ffffffffffffffff8082169268010000000000000000808404831693600160801b8104841693600160c01b9091048116928082169290041686565b6040805167ffffffffffffffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c001610335565b6103a26107ef3660046148f6565b6129d4565b610320600160ff1b81565b600154604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa158015610860573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610884919061495e565b905090565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001546001600160a01b031615610989576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383166109c9576040517f1ad0f74300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000836001600160a01b031663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a25575060408051601f3d908101601f19168201909252610a2291810190614977565b60015b15610a40576001600160a01b03811615610a3e57600191505b505b8015157f0000000000000000000000000000000000000000000000000000000000000000151514610a9d576040517fc3e31f8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038616908117909155604080517fcb23bcb5000000000000000000000000000000000000000000000000000000008152905163cb23bcb5916004808201926020929091908290030181865afa158015610b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b409190614977565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055610b84610b7f36859003850185614822565b612e3d565b7f000000000000000000000000000000000000000000000000000000000000000015610bb357610bb382612f69565b50505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c309190614977565b6001600160a01b0316336001600160a01b031614158015610c5c5750600b546001600160a01b03163314155b15610c95576040517f660b3b4200000000000000000000000000000000000000000000000000000000815233600482015260240161093d565b6001600160a01b038216600090815260096020526040808220805460ff1916841515179055516004917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5c9190614977565b6001600160a01b0316336001600160a01b031614610e265760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de19190614977565b6040517f23295f0e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529116602482015260440161093d565b600b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556040516005907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b600081815260086020908152604080832081518083019092525460ff811615158252610100900467ffffffffffffffff16918101829052908203610ed65760405162f20c5d60e01b81526004810184905260240161093d565b6020015167ffffffffffffffff1692915050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f619190614977565b6001600160a01b0316336001600160a01b031614610fc25760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b610fcb81612f69565b6040516006907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b827f000000000000000000000000000000000000000000000000000000000000000060005a3360009081526003602052604090205490915060ff1661105257604051632dd9fc9760e01b815260040160405180910390fd5b61105b876131a9565b1561107957604051630e5da8fb60e01b815260040160405180910390fd5b611085888887876131f1565b6001600160a01b038316156112d95736600060206110a483601f6149aa565b6110ae91906149bd565b90506102006110be600283614ac3565b6110c891906149bd565b6110d3826006614ad2565b6110dd91906149aa565b6110e790846149aa565b92503332146110f9576000915061122c565b6001600160a01b0384161561122c57836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561116757506040513d6000823e601f3d908101601f191682016040526111649190810190614ae9565b60015b1561122c5780511561122a576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d7919061495e565b905048817f000000000000000000000000000000000000000000000000000000000000000084516112089190614ad2565b6112129190614ad2565b61121c91906149bd565b61122690866149aa565b9450505b505b846001600160a01b031663e3db8a49335a6112479087614b8f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af11580156112b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d59190614ba2565b5050505b5050505050505050565b836000805a9050333214611323576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff1661135357604051632dd9fc9760e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061139157604051631192b39960e31b815260040160405180910390fd5b6113a9886113a436879003870187614bbf565b61334d565b6113b98b8b8b8b8a8a600161345a565b6001600160a01b038316156112d55736600060206113d883601f6149aa565b6113e291906149bd565b90506102006113f2600283614ac3565b6113fc91906149bd565b611407826006614ad2565b61141191906149aa565b61141b90846149aa565b925033321461142d5760009150611560565b6001600160a01b0384161561156057836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561149b57506040513d6000823e601f3d908101601f191682016040526114989190810190614ae9565b60015b156115605780511561155e576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150b919061495e565b905048817f0000000000000000000000000000000000000000000000000000000000000000845161153c9190614ad2565b6115469190614ad2565b61155091906149bd565b61155a90866149aa565b9450505b505b846001600160a01b031663e3db8a49335a61157b9087614b8f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af11580156115e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116099190614ba2565b5050505050505050505050505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561166c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116909190614977565b6001600160a01b0316336001600160a01b0316146116f15760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b600154604080517fcb23bcb500000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cb23bcb59160048083019260209291908290030181865afa158015611754573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117789190614977565b6002549091506001600160a01b038083169116036117c2576040517fd054909f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b836000805a3360009081526003602052604090205490915060ff1615801561182457506002546001600160a01b03163314155b1561184257604051632dd9fc9760e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061188057604051631192b39960e31b815260040160405180910390fd5b611893886113a436879003870187614bbf565b6113b98b8b8b8b8a8a600061345a565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191a9190614977565b6001600160a01b0316336001600160a01b0316141580156119465750600b546001600160a01b03163314155b1561197f576040517f660b3b4200000000000000000000000000000000000000000000000000000000815233600482015260240161093d565b6001600160a01b038216600090815260036020526040808220805460ff1916841515179055516001917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b6040517fc73b9d7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a789190614977565b6001600160a01b0316336001600160a01b031614611ad95760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b60008181526008602052604090205460ff16611b0a5760405162f20c5d60e01b81526004810182905260240161093d565b600081815260086020526040808220805460ff191690555182917f5cb4218b272fd214168ac43e90fb4d05d6c36f0b17ffb4c2dd07c234d744eb2a91a26040516003907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b826000805a9050333214611bb6576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff16611be657604051632dd9fc9760e01b815260040160405180910390fd5b611bef876131a9565b15611c0d57604051630e5da8fb60e01b815260040160405180910390fd5b611c1d8a8a8a8a8989600161345a565b6001600160a01b03831615611e71573660006020611c3c83601f6149aa565b611c4691906149bd565b9050610200611c56600283614ac3565b611c6091906149bd565b611c6b826006614ad2565b611c7591906149aa565b611c7f90846149aa565b9250333214611c915760009150611dc4565b6001600160a01b03841615611dc457836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa925050508015611cff57506040513d6000823e601f3d908101601f19168201604052611cfc9190810190614ae9565b60015b15611dc457805115611dc2576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6f919061495e565b905048817f00000000000000000000000000000000000000000000000000000000000000008451611da09190614ad2565b611daa9190614ad2565b611db491906149bd565b611dbe90866149aa565b9450505b505b846001600160a01b031663e3db8a49335a611ddf9087614b8f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af1158015611e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6d9190614ba2565b5050505b50505050505050505050565b837f000000000000000000000000000000000000000000000000000000000000000060005a3360009081526003602052604090205490915060ff16611ed557604051632dd9fc9760e01b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000611f1357604051631192b39960e31b815260040160405180910390fd5b611f26886113a436879003870187614bbf565b611f32898988886131f1565b6001600160a01b03831615612186573660006020611f5183601f6149aa565b611f5b91906149bd565b9050610200611f6b600283614ac3565b611f7591906149bd565b611f80826006614ad2565b611f8a91906149aa565b611f9490846149aa565b9250333214611fa657600091506120d9565b6001600160a01b038416156120d957836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561201457506040513d6000823e601f3d908101601f191682016040526120119190810190614ae9565b60015b156120d9578051156120d7576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612084919061495e565b905048817f000000000000000000000000000000000000000000000000000000000000000084516120b59190614ad2565b6120bf9190614ad2565b6120c991906149bd565b6120d390866149aa565b9450505b505b846001600160a01b031663e3db8a49335a6120f49087614b8f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af115801561215e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121829190614ba2565b5050505b505050505050505050565b467f0000000000000000000000000000000000000000000000000000000000000000036121ea576040517fa301bb0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7801000000000000000100000000000000010000000000000001600a55565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036122c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c0000000000000000000000000000000000000000606482015260840161093d565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b03821614612337576040517f23295f0e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038216602482015260440161093d565b7f000000000000000000000000000000000000000000000000000000000000000061237557604051631192b39960e31b815260040160405180910390fd5b600c5467ffffffffffffffff16156123b9576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123c283612f69565b505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561241a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243e9190614977565b6001600160a01b0316336001600160a01b03161461249f5760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b6124a881612e3d565b6040516000907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e908290a250565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254d9190614977565b6001600160a01b0316336001600160a01b0316146125ae5760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b600082826040516125c0929190614c6d565b6040519081900381207ffe000000000000000000000000000000000000000000000000000000000000006020830152602182015260410160408051601f1981840301815291905280516020909101209050600160ff1b8118620100008310612654576040517fb3d1f41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526008602052604090205460ff16156126a0576040517ffa2fddda0000000000000000000000000000000000000000000000000000000081526004810182905260240161093d565b437f00000000000000000000000000000000000000000000000000000000000000001561272d5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272a919061495e565b90505b6040805180820182526001815267ffffffffffffffff8381166020808401918252600087815260089091528490209251835491517fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000009092169015157fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff161761010091909216021790555182907fabca9b7986bc22ad0160eb0cb88ae75411eacfba4052af0b457a9335ef655722906127e89088908890614c7d565b60405180910390a26040516002907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a25050505050565b6001546040517f16bf5579000000000000000000000000000000000000000000000000000000008152600481018390526000916001600160a01b0316906316bf557990602401602060405180830381865afa158015612886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128aa919061495e565b92915050565b600a5460009067ffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000156129025760006128f3600c85613585565b90506128fe816135d4565b9150505b61290c8184614cac565b9392505050565b826000805a3360009081526003602052604090205490915060ff1615801561294657506002546001600160a01b03163314155b1561296457604051632dd9fc9760e01b815260040160405180910390fd5b61296d876131a9565b1561298b57604051630e5da8fb60e01b815260040160405180910390fd5b611c1d8a8a8a8a8989600061345a565b6000806000806000806000806129af613604565b67ffffffffffffffff9384169b50918316995082169750169450505050505b90919293565b6000548611612a0f576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612a458684612a2360208901896148ca565b612a3360408a0160208b016148ca565b612a3e60018d614b8f565b898861367b565b600a5490915067ffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000015612ab657612a93612a8b60208801886148ca565b600c90613720565b600c54612aa99067ffffffffffffffff166135d4565b67ffffffffffffffff1690505b4381612ac560208901896148ca565b67ffffffffffffffff16612ad991906149aa565b10612b10576040517fad3515d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001891115612b99576001546001600160a01b031663d5719dc2612b3760028c614b8f565b6040518263ffffffff1660e01b8152600401612b5591815260200190565b602060405180830381865afa158015612b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b96919061495e565b90505b60408051602080820184905281830186905282518083038401815260609092019092528051910120600180546001600160a01b03169063d5719dc290612bdf908d614b8f565b6040518263ffffffff1660e01b8152600401612bfd91815260200190565b602060405180830381865afa158015612c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c3e919061495e565b14612c75576040517f13947fd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080612c818b6137a6565b9150915060008b90506000600160009054906101000a90046001600160a01b03166001600160a01b0316635fca4a166040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d03919061495e565b9050806000808080612d1889888388806137eb565b93509350935093508083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548d6002604051612d5b9493929190614cea565b60405180910390a4505050505050505050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491612de39190614d83565b600060405180830381855afa9150503d8060008114612e1e576040519150601f19603f3d011682016040523d82523d6000602084013e612e23565b606091505b5091509150818015612e36575080516020145b9250505090565b805167ffffffffffffffff1080612e5f5750602081015167ffffffffffffffff105b80612e755750604081015167ffffffffffffffff105b80612e8b5750606081015167ffffffffffffffff105b15612ec2576040517f09cfba7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600a80546020840151604085015160609095015167ffffffffffffffff908116600160c01b0277ffffffffffffffffffffffffffffffffffffffffffffffff968216600160801b02969096166fffffffffffffffffffffffffffffffff92821668010000000000000000027fffffffffffffffffffffffffffffffff000000000000000000000000000000009094169190951617919091171691909117919091179055565b7f0000000000000000000000000000000000000000000000000000000000000000612fa757604051631192b39960e31b815260040160405180910390fd5b612fb0816139d4565b612fe6576040517fda1c8eb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c5467ffffffffffffffff16158061301257506020810151600c5467ffffffffffffffff9182169116115b1561303e576020810151600c805467ffffffffffffffff191667ffffffffffffffff9092169190911790555b8051600c5467ffffffffffffffff9182169116101561307b578051600c805467ffffffffffffffff191667ffffffffffffffff9092169190911790555b602081810151600c805484517fffffffffffffffff00000000000000000000000000000000ffffffffffffffff9091166801000000000000000067ffffffffffffffff948516027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1617600160801b91841691909102179055604080840151600d805467ffffffffffffffff1916919093161790915560005460015482517feca067ad000000000000000000000000000000000000000000000000000000008152925191936001600160a01b039091169263eca067ad92600480830193928290030181865afa158015613172573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613196919061495e565b036131a6576131a6600c43613720565b50565b60007f000000000000000000000000000000000000000000000000000000000000000080156131d9575060005482115b80156128aa57506131ea600c613a3c565b1592915050565b60008060006131ff86613a6f565b925092509250600080600080613219878b60008c8c6137eb565b93509350935093508a841415801561323357506000198b14155b15613274576040517fac7411c900000000000000000000000000000000000000000000000000000000815260048101859052602481018c905260440161093d565b80838c7f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548b60036040516132af9493929190614cea565b60405180910390a47f00000000000000000000000000000000000000000000000000000000000000001561330f576040517f86657a5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b333214801561333c57507f0000000000000000000000000000000000000000000000000000000000000000155b156112d5576112d587854888613b78565b60005482111561345657613361600c613dba565b1561345657600154600080546040517fd5719dc200000000000000000000000000000000000000000000000000000000815291926001600160a01b03169163d5719dc2916133b59160040190815260200190565b602060405180830381865afa1580156133d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133f6919061495e565b905061340b8183600001518460200151613deb565b613441576040517fc334542d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020820151604001516123c290600c90613720565b5050565b600080613468888888613e30565b9150915060008060008061348c868b89613483576000613485565b8d5b8c8c6137eb565b93509350935093508c84141580156134a657506000198d14155b156134e7576040517fac7411c900000000000000000000000000000000000000000000000000000000815260048101859052602481018e905260440161093d565b8083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548a8d61351c57600161351f565b60005b60405161352f9493929190614cea565b60405180910390a486611e6d57837ffe325ca1efe4c5c1062c981c3ee74b781debe4ea9440306a96d2a55759c66c208d8d60405161356e929190614c7d565b60405180910390a250505050505050505050505050565b8154600183015460009161290c9167ffffffffffffffff600160c01b8304811692868216928282169268010000000000000000808304821693600160801b81048316939190048216911661403e565b600a5460009067ffffffffffffffff9081169083161061360057600a5467ffffffffffffffff166128aa565b5090565b6000808080467f000000000000000000000000000000000000000000000000000000000000000014613641575060019250829150819050806129ce565b5050600a5467ffffffffffffffff808216935068010000000000000000820481169250600160801b8204811691600160c01b9004166129ce565b6040516001600160f81b031960f889901b1660208201526bffffffffffffffffffffffff19606088901b1660218201527fffffffffffffffff00000000000000000000000000000000000000000000000060c087811b8216603584015286901b16603d82015260458101849052606581018390526085810182905260009060a5016040516020818303038152906040528051906020012090505b979650505050505050565b61372a8282613585565b825467ffffffffffffffff928316600160c01b0277ffffffffffffffffffffffffffffffff000000000000000090911691831691909117178255600190910180544390921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b60408051608081018252600080825260208201819052918101829052606081018290526000806137d585614105565b8151602090920191909120969095509350505050565b60008060008060005488101561382d576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663eca067ad6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138a4919061495e565b8811156138dd576040517f925f8bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f86598a56000000000000000000000000000000000000000000000000000000008152600481018b9052602481018a905260448101889052606481018790526001600160a01b03909116906386598a56906084016080604051808303816000875af1158015613956573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061397a9190614d9f565b60008c90559296509094509250905086158015906139b657507f0000000000000000000000000000000000000000000000000000000000000000155b156139c8576139c88985486000613b78565b95509550955095915050565b805160009067ffffffffffffffff16158015906139fe5750602082015167ffffffffffffffff1615155b8015613a1a5750612710826040015167ffffffffffffffff1611155b80156128aa5750506020810151905167ffffffffffffffff9182169116111590565b805460009067ffffffffffffffff600160801b8204811691613a6791600160c01b9091041643614b8f565b111592915050565b604080516080810182526000808252602082018190529181018290526060810182905260408051606081018252600080825260208201819052918101829052600080613aba87614105565b9092509050633b9aca0060006003613ad56202000084614ad2565b613adf9190614ad2565b60405190915084907f500000000000000000000000000000000000000000000000000000000000000090613b17908890602001614dd5565b60408051601f1981840301815290829052613b36939291602001614e09565b604051602081830303815290604052805190602001208360004811613b5c576000613b66565b613b6648846149bd565b97509750975050505050509193909250565b327f000000000000000000000000000000000000000000000000000000000000000015613c1e576000606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c04919061495e565b9050613c1048826149bd565b613c1a90846149aa565b9250505b67ffffffffffffffff821115613c60576040517f04d5501200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080514260208201526bffffffffffffffffffffffff19606084901b16918101919091526054810186905260748101859052609481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c084901b1660b482015260009060bc0160408051808303601f1901815290829052600154815160208301207f7a88b1070000000000000000000000000000000000000000000000000000000084526001600160a01b0386811660048601526024850191909152919350600092911690637a88b107906044016020604051808303816000875af1158015613d53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d77919061495e565b9050807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b83604051613da99190614e4c565b60405180910390a250505050505050565b6000613dc582613a3c565b15806128aa5750505467ffffffffffffffff680100000000000000008204811691161090565b6000613e2683613dfa846141dd565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b9093149392505050565b60408051608081018252600080825260208201819052918101829052606081018290526000613e608560286149aa565b90507f0000000000000000000000000000000000000000000000000000000000000000811115613ee5576040517f4634691b000000000000000000000000000000000000000000000000000000008152600481018290527f0000000000000000000000000000000000000000000000000000000000000000602482015260440161093d565b600080613ef186614105565b9092509050861561400457613f2188886000818110613f1257613f12614cd4565b9050013560f81c60f81b61420a565b613f795787876000818110613f3857613f38614cd4565b6040517f6b3333560000000000000000000000000000000000000000000000000000000081529201356001600160f81b03191660048301525060240161093d565b600160ff1b8888600081613f8f57613f8f614cd4565b6001600160f81b031992013592909216161580159150613fb0575060218710155b15614004576000613fc5602160018a8c614e7f565b613fce91614ea9565b60008181526008602052604090205490915060ff166140025760405162f20c5d60e01b81526004810182905260240161093d565b505b81888860405160200161401993929190614ec7565b60408051601f1981840301815291905280516020909101209890975095505050505050565b60008088881161404f576000614059565b6140598989614b8f565b9050600089871161406b576000614075565b6140758a88614b8f565b90506127106140848584614ad2565b61408e91906149bd565b61409890896149aa565b975060008682116140aa5760006140b4565b6140b48783614b8f565b9050828111156140c15750815b808911156140f6576140d3818a614b8f565b9850868911156140f6578589116140ea57886140ec565b855b9350505050613715565b50949998505050505050505050565b6040805160808101825260008082526020820181905291810182905260608082018390529161413261429d565b905060008160000151826020015183604001518460600151886040516020016141b295949392919060c095861b7fffffffffffffffff000000000000000000000000000000000000000000000000908116825294861b8516600882015292851b8416601084015290841b8316601883015290921b16602082015260280190565b604051602081830303815290604052905060288151146141d4576141d4614eef565b94909350915050565b60006128aa826000015183602001518460400151856060015186608001518760a001518860c0015161367b565b60006001600160f81b03198216158061423057506001600160f81b03198216600160ff1b145b8061426457506001600160f81b031982167f8800000000000000000000000000000000000000000000000000000000000000145b806128aa57506001600160f81b031982167f20000000000000000000000000000000000000000000000000000000000000001492915050565b6040805160808101825260008082526020820181905291810182905260608101919091526040805160808101825260008082526020820181905291810182905260608101919091526000806000806142f3613604565b93509350935093508167ffffffffffffffff16421115614324576143178242614f05565b67ffffffffffffffff1685525b61432e8142614cac565b67ffffffffffffffff90811660208701528416431115614362576143528443614f05565b67ffffffffffffffff1660408601525b61436c8343614cac565b67ffffffffffffffff1660608601525092949350505050565b60006020828403121561439757600080fd5b5035919050565b6001600160a01b03811681146131a657600080fd5b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156143ec576143ec6143b3565b60405290565b60405160e0810167ffffffffffffffff811182821017156143ec576143ec6143b3565b604051601f8201601f1916810167ffffffffffffffff8111828210171561443e5761443e6143b3565b604052919050565b803567ffffffffffffffff8116811461445e57600080fd5b919050565b60006060828403121561447557600080fd5b6040516060810181811067ffffffffffffffff82111715614498576144986143b3565b6040529050806144a783614446565b81526144b560208401614446565b60208201526144c660408401614446565b60408201525092915050565b60008060008385036101008112156144e957600080fd5b84356144f48161439e565b93506080601f198201121561450857600080fd5b5060208401915061451c8560a08601614463565b90509250925092565b80151581146131a657600080fd5b6000806040838503121561454657600080fd5b82356145518161439e565b9150602083013561456181614525565b809150509250929050565b60006020828403121561457e57600080fd5b813561290c8161439e565b60006060828403121561459b57600080fd5b61290c8383614463565b600080600080600060a086880312156145bd57600080fd5b853594506020860135935060408601356145d68161439e565b94979396509394606081013594506080013592915050565b60008083601f84011261460057600080fd5b50813567ffffffffffffffff81111561461857600080fd5b60208301915083602082850101111561463057600080fd5b9250929050565b6000610100828403121561464a57600080fd5b50919050565b6000806000806000806000806101c0898b03121561466d57600080fd5b88359750602089013567ffffffffffffffff81111561468b57600080fd5b6146978b828c016145ee565b9098509650506040890135945060608901356146b28161439e565b93506080890135925060a089013591506146cf8a60c08b01614637565b90509295985092959890939650565b6000806000806000608086880312156146f657600080fd5b85359450602086013567ffffffffffffffff81111561471457600080fd5b614720888289016145ee565b90955093505060408601359150606086013561473b8161439e565b809150509295509295909350565b600080600080600080600060c0888a03121561476457600080fd5b87359650602088013567ffffffffffffffff81111561478257600080fd5b61478e8a828b016145ee565b9097509550506040880135935060608801356147a98161439e565b969995985093969295946080840135945060a09093013592915050565b6000806000806000806101a087890312156147e057600080fd5b863595506020870135945060408701356147f98161439e565b935060608701359250608087013591506148168860a08901614637565b90509295509295509295565b60006080828403121561483457600080fd5b6040516080810181811067ffffffffffffffff82111715614857576148576143b3565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b6000806020838503121561489b57600080fd5b823567ffffffffffffffff8111156148b257600080fd5b6148be858286016145ee565b90969095509350505050565b6000602082840312156148dc57600080fd5b61290c82614446565b803560ff8116811461445e57600080fd5b60008060008060008060e0878903121561490f57600080fd5b8635955061491f602088016148e5565b9450608087018881111561493257600080fd5b60408801945035925060a08701356149498161439e565b8092505060c087013590509295509295509295565b60006020828403121561497057600080fd5b5051919050565b60006020828403121561498957600080fd5b815161290c8161439e565b634e487b7160e01b600052601160045260246000fd5b808201808211156128aa576128aa614994565b6000826149da57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115614a1a578160001904821115614a0057614a00614994565b80851615614a0d57918102915b93841c93908002906149e4565b509250929050565b600082614a31575060016128aa565b81614a3e575060006128aa565b8160018114614a545760028114614a5e57614a7a565b60019150506128aa565b60ff841115614a6f57614a6f614994565b50506001821b6128aa565b5060208310610133831016604e8410600b8410161715614a9d575081810a6128aa565b614aa783836149df565b8060001904821115614abb57614abb614994565b029392505050565b600061290c60ff841683614a22565b80820281158282048414176128aa576128aa614994565b60006020808385031215614afc57600080fd5b825167ffffffffffffffff80821115614b1457600080fd5b818501915085601f830112614b2857600080fd5b815181811115614b3a57614b3a6143b3565b8060051b9150614b4b848301614415565b8181529183018401918481019088841115614b6557600080fd5b938501935b83851015614b8357845182529385019390850190614b6a565b98975050505050505050565b818103818111156128aa576128aa614994565b600060208284031215614bb457600080fd5b815161290c81614525565b6000818303610100811215614bd357600080fd5b614bdb6143c9565b8335815260e0601f1983011215614bf157600080fd5b614bf96143f2565b9150614c07602085016148e5565b82526040840135614c178161439e565b6020830152614c2860608501614446565b6040830152614c3960808501614446565b606083015260a0840135608083015260c084013560a083015260e084013560c0830152816020820152809250505092915050565b8183823760009101908152919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b67ffffffffffffffff818116838216019080821115614ccd57614ccd614994565b5092915050565b634e487b7160e01b600052603260045260246000fd5b600060e08201905085825284602083015267ffffffffffffffff8085511660408401528060208601511660608401528060408601511660808401528060608601511660a08401525060048310614d5057634e487b7160e01b600052602160045260246000fd5b8260c083015295945050505050565b60005b83811015614d7a578181015183820152602001614d62565b50506000910152565b60008251614d95818460208701614d5f565b9190910192915050565b60008060008060808587031215614db557600080fd5b505082516020840151604085015160609095015191969095509092509050565b60008183825b6003811015614dfa578151835260209283019290910190600101614ddb565b50505060608201905092915050565b60008451614e1b818460208901614d5f565b6001600160f81b031985169083019081528351614e3f816001840160208801614d5f565b0160010195945050505050565b6020815260008251806020840152614e6b816040850160208701614d5f565b601f01601f19169190910160400192915050565b60008085851115614e8f57600080fd5b83861115614e9c57600080fd5b5050820193919092039150565b803560208310156128aa57600019602084900360031b1b1692915050565b60008451614ed9818460208901614d5f565b8201838582376000930192835250909392505050565b634e487b7160e01b600052600160045260246000fd5b67ffffffffffffffff828116828216039080821115614ccd57614ccd61499456fea2646970667358221220ed05411fd0a758d2dde9e4da6124cc2b58aafbf36ea88cdd264555d81d807dbf64736f6c63430008110033", + Bin: "0x610180604052306080526202000060a05246610100526200002b62000115602090811b62002d7717901c565b1515610120523480156200003e57600080fd5b50604051620052be380380620052be8339810160408190526200006191620001c8565b838383838360e081815250506101205115620000a6576001600160a01b03831615620000a0576040516386657a5360e01b815260040160405180910390fd5b620000ef565b6001600160a01b038316620000ef576040516380fc2c0360e01b815260206004820152600a60248201526914995859195c8d0e0d0d60b21b604482015260640160405180910390fd5b6001600160a01b0390921660c052151561014052151561016052506200025b9350505050565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b1790529051600091829182916064916200015591906200022a565b600060405180830381855afa9150503d806000811462000192576040519150601f19603f3d011682016040523d82523d6000602084013e62000197565b606091505b5091509150818015620001ab575080516020145b9250505090565b80518015158114620001c357600080fd5b919050565b60008060008060808587031215620001df57600080fd5b845160208601519094506001600160a01b0381168114620001ff57600080fd5b92506200020f60408601620001b2565b91506200021f60608601620001b2565b905092959194509250565b6000825160005b818110156200024d576020818601810151858301520162000231565b506000920191825250919050565b60805160a05160c05160e05161010051610120516101405161016051614f5c620003626000396000818161043701528181610b86015281816113550152818161184401528181611ed701528181612339015281816128c201528181612a5701528181612f6b01526131ad0152600081816105f401528181610a450152818161331b01526139950152600081816126a3015281816132b90152613b7b015260008181612194015261360c01526000818161070e01528181613e640152613eb901526000818161058f01528181610ffd0152611e800152600081816111dd0152818161151101528181611d75015261208a01526000818161089301526122130152614f5c6000f3fe608060405234801561001057600080fd5b50600436106102f45760003560e01c80637fa3a40e11610191578063d1ce8da8116100e3578063e78cea9211610097578063edaafe2011610071578063edaafe2014610758578063f1981578146107e1578063f60a5091146107f457600080fd5b8063e78cea92146106f6578063e8eb1dc314610709578063ebea461d1461073057600080fd5b8063dd44e6e0116100c8578063dd44e6e014610690578063e0bc9729146106bc578063e5a358c8146106cf57600080fd5b8063d1ce8da81461066a578063d9dd67ab1461067d57600080fd5b806392d9f78211610145578063b31761f81161011f578063b31761f814610631578063cb23bcb514610644578063cc2a1a0c1461065757600080fd5b806392d9f782146105ef57806396cc5c7814610616578063a655d9371461061e57600080fd5b80638d910dde116101765780638d910dde1461058a5780638f111f3c146105c9578063917cf8ac146105dc57600080fd5b80637fa3a40e1461056e578063844208601461057757600080fd5b80633e5aa0821161024a5780636d46e987116101fe5780636f12b0c9116101d85780636f12b0c9146104e4578063715ea34b146104f757806371c3e6fe1461054b57600080fd5b80636d46e9871461049b5780636e620055146104be5780636e7df3e7146104d157600080fd5b806369cacded1161022f57806369cacded146104595780636ae71f121461046c5780636c8904501461047457600080fd5b80633e5aa0821461041f5780634b678a661461043257600080fd5b80631f956632116102ac57806327957a491161028657806327957a49146103dd5780632cbf74e5146103e55780632f3985a71461040c57600080fd5b80631f956632146103a45780631ff64790146103b7578063258f0495146103ca57600080fd5b80631637be48116102dd5780631637be481461035457806316af91a7146103875780631ad87e451461038f57600080fd5b806302c99275146102f957806306f130561461033e575b600080fd5b6103207f200000000000000000000000000000000000000000000000000000000000000081565b6040516001600160f81b031990911681526020015b60405180910390f35b6103466107ff565b604051908152602001610335565b610377610362366004614385565b60009081526008602052604090205460ff1690565b6040519015158152602001610335565b610320600081565b6103a261039d3660046144d2565b610889565b005b6103a26103b2366004614533565b610bb9565b6103a26103c536600461456c565b610ce5565b6103466103d8366004614385565b610e7d565b610346602881565b6103207f500000000000000000000000000000000000000000000000000000000000000081565b6103a261041a366004614589565b610eea565b6103a261042d3660046145a5565b610ffa565b6103777f000000000000000000000000000000000000000000000000000000000000000081565b6103a2610467366004614650565b6112e3565b6103a2611619565b6103207f080000000000000000000000000000000000000000000000000000000000000081565b6103776104a936600461456c565b60096020526000908152604090205460ff1681565b6103a26104cc366004614650565b6117f1565b6103a26104df366004614533565b6118a3565b6103a26104f23660046146de565b6119cf565b61052b610505366004614385565b60086020526000908152604090205460ff811690610100900467ffffffffffffffff1682565b60408051921515835267ffffffffffffffff909116602083015201610335565b61037761055936600461456c565b60036020526000908152604090205460ff1681565b61034660005481565b6103a2610585366004614385565b611a01565b6105b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610335565b6103a26105d7366004614749565b611b76565b6103a26105ea3660046147c6565b611e7d565b6103777f000000000000000000000000000000000000000000000000000000000000000081565b6103a2612191565b6103a261062c366004614589565b612209565b6103a261063f366004614822565b6123c7565b6002546105b1906001600160a01b031681565b600b546105b1906001600160a01b031681565b6103a2610678366004614888565b6124d6565b61034661068b366004614385565b612823565b6106a361069e3660046148ca565b6128b0565b60405167ffffffffffffffff9091168152602001610335565b6103a26106ca366004614749565b612913565b6103207f400000000000000000000000000000000000000000000000000000000000000081565b6001546105b1906001600160a01b031681565b6103467f000000000000000000000000000000000000000000000000000000000000000081565b61073861299b565b604080519485526020850193909352918301526060820152608001610335565b600c54600d5461079e9167ffffffffffffffff8082169268010000000000000000808404831693600160801b8104841693600160c01b9091048116928082169290041686565b6040805167ffffffffffffffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c001610335565b6103a26107ef3660046148f6565b6129d4565b610320600160ff1b81565b600154604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa158015610860573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610884919061495e565b905090565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001546001600160a01b031615610989576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383166109c9576040517f1ad0f74300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000836001600160a01b031663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a25575060408051601f3d908101601f19168201909252610a2291810190614977565b60015b15610a40576001600160a01b03811615610a3e57600191505b505b8015157f0000000000000000000000000000000000000000000000000000000000000000151514610a9d576040517fc3e31f8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038616908117909155604080517fcb23bcb5000000000000000000000000000000000000000000000000000000008152905163cb23bcb5916004808201926020929091908290030181865afa158015610b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b409190614977565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055610b84610b7f36859003850185614822565b612e3d565b7f000000000000000000000000000000000000000000000000000000000000000015610bb357610bb382612f69565b50505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c309190614977565b6001600160a01b0316336001600160a01b031614158015610c5c5750600b546001600160a01b03163314155b15610c95576040517f660b3b4200000000000000000000000000000000000000000000000000000000815233600482015260240161093d565b6001600160a01b038216600090815260096020526040808220805460ff1916841515179055516004917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5c9190614977565b6001600160a01b0316336001600160a01b031614610e265760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de19190614977565b6040517f23295f0e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529116602482015260440161093d565b600b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556040516005907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b600081815260086020908152604080832081518083019092525460ff811615158252610100900467ffffffffffffffff16918101829052908203610ed65760405162f20c5d60e01b81526004810184905260240161093d565b6020015167ffffffffffffffff1692915050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f619190614977565b6001600160a01b0316336001600160a01b031614610fc25760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b610fcb81612f69565b6040516006907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b827f000000000000000000000000000000000000000000000000000000000000000060005a3360009081526003602052604090205490915060ff1661105257604051632dd9fc9760e01b815260040160405180910390fd5b61105b876131a9565b1561107957604051630e5da8fb60e01b815260040160405180910390fd5b611085888887876131f1565b6001600160a01b038316156112d95736600060206110a483601f6149aa565b6110ae91906149bd565b90506102006110be600283614ac3565b6110c891906149bd565b6110d3826006614ad2565b6110dd91906149aa565b6110e790846149aa565b92503332146110f9576000915061122c565b6001600160a01b0384161561122c57836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561116757506040513d6000823e601f3d908101601f191682016040526111649190810190614ae9565b60015b1561122c5780511561122a576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d7919061495e565b905048817f000000000000000000000000000000000000000000000000000000000000000084516112089190614ad2565b6112129190614ad2565b61121c91906149bd565b61122690866149aa565b9450505b505b846001600160a01b031663e3db8a49335a6112479087614b8f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af11580156112b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d59190614ba2565b5050505b5050505050505050565b836000805a9050333214611323576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff1661135357604051632dd9fc9760e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061139157604051631192b39960e31b815260040160405180910390fd5b6113a9886113a436879003870187614bbf565b61334d565b6113b98b8b8b8b8a8a600161345a565b6001600160a01b038316156112d55736600060206113d883601f6149aa565b6113e291906149bd565b90506102006113f2600283614ac3565b6113fc91906149bd565b611407826006614ad2565b61141191906149aa565b61141b90846149aa565b925033321461142d5760009150611560565b6001600160a01b0384161561156057836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561149b57506040513d6000823e601f3d908101601f191682016040526114989190810190614ae9565b60015b156115605780511561155e576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150b919061495e565b905048817f0000000000000000000000000000000000000000000000000000000000000000845161153c9190614ad2565b6115469190614ad2565b61155091906149bd565b61155a90866149aa565b9450505b505b846001600160a01b031663e3db8a49335a61157b9087614b8f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af11580156115e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116099190614ba2565b5050505050505050505050505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561166c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116909190614977565b6001600160a01b0316336001600160a01b0316146116f15760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b600154604080517fcb23bcb500000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cb23bcb59160048083019260209291908290030181865afa158015611754573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117789190614977565b6002549091506001600160a01b038083169116036117c2576040517fd054909f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b836000805a3360009081526003602052604090205490915060ff1615801561182457506002546001600160a01b03163314155b1561184257604051632dd9fc9760e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061188057604051631192b39960e31b815260040160405180910390fd5b611893886113a436879003870187614bbf565b6113b98b8b8b8b8a8a600061345a565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191a9190614977565b6001600160a01b0316336001600160a01b0316141580156119465750600b546001600160a01b03163314155b1561197f576040517f660b3b4200000000000000000000000000000000000000000000000000000000815233600482015260240161093d565b6001600160a01b038216600090815260036020526040808220805460ff1916841515179055516001917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b6040517fc73b9d7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a789190614977565b6001600160a01b0316336001600160a01b031614611ad95760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b60008181526008602052604090205460ff16611b0a5760405162f20c5d60e01b81526004810182905260240161093d565b600081815260086020526040808220805460ff191690555182917f5cb4218b272fd214168ac43e90fb4d05d6c36f0b17ffb4c2dd07c234d744eb2a91a26040516003907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b826000805a9050333214611bb6576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff16611be657604051632dd9fc9760e01b815260040160405180910390fd5b611bef876131a9565b15611c0d57604051630e5da8fb60e01b815260040160405180910390fd5b611c1d8a8a8a8a8989600161345a565b6001600160a01b03831615611e71573660006020611c3c83601f6149aa565b611c4691906149bd565b9050610200611c56600283614ac3565b611c6091906149bd565b611c6b826006614ad2565b611c7591906149aa565b611c7f90846149aa565b9250333214611c915760009150611dc4565b6001600160a01b03841615611dc457836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa925050508015611cff57506040513d6000823e601f3d908101601f19168201604052611cfc9190810190614ae9565b60015b15611dc457805115611dc2576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6f919061495e565b905048817f00000000000000000000000000000000000000000000000000000000000000008451611da09190614ad2565b611daa9190614ad2565b611db491906149bd565b611dbe90866149aa565b9450505b505b846001600160a01b031663e3db8a49335a611ddf9087614b8f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af1158015611e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6d9190614ba2565b5050505b50505050505050505050565b837f000000000000000000000000000000000000000000000000000000000000000060005a3360009081526003602052604090205490915060ff16611ed557604051632dd9fc9760e01b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000611f1357604051631192b39960e31b815260040160405180910390fd5b611f26886113a436879003870187614bbf565b611f32898988886131f1565b6001600160a01b03831615612186573660006020611f5183601f6149aa565b611f5b91906149bd565b9050610200611f6b600283614ac3565b611f7591906149bd565b611f80826006614ad2565b611f8a91906149aa565b611f9490846149aa565b9250333214611fa657600091506120d9565b6001600160a01b038416156120d957836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561201457506040513d6000823e601f3d908101601f191682016040526120119190810190614ae9565b60015b156120d9578051156120d7576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612084919061495e565b905048817f000000000000000000000000000000000000000000000000000000000000000084516120b59190614ad2565b6120bf9190614ad2565b6120c991906149bd565b6120d390866149aa565b9450505b505b846001600160a01b031663e3db8a49335a6120f49087614b8f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af115801561215e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121829190614ba2565b5050505b505050505050505050565b467f0000000000000000000000000000000000000000000000000000000000000000036121ea576040517fa301bb0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7801000000000000000100000000000000010000000000000001600a55565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036122c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c0000000000000000000000000000000000000000606482015260840161093d565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b03821614612337576040517f23295f0e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038216602482015260440161093d565b7f000000000000000000000000000000000000000000000000000000000000000061237557604051631192b39960e31b815260040160405180910390fd5b600c5467ffffffffffffffff16156123b9576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123c283612f69565b505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561241a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243e9190614977565b6001600160a01b0316336001600160a01b03161461249f5760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b6124a881612e3d565b6040516000907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e908290a250565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254d9190614977565b6001600160a01b0316336001600160a01b0316146125ae5760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dbd573d6000803e3d6000fd5b600082826040516125c0929190614c6d565b6040519081900381207ffe000000000000000000000000000000000000000000000000000000000000006020830152602182015260410160408051601f1981840301815291905280516020909101209050600160ff1b8118620100008310612654576040517fb3d1f41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526008602052604090205460ff16156126a0576040517ffa2fddda0000000000000000000000000000000000000000000000000000000081526004810182905260240161093d565b437f00000000000000000000000000000000000000000000000000000000000000001561272d5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272a919061495e565b90505b6040805180820182526001815267ffffffffffffffff8381166020808401918252600087815260089091528490209251835491517fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000009092169015157fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff161761010091909216021790555182907fabca9b7986bc22ad0160eb0cb88ae75411eacfba4052af0b457a9335ef655722906127e89088908890614c7d565b60405180910390a26040516002907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a25050505050565b6001546040517f16bf5579000000000000000000000000000000000000000000000000000000008152600481018390526000916001600160a01b0316906316bf557990602401602060405180830381865afa158015612886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128aa919061495e565b92915050565b600a5460009067ffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000156129025760006128f3600c85613585565b90506128fe816135d4565b9150505b61290c8184614cac565b9392505050565b826000805a3360009081526003602052604090205490915060ff1615801561294657506002546001600160a01b03163314155b1561296457604051632dd9fc9760e01b815260040160405180910390fd5b61296d876131a9565b1561298b57604051630e5da8fb60e01b815260040160405180910390fd5b611c1d8a8a8a8a8989600061345a565b6000806000806000806000806129af613604565b67ffffffffffffffff9384169b50918316995082169750169450505050505b90919293565b6000548611612a0f576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612a458684612a2360208901896148ca565b612a3360408a0160208b016148ca565b612a3e60018d614b8f565b898861367b565b600a5490915067ffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000015612ab657612a93612a8b60208801886148ca565b600c90613720565b600c54612aa99067ffffffffffffffff166135d4565b67ffffffffffffffff1690505b4381612ac560208901896148ca565b67ffffffffffffffff16612ad991906149aa565b10612b10576040517fad3515d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001891115612b99576001546001600160a01b031663d5719dc2612b3760028c614b8f565b6040518263ffffffff1660e01b8152600401612b5591815260200190565b602060405180830381865afa158015612b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b96919061495e565b90505b60408051602080820184905281830186905282518083038401815260609092019092528051910120600180546001600160a01b03169063d5719dc290612bdf908d614b8f565b6040518263ffffffff1660e01b8152600401612bfd91815260200190565b602060405180830381865afa158015612c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c3e919061495e565b14612c75576040517f13947fd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080612c818b6137a6565b9150915060008b90506000600160009054906101000a90046001600160a01b03166001600160a01b0316635fca4a166040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d03919061495e565b9050806000808080612d1889888388806137eb565b93509350935093508083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548d6002604051612d5b9493929190614cea565b60405180910390a4505050505050505050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491612de39190614d83565b600060405180830381855afa9150503d8060008114612e1e576040519150601f19603f3d011682016040523d82523d6000602084013e612e23565b606091505b5091509150818015612e36575080516020145b9250505090565b805167ffffffffffffffff1080612e5f5750602081015167ffffffffffffffff105b80612e755750604081015167ffffffffffffffff105b80612e8b5750606081015167ffffffffffffffff105b15612ec2576040517f09cfba7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600a80546020840151604085015160609095015167ffffffffffffffff908116600160c01b0277ffffffffffffffffffffffffffffffffffffffffffffffff968216600160801b02969096166fffffffffffffffffffffffffffffffff92821668010000000000000000027fffffffffffffffffffffffffffffffff000000000000000000000000000000009094169190951617919091171691909117919091179055565b7f0000000000000000000000000000000000000000000000000000000000000000612fa757604051631192b39960e31b815260040160405180910390fd5b612fb0816139d4565b612fe6576040517fda1c8eb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c5467ffffffffffffffff16158061301257506020810151600c5467ffffffffffffffff9182169116115b1561303e576020810151600c805467ffffffffffffffff191667ffffffffffffffff9092169190911790555b8051600c5467ffffffffffffffff9182169116101561307b578051600c805467ffffffffffffffff191667ffffffffffffffff9092169190911790555b602081810151600c805484517fffffffffffffffff00000000000000000000000000000000ffffffffffffffff9091166801000000000000000067ffffffffffffffff948516027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1617600160801b91841691909102179055604080840151600d805467ffffffffffffffff1916919093161790915560005460015482517feca067ad000000000000000000000000000000000000000000000000000000008152925191936001600160a01b039091169263eca067ad92600480830193928290030181865afa158015613172573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613196919061495e565b036131a6576131a6600c43613720565b50565b60007f000000000000000000000000000000000000000000000000000000000000000080156131d9575060005482115b80156128aa57506131ea600c613a3c565b1592915050565b60008060006131ff86613a6f565b925092509250600080600080613219878b60008c8c6137eb565b93509350935093508a841415801561323357506000198b14155b15613274576040517fac7411c900000000000000000000000000000000000000000000000000000000815260048101859052602481018c905260440161093d565b80838c7f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548b60036040516132af9493929190614cea565b60405180910390a47f00000000000000000000000000000000000000000000000000000000000000001561330f576040517f86657a5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b333214801561333c57507f0000000000000000000000000000000000000000000000000000000000000000155b156112d5576112d587854888613b78565b60005482111561345657613361600c613dba565b1561345657600154600080546040517fd5719dc200000000000000000000000000000000000000000000000000000000815291926001600160a01b03169163d5719dc2916133b59160040190815260200190565b602060405180830381865afa1580156133d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133f6919061495e565b905061340b8183600001518460200151613deb565b613441576040517fc334542d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020820151604001516123c290600c90613720565b5050565b600080613468888888613e30565b9150915060008060008061348c868b89613483576000613485565b8d5b8c8c6137eb565b93509350935093508c84141580156134a657506000198d14155b156134e7576040517fac7411c900000000000000000000000000000000000000000000000000000000815260048101859052602481018e905260440161093d565b8083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548a8d61351c57600161351f565b60005b60405161352f9493929190614cea565b60405180910390a486611e6d57837ffe325ca1efe4c5c1062c981c3ee74b781debe4ea9440306a96d2a55759c66c208d8d60405161356e929190614c7d565b60405180910390a250505050505050505050505050565b8154600183015460009161290c9167ffffffffffffffff600160c01b8304811692868216928282169268010000000000000000808304821693600160801b81048316939190048216911661403e565b600a5460009067ffffffffffffffff9081169083161061360057600a5467ffffffffffffffff166128aa565b5090565b6000808080467f000000000000000000000000000000000000000000000000000000000000000014613641575060019250829150819050806129ce565b5050600a5467ffffffffffffffff808216935068010000000000000000820481169250600160801b8204811691600160c01b9004166129ce565b6040516001600160f81b031960f889901b1660208201526bffffffffffffffffffffffff19606088901b1660218201527fffffffffffffffff00000000000000000000000000000000000000000000000060c087811b8216603584015286901b16603d82015260458101849052606581018390526085810182905260009060a5016040516020818303038152906040528051906020012090505b979650505050505050565b61372a8282613585565b825467ffffffffffffffff928316600160c01b0277ffffffffffffffffffffffffffffffff000000000000000090911691831691909117178255600190910180544390921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b60408051608081018252600080825260208201819052918101829052606081018290526000806137d585614105565b8151602090920191909120969095509350505050565b60008060008060005488101561382d576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663eca067ad6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138a4919061495e565b8811156138dd576040517f925f8bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f86598a56000000000000000000000000000000000000000000000000000000008152600481018b9052602481018a905260448101889052606481018790526001600160a01b03909116906386598a56906084016080604051808303816000875af1158015613956573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061397a9190614d9f565b60008c90559296509094509250905086158015906139b657507f0000000000000000000000000000000000000000000000000000000000000000155b156139c8576139c88985486000613b78565b95509550955095915050565b805160009067ffffffffffffffff16158015906139fe5750602082015167ffffffffffffffff1615155b8015613a1a5750612710826040015167ffffffffffffffff1611155b80156128aa5750506020810151905167ffffffffffffffff9182169116111590565b805460009067ffffffffffffffff600160801b8204811691613a6791600160c01b9091041643614b8f565b111592915050565b604080516080810182526000808252602082018190529181018290526060810182905260408051606081018252600080825260208201819052918101829052600080613aba87614105565b9092509050633b9aca0060006003613ad56202000084614ad2565b613adf9190614ad2565b60405190915084907f500000000000000000000000000000000000000000000000000000000000000090613b17908890602001614dd5565b60408051601f1981840301815290829052613b36939291602001614e09565b604051602081830303815290604052805190602001208360004811613b5c576000613b66565b613b6648846149bd565b97509750975050505050509193909250565b327f000000000000000000000000000000000000000000000000000000000000000015613c1e576000606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c04919061495e565b9050613c1048826149bd565b613c1a90846149aa565b9250505b67ffffffffffffffff821115613c60576040517f04d5501200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080514260208201526bffffffffffffffffffffffff19606084901b16918101919091526054810186905260748101859052609481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c084901b1660b482015260009060bc0160408051808303601f1901815290829052600154815160208301207f7a88b1070000000000000000000000000000000000000000000000000000000084526001600160a01b0386811660048601526024850191909152919350600092911690637a88b107906044016020604051808303816000875af1158015613d53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d77919061495e565b9050807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b83604051613da99190614e4c565b60405180910390a250505050505050565b6000613dc582613a3c565b15806128aa5750505467ffffffffffffffff680100000000000000008204811691161090565b6000613e2683613dfa846141dd565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b9093149392505050565b60408051608081018252600080825260208201819052918101829052606081018290526000613e608560286149aa565b90507f0000000000000000000000000000000000000000000000000000000000000000811115613ee5576040517f4634691b000000000000000000000000000000000000000000000000000000008152600481018290527f0000000000000000000000000000000000000000000000000000000000000000602482015260440161093d565b600080613ef186614105565b9092509050861561400457613f2188886000818110613f1257613f12614cd4565b9050013560f81c60f81b61420a565b613f795787876000818110613f3857613f38614cd4565b6040517f6b3333560000000000000000000000000000000000000000000000000000000081529201356001600160f81b03191660048301525060240161093d565b600160ff1b8888600081613f8f57613f8f614cd4565b6001600160f81b031992013592909216161580159150613fb0575060218710155b15614004576000613fc5602160018a8c614e7f565b613fce91614ea9565b60008181526008602052604090205490915060ff166140025760405162f20c5d60e01b81526004810182905260240161093d565b505b81888860405160200161401993929190614ec7565b60408051601f1981840301815291905280516020909101209890975095505050505050565b60008088881161404f576000614059565b6140598989614b8f565b9050600089871161406b576000614075565b6140758a88614b8f565b90506127106140848584614ad2565b61408e91906149bd565b61409890896149aa565b975060008682116140aa5760006140b4565b6140b48783614b8f565b9050828111156140c15750815b808911156140f6576140d3818a614b8f565b9850868911156140f6578589116140ea57886140ec565b855b9350505050613715565b50949998505050505050505050565b6040805160808101825260008082526020820181905291810182905260608082018390529161413261429d565b905060008160000151826020015183604001518460600151886040516020016141b295949392919060c095861b7fffffffffffffffff000000000000000000000000000000000000000000000000908116825294861b8516600882015292851b8416601084015290841b8316601883015290921b16602082015260280190565b604051602081830303815290604052905060288151146141d4576141d4614eef565b94909350915050565b60006128aa826000015183602001518460400151856060015186608001518760a001518860c0015161367b565b60006001600160f81b03198216158061423057506001600160f81b03198216600160ff1b145b8061426457506001600160f81b031982167f8800000000000000000000000000000000000000000000000000000000000000145b806128aa57506001600160f81b031982167f20000000000000000000000000000000000000000000000000000000000000001492915050565b6040805160808101825260008082526020820181905291810182905260608101919091526040805160808101825260008082526020820181905291810182905260608101919091526000806000806142f3613604565b93509350935093508167ffffffffffffffff16421115614324576143178242614f05565b67ffffffffffffffff1685525b61432e8142614cac565b67ffffffffffffffff90811660208701528416431115614362576143528443614f05565b67ffffffffffffffff1660408601525b61436c8343614cac565b67ffffffffffffffff1660608601525092949350505050565b60006020828403121561439757600080fd5b5035919050565b6001600160a01b03811681146131a657600080fd5b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156143ec576143ec6143b3565b60405290565b60405160e0810167ffffffffffffffff811182821017156143ec576143ec6143b3565b604051601f8201601f1916810167ffffffffffffffff8111828210171561443e5761443e6143b3565b604052919050565b803567ffffffffffffffff8116811461445e57600080fd5b919050565b60006060828403121561447557600080fd5b6040516060810181811067ffffffffffffffff82111715614498576144986143b3565b6040529050806144a783614446565b81526144b560208401614446565b60208201526144c660408401614446565b60408201525092915050565b60008060008385036101008112156144e957600080fd5b84356144f48161439e565b93506080601f198201121561450857600080fd5b5060208401915061451c8560a08601614463565b90509250925092565b80151581146131a657600080fd5b6000806040838503121561454657600080fd5b82356145518161439e565b9150602083013561456181614525565b809150509250929050565b60006020828403121561457e57600080fd5b813561290c8161439e565b60006060828403121561459b57600080fd5b61290c8383614463565b600080600080600060a086880312156145bd57600080fd5b853594506020860135935060408601356145d68161439e565b94979396509394606081013594506080013592915050565b60008083601f84011261460057600080fd5b50813567ffffffffffffffff81111561461857600080fd5b60208301915083602082850101111561463057600080fd5b9250929050565b6000610100828403121561464a57600080fd5b50919050565b6000806000806000806000806101c0898b03121561466d57600080fd5b88359750602089013567ffffffffffffffff81111561468b57600080fd5b6146978b828c016145ee565b9098509650506040890135945060608901356146b28161439e565b93506080890135925060a089013591506146cf8a60c08b01614637565b90509295985092959890939650565b6000806000806000608086880312156146f657600080fd5b85359450602086013567ffffffffffffffff81111561471457600080fd5b614720888289016145ee565b90955093505060408601359150606086013561473b8161439e565b809150509295509295909350565b600080600080600080600060c0888a03121561476457600080fd5b87359650602088013567ffffffffffffffff81111561478257600080fd5b61478e8a828b016145ee565b9097509550506040880135935060608801356147a98161439e565b969995985093969295946080840135945060a09093013592915050565b6000806000806000806101a087890312156147e057600080fd5b863595506020870135945060408701356147f98161439e565b935060608701359250608087013591506148168860a08901614637565b90509295509295509295565b60006080828403121561483457600080fd5b6040516080810181811067ffffffffffffffff82111715614857576148576143b3565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b6000806020838503121561489b57600080fd5b823567ffffffffffffffff8111156148b257600080fd5b6148be858286016145ee565b90969095509350505050565b6000602082840312156148dc57600080fd5b61290c82614446565b803560ff8116811461445e57600080fd5b60008060008060008060e0878903121561490f57600080fd5b8635955061491f602088016148e5565b9450608087018881111561493257600080fd5b60408801945035925060a08701356149498161439e565b8092505060c087013590509295509295509295565b60006020828403121561497057600080fd5b5051919050565b60006020828403121561498957600080fd5b815161290c8161439e565b634e487b7160e01b600052601160045260246000fd5b808201808211156128aa576128aa614994565b6000826149da57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115614a1a578160001904821115614a0057614a00614994565b80851615614a0d57918102915b93841c93908002906149e4565b509250929050565b600082614a31575060016128aa565b81614a3e575060006128aa565b8160018114614a545760028114614a5e57614a7a565b60019150506128aa565b60ff841115614a6f57614a6f614994565b50506001821b6128aa565b5060208310610133831016604e8410600b8410161715614a9d575081810a6128aa565b614aa783836149df565b8060001904821115614abb57614abb614994565b029392505050565b600061290c60ff841683614a22565b80820281158282048414176128aa576128aa614994565b60006020808385031215614afc57600080fd5b825167ffffffffffffffff80821115614b1457600080fd5b818501915085601f830112614b2857600080fd5b815181811115614b3a57614b3a6143b3565b8060051b9150614b4b848301614415565b8181529183018401918481019088841115614b6557600080fd5b938501935b83851015614b8357845182529385019390850190614b6a565b98975050505050505050565b818103818111156128aa576128aa614994565b600060208284031215614bb457600080fd5b815161290c81614525565b6000818303610100811215614bd357600080fd5b614bdb6143c9565b8335815260e0601f1983011215614bf157600080fd5b614bf96143f2565b9150614c07602085016148e5565b82526040840135614c178161439e565b6020830152614c2860608501614446565b6040830152614c3960808501614446565b606083015260a0840135608083015260c084013560a083015260e084013560c0830152816020820152809250505092915050565b8183823760009101908152919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b67ffffffffffffffff818116838216019080821115614ccd57614ccd614994565b5092915050565b634e487b7160e01b600052603260045260246000fd5b600060e08201905085825284602083015267ffffffffffffffff8085511660408401528060208601511660608401528060408601511660808401528060608601511660a08401525060048310614d5057634e487b7160e01b600052602160045260246000fd5b8260c083015295945050505050565b60005b83811015614d7a578181015183820152602001614d62565b50506000910152565b60008251614d95818460208701614d5f565b9190910192915050565b60008060008060808587031215614db557600080fd5b505082516020840151604085015160609095015191969095509092509050565b60008183825b6003811015614dfa578151835260209283019290910190600101614ddb565b50505060608201905092915050565b60008451614e1b818460208901614d5f565b6001600160f81b031985169083019081528351614e3f816001840160208801614d5f565b0160010195945050505050565b6020815260008251806020840152614e6b816040850160208701614d5f565b601f01601f19169190910160400192915050565b60008085851115614e8f57600080fd5b83861115614e9c57600080fd5b5050820193919092039150565b803560208310156128aa57600019602084900360031b1b1692915050565b60008451614ed9818460208901614d5f565b8201838582376000930192835250909392505050565b634e487b7160e01b600052600160045260246000fd5b67ffffffffffffffff828116828216039080821115614ccd57614ccd61499456fea2646970667358221220eecf48c2ff9a477d20d6bf44fe4f3b79a3034843d1183e47fd4186cbb24be47e64736f6c63430008110033", } // SequencerInboxBlobMockABI is the input ABI used to generate the binding from. @@ -8844,7 +8844,7 @@ func (_SequencerInboxBlobMock *SequencerInboxBlobMockFilterer) ParseSetValidKeys // SequencerInboxStubMetaData contains all meta data concerning the SequencerInboxStub contract. var SequencerInboxStubMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"bridge_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sequencer_\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"delayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delaySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureSeconds\",\"type\":\"uint256\"}],\"internalType\":\"structISequencerInbox.MaxTimeVariation\",\"name\":\"maxTimeVariation_\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"maxDataSize_\",\"type\":\"uint256\"},{\"internalType\":\"contractIReader4844\",\"name\":\"reader4844_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isUsingFeeToken_\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isDelayBufferable_\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyInit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"AlreadyValidDASKeyset\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadBufferConfig\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadMaxTimeVariation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stored\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"received\",\"type\":\"uint256\"}],\"name\":\"BadSequencerNumber\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DataBlobsNotSupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDataLength\",\"type\":\"uint256\"}],\"name\":\"DataTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelayProofRequired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelayedBackwards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelayedTooFar\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Deprecated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExtraGasNotUint64\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceIncludeBlockTooSoon\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HadZeroInit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectMessagePreimage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"InitParamZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelayedAccPreimage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"name\":\"InvalidHeaderFlag\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"KeysetTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingDataHashes\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NativeTokenMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"NoSuchKeyset\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotBatchPoster\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"NotBatchPosterManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotDelayBufferable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotForked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOrigin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"NotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RollupNotChanged\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"messageNum\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"InboxMessageDelivered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"messageNum\",\"type\":\"uint256\"}],\"name\":\"InboxMessageDeliveredFromOrigin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"keysetHash\",\"type\":\"bytes32\"}],\"name\":\"InvalidateKeyset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"OwnerFunctionCalled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"batchSequenceNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"SequencerBatchData\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"batchSequenceNumber\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"beforeAcc\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"afterAcc\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"delayedAcc\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"minBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxBlockNumber\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structIBridge.TimeBounds\",\"name\":\"timeBounds\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"enumIBridge.BatchDataLocation\",\"name\":\"dataLocation\",\"type\":\"uint8\"}],\"name\":\"SequencerBatchDelivered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"keysetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"keysetBytes\",\"type\":\"bytes\"}],\"name\":\"SetValidKeyset\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BROTLI_MESSAGE_HEADER_FLAG\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DAS_MESSAGE_HEADER_FLAG\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DATA_AUTHENTICATED_FLAG\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DATA_BLOB_HEADER_FLAG\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEADER_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TREE_DAS_MESSAGE_HEADER_FLAG\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ZERO_HEAVY_MESSAGE_HEADER_FLAG\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"addInitMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prevMessageCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMessageCount\",\"type\":\"uint256\"}],\"name\":\"addSequencerL2Batch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prevMessageCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMessageCount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"beforeDelayedAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"inboxSeqNum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseFeeL1\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"messageDataHash\",\"type\":\"bytes32\"}],\"internalType\":\"structMessages.Message\",\"name\":\"delayedMessage\",\"type\":\"tuple\"}],\"internalType\":\"structDelayProof\",\"name\":\"delayProof\",\"type\":\"tuple\"}],\"name\":\"addSequencerL2BatchDelayProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prevMessageCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMessageCount\",\"type\":\"uint256\"}],\"name\":\"addSequencerL2BatchFromBlobs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prevMessageCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMessageCount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"beforeDelayedAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"inboxSeqNum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseFeeL1\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"messageDataHash\",\"type\":\"bytes32\"}],\"internalType\":\"structMessages.Message\",\"name\":\"delayedMessage\",\"type\":\"tuple\"}],\"internalType\":\"structDelayProof\",\"name\":\"delayProof\",\"type\":\"tuple\"}],\"name\":\"addSequencerL2BatchFromBlobsDelayProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"addSequencerL2BatchFromOrigin\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prevMessageCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMessageCount\",\"type\":\"uint256\"}],\"name\":\"addSequencerL2BatchFromOrigin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prevMessageCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMessageCount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"beforeDelayedAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"inboxSeqNum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseFeeL1\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"messageDataHash\",\"type\":\"bytes32\"}],\"internalType\":\"structMessages.Message\",\"name\":\"delayedMessage\",\"type\":\"tuple\"}],\"internalType\":\"structDelayProof\",\"name\":\"delayProof\",\"type\":\"tuple\"}],\"name\":\"addSequencerL2BatchFromOriginDelayProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchPosterManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"buffer\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"bufferBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"prevBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"replenishRateInBasis\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"prevSequencedBlockNumber\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"dasKeySetInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isValidKeyset\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"creationBlock\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64[2]\",\"name\":\"l1BlockAndTime\",\"type\":\"uint64[2]\"},{\"internalType\":\"uint256\",\"name\":\"baseFeeL1\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"messageDataHash\",\"type\":\"bytes32\"}],\"name\":\"forceInclusion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"}],\"name\":\"forceInclusionDeadline\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"ksHash\",\"type\":\"bytes32\"}],\"name\":\"getKeysetCreationBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"inboxAccs\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"bridge_\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"delayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delaySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureSeconds\",\"type\":\"uint256\"}],\"internalType\":\"structISequencerInbox.MaxTimeVariation\",\"name\":\"maxTimeVariation_\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"replenishRateInBasis\",\"type\":\"uint64\"}],\"internalType\":\"structBufferConfig\",\"name\":\"bufferConfig_\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"ksHash\",\"type\":\"bytes32\"}],\"name\":\"invalidateKeysetHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isBatchPoster\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDelayBufferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isSequencer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isUsingFeeToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"ksHash\",\"type\":\"bytes32\"}],\"name\":\"isValidKeysetHash\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxDataSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxTimeVariation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"replenishRateInBasis\",\"type\":\"uint64\"}],\"internalType\":\"structBufferConfig\",\"name\":\"bufferConfig_\",\"type\":\"tuple\"}],\"name\":\"postUpgradeInit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reader4844\",\"outputs\":[{\"internalType\":\"contractIReader4844\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeDelayAfterFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollup\",\"outputs\":[{\"internalType\":\"contractIOwnable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newBatchPosterManager\",\"type\":\"address\"}],\"name\":\"setBatchPosterManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"replenishRateInBasis\",\"type\":\"uint64\"}],\"internalType\":\"structBufferConfig\",\"name\":\"bufferConfig_\",\"type\":\"tuple\"}],\"name\":\"setBufferConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBatchPoster_\",\"type\":\"bool\"}],\"name\":\"setIsBatchPoster\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isSequencer_\",\"type\":\"bool\"}],\"name\":\"setIsSequencer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"delayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delaySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureSeconds\",\"type\":\"uint256\"}],\"internalType\":\"structISequencerInbox.MaxTimeVariation\",\"name\":\"maxTimeVariation_\",\"type\":\"tuple\"}],\"name\":\"setMaxTimeVariation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"keysetBytes\",\"type\":\"bytes\"}],\"name\":\"setValidKeyset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalDelayedMessagesRead\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateRollupAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x610180604052306080526202000060a05246610100526200002b620001c8602090811b62002f7e17901c565b1515610120523480156200003e57600080fd5b5060405162005644380380620056448339810160408190526200006191620002a1565b838383838360e081815250506101205115620000a6576001600160a01b03831615620000a0576040516386657a5360e01b815260040160405180910390fd5b620000ef565b6001600160a01b038316620000ef576040516380fc2c0360e01b815260206004820152600a60248201526914995859195c8d0e0d0d60b21b604482015260640160405180910390fd5b6001600160a01b0392831660c05290151561014052151561016052600180549982166001600160a01b03199a8b1617815560028054909a1633179099558651600a80546020808b01516040808d01516060909d01516001600160401b03908116600160c01b026001600160c01b039e8216600160801b029e909e166001600160801b0393821668010000000000000000026001600160801b0319909616919097161793909317169390931799909917905597166000908152600390975250505091909220805460ff191690931790925550620003ca9050565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b17905290516000918291829160649162000208919062000399565b600060405180830381855afa9150503d806000811462000245576040519150601f19603f3d011682016040523d82523d6000602084013e6200024a565b606091505b50915091508180156200025e575080516020145b9250505090565b6001600160a01b03811681146200027b57600080fd5b50565b80516200028b8162000265565b919050565b805180151581146200028b57600080fd5b6000806000806000806000878903610140811215620002bf57600080fd5b8851620002cc8162000265565b60208a0151909850620002df8162000265565b96506080603f1982011215620002f457600080fd5b50604051608081016001600160401b03811182821017156200032657634e487b7160e01b600052604160045260246000fd5b806040525060408901518152606089015160208201526080890151604082015260a089015160608201528095505060c088015193506200036960e089016200027e565b92506200037a610100890162000290565b91506200038b610120890162000290565b905092959891949750929550565b6000825160005b81811015620003bc5760208186018101518583015201620003a0565b506000920191825250919050565b60805160a05160c05160e05161010051610120516101405161016051615165620004df6000396000818161044201528181610b8a0152818161157601528181611a65015281816120f80152818161254001528181612ac901528181612c5e0152818161317201526133b401526000818161061201528181610a490152818161352201526137430152600081816128aa015281816134c00152613ea80152600081816123b50152613a4101526000818161072c0152818161424c01526142a10152600081816105ad01528181611001015281816120a101528181613c9e0152613d790152600081816111e10152818161173201528181611f9601526122ab0152600081816108b1015261243401526151656000f3fe608060405234801561001057600080fd5b50600436106102ff5760003560e01c806371c3e6fe1161019c578063cc2a1a0c116100ee578063e78cea9211610097578063edaafe2011610071578063edaafe2014610776578063f1981578146107ff578063f60a50911461081257600080fd5b8063e78cea9214610714578063e8eb1dc314610727578063ebea461d1461074e57600080fd5b8063dd44e6e0116100c8578063dd44e6e0146106ae578063e0bc9729146106da578063e5a358c8146106ed57600080fd5b8063cc2a1a0c14610675578063d1ce8da814610688578063d9dd67ab1461069b57600080fd5b8063917cf8ac11610150578063a655d9371161012a578063a655d9371461063c578063b31761f81461064f578063cb23bcb51461066257600080fd5b8063917cf8ac146105fa57806392d9f7821461060d57806396cc5c781461063457600080fd5b8063844208601161018157806384420860146105955780638d910dde146105a85780638f111f3c146105e757600080fd5b806371c3e6fe146105695780637fa3a40e1461058c57600080fd5b80633e5aa082116102555780636c890450116102095780636e7df3e7116101e35780636e7df3e7146104ef5780636f12b0c914610502578063715ea34b1461051557600080fd5b80636c890450146104925780636d46e987146104b95780636e620055146104dc57600080fd5b80636633ae851161023a5780636633ae851461046457806369cacded146104775780636ae71f121461048a57600080fd5b80633e5aa0821461042a5780634b678a661461043d57600080fd5b80631f956632116102b757806327957a491161029157806327957a49146103e85780632cbf74e5146103f05780632f3985a71461041757600080fd5b80631f956632146103af5780631ff64790146103c2578063258f0495146103d557600080fd5b80631637be48116102e85780631637be481461035f57806316af91a7146103925780631ad87e451461039a57600080fd5b806302c992751461030457806306f1305614610349575b600080fd5b61032b7f200000000000000000000000000000000000000000000000000000000000000081565b6040516001600160f81b031990911681526020015b60405180910390f35b61035161081d565b604051908152602001610340565b61038261036d3660046145ad565b60009081526008602052604090205460ff1690565b6040519015158152602001610340565b61032b600081565b6103ad6103a83660046146fa565b6108a7565b005b6103ad6103bd36600461475b565b610bbd565b6103ad6103d0366004614794565b610ce9565b6103516103e33660046145ad565b610e81565b610351602881565b61032b7f500000000000000000000000000000000000000000000000000000000000000081565b6103ad6104253660046147b1565b610eee565b6103ad6104383660046147cd565b610ffe565b6103827f000000000000000000000000000000000000000000000000000000000000000081565b6103ad6104723660046145ad565b6112e7565b6103ad610485366004614878565b611504565b6103ad61183a565b61032b7f080000000000000000000000000000000000000000000000000000000000000081565b6103826104c7366004614794565b60096020526000908152604090205460ff1681565b6103ad6104ea366004614878565b611a12565b6103ad6104fd36600461475b565b611ac4565b6103ad610510366004614906565b611bf0565b6105496105233660046145ad565b60086020526000908152604090205460ff811690610100900467ffffffffffffffff1682565b60408051921515835267ffffffffffffffff909116602083015201610340565b610382610577366004614794565b60036020526000908152604090205460ff1681565b61035160005481565b6103ad6105a33660046145ad565b611c22565b6105cf7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610340565b6103ad6105f5366004614971565b611d97565b6103ad6106083660046149ee565b61209e565b6103827f000000000000000000000000000000000000000000000000000000000000000081565b6103ad6123b2565b6103ad61064a3660046147b1565b61242a565b6103ad61065d366004614a4a565b6125ce565b6002546105cf906001600160a01b031681565b600b546105cf906001600160a01b031681565b6103ad610696366004614ab0565b6126dd565b6103516106a93660046145ad565b612a2a565b6106c16106bc366004614af2565b612ab7565b60405167ffffffffffffffff9091168152602001610340565b6103ad6106e8366004614971565b612b1a565b61032b7f400000000000000000000000000000000000000000000000000000000000000081565b6001546105cf906001600160a01b031681565b6103517f000000000000000000000000000000000000000000000000000000000000000081565b610756612ba2565b604080519485526020850193909352918301526060820152608001610340565b600c54600d546107bc9167ffffffffffffffff8082169268010000000000000000808404831693600160801b8104841693600160c01b9091048116928082169290041686565b6040805167ffffffffffffffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c001610340565b6103ad61080d366004614b1e565b612bdb565b61032b600160ff1b81565b600154604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa15801561087e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a29190614b86565b905090565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361094a5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001546001600160a01b03161561098d576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383166109cd576040517f1ad0f74300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000836001600160a01b031663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a29575060408051601f3d908101601f19168201909252610a2691810190614b9f565b60015b15610a44576001600160a01b03811615610a4257600191505b505b8015157f0000000000000000000000000000000000000000000000000000000000000000151514610aa1576040517fc3e31f8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038616908117909155604080517fcb23bcb5000000000000000000000000000000000000000000000000000000008152905163cb23bcb5916004808201926020929091908290030181865afa158015610b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b449190614b9f565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055610b88610b8336859003850185614a4a565b613044565b7f000000000000000000000000000000000000000000000000000000000000000015610bb757610bb782613170565b50505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c349190614b9f565b6001600160a01b0316336001600160a01b031614158015610c605750600b546001600160a01b03163314155b15610c99576040517f660b3b42000000000000000000000000000000000000000000000000000000008152336004820152602401610941565b6001600160a01b038216600090815260096020526040808220805460ff1916841515179055516004917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d609190614b9f565b6001600160a01b0316336001600160a01b031614610e2a5760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de59190614b9f565b6040517f23295f0e0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015291166024820152604401610941565b600b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556040516005907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b600081815260086020908152604080832081518083019092525460ff811615158252610100900467ffffffffffffffff16918101829052908203610eda5760405162f20c5d60e01b815260048101849052602401610941565b6020015167ffffffffffffffff1692915050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f659190614b9f565b6001600160a01b0316336001600160a01b031614610fc65760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dc1573d6000803e3d6000fd5b610fcf81613170565b6040516006907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b827f000000000000000000000000000000000000000000000000000000000000000060005a3360009081526003602052604090205490915060ff1661105657604051632dd9fc9760e01b815260040160405180910390fd5b61105f876133b0565b1561107d57604051630e5da8fb60e01b815260040160405180910390fd5b611089888887876133f8565b6001600160a01b038316156112dd5736600060206110a883601f614bd2565b6110b29190614be5565b90506102006110c2600283614ceb565b6110cc9190614be5565b6110d7826006614cfa565b6110e19190614bd2565b6110eb9084614bd2565b92503332146110fd5760009150611230565b6001600160a01b0384161561123057836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561116b57506040513d6000823e601f3d908101601f191682016040526111689190810190614d11565b60015b156112305780511561122e576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111db9190614b86565b905048817f0000000000000000000000000000000000000000000000000000000000000000845161120c9190614cfa565b6112169190614cfa565b6112209190614be5565b61122a9086614bd2565b9450505b505b846001600160a01b031663e3db8a49335a61124b9087614db7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af11580156112b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d99190614dca565b5050505b5050505050505050565b6000816040516020016112fc91815260200190565b60408051808303601f1901815290829052600154815160208301207f8db5993b000000000000000000000000000000000000000000000000000000008452600b6004850152600060248501819052604485019190915291935090916001600160a01b0390911690638db5993b906064016020604051808303816000875af115801561138b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113af9190614b86565b905080156113ff5760405162461bcd60e51b815260206004820152601460248201527f414c52454144595f44454c415945445f494e49540000000000000000000000006044820152606401610941565b807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b8360405161142f9190614e0b565b60405180910390a26000806114446001613554565b9150915060008060008061145e8660016000806001613599565b9350935093509350836000146114b65760405162461bcd60e51b815260206004820152601060248201527f414c52454144595f5345515f494e4954000000000000000000000000000000006044820152606401610941565b8083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548a60026040516114f19493929190614e3e565b60405180910390a4505050505050505050565b836000805a9050333214611544576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff1661157457604051632dd9fc9760e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006115b257604051631192b39960e31b815260040160405180910390fd5b6115ca886115c536879003870187614eb3565b613782565b6115da8b8b8b8b8a8a600161388f565b6001600160a01b038316156112d95736600060206115f983601f614bd2565b6116039190614be5565b9050610200611613600283614ceb565b61161d9190614be5565b611628826006614cfa565b6116329190614bd2565b61163c9084614bd2565b925033321461164e5760009150611781565b6001600160a01b0384161561178157836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa9250505080156116bc57506040513d6000823e601f3d908101601f191682016040526116b99190810190614d11565b60015b156117815780511561177f576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611708573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172c9190614b86565b905048817f0000000000000000000000000000000000000000000000000000000000000000845161175d9190614cfa565b6117679190614cfa565b6117719190614be5565b61177b9086614bd2565b9450505b505b846001600160a01b031663e3db8a49335a61179c9087614db7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af1158015611806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182a9190614dca565b5050505050505050505050505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561188d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b19190614b9f565b6001600160a01b0316336001600160a01b0316146119125760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dc1573d6000803e3d6000fd5b600154604080517fcb23bcb500000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cb23bcb59160048083019260209291908290030181865afa158015611975573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119999190614b9f565b6002549091506001600160a01b038083169116036119e3576040517fd054909f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b836000805a3360009081526003602052604090205490915060ff16158015611a4557506002546001600160a01b03163314155b15611a6357604051632dd9fc9760e01b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000611aa157604051631192b39960e31b815260040160405180910390fd5b611ab4886115c536879003870187614eb3565b6115da8b8b8b8b8a8a600061388f565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3b9190614b9f565b6001600160a01b0316336001600160a01b031614158015611b675750600b546001600160a01b03163314155b15611ba0576040517f660b3b42000000000000000000000000000000000000000000000000000000008152336004820152602401610941565b6001600160a01b038216600090815260036020526040808220805460ff1916841515179055516001917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b6040517fc73b9d7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c999190614b9f565b6001600160a01b0316336001600160a01b031614611cfa5760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dc1573d6000803e3d6000fd5b60008181526008602052604090205460ff16611d2b5760405162f20c5d60e01b815260048101829052602401610941565b600081815260086020526040808220805460ff191690555182917f5cb4218b272fd214168ac43e90fb4d05d6c36f0b17ffb4c2dd07c234d744eb2a91a26040516003907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b826000805a9050333214611dd7576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff16611e0757604051632dd9fc9760e01b815260040160405180910390fd5b611e10876133b0565b15611e2e57604051630e5da8fb60e01b815260040160405180910390fd5b611e3e8a8a8a8a8989600161388f565b6001600160a01b03831615612092573660006020611e5d83601f614bd2565b611e679190614be5565b9050610200611e77600283614ceb565b611e819190614be5565b611e8c826006614cfa565b611e969190614bd2565b611ea09084614bd2565b9250333214611eb25760009150611fe5565b6001600160a01b03841615611fe557836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa925050508015611f2057506040513d6000823e601f3d908101601f19168201604052611f1d9190810190614d11565b60015b15611fe557805115611fe3576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190614b86565b905048817f00000000000000000000000000000000000000000000000000000000000000008451611fc19190614cfa565b611fcb9190614cfa565b611fd59190614be5565b611fdf9086614bd2565b9450505b505b846001600160a01b031663e3db8a49335a6120009087614db7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af115801561206a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208e9190614dca565b5050505b50505050505050505050565b837f000000000000000000000000000000000000000000000000000000000000000060005a3360009081526003602052604090205490915060ff166120f657604051632dd9fc9760e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061213457604051631192b39960e31b815260040160405180910390fd5b612147886115c536879003870187614eb3565b612153898988886133f8565b6001600160a01b038316156123a757366000602061217283601f614bd2565b61217c9190614be5565b905061020061218c600283614ceb565b6121969190614be5565b6121a1826006614cfa565b6121ab9190614bd2565b6121b59084614bd2565b92503332146121c757600091506122fa565b6001600160a01b038416156122fa57836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561223557506040513d6000823e601f3d908101601f191682016040526122329190810190614d11565b60015b156122fa578051156122f8576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a59190614b86565b905048817f000000000000000000000000000000000000000000000000000000000000000084516122d69190614cfa565b6122e09190614cfa565b6122ea9190614be5565b6122f49086614bd2565b9450505b505b846001600160a01b031663e3db8a49335a6123159087614db7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af115801561237f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a39190614dca565b5050505b505050505050505050565b467f00000000000000000000000000000000000000000000000000000000000000000361240b576040517fa301bb0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7801000000000000000100000000000000010000000000000001600a55565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036124c85760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610941565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b0382161461253e576040517f23295f0e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0382166024820152604401610941565b7f000000000000000000000000000000000000000000000000000000000000000061257c57604051631192b39960e31b815260040160405180910390fd5b600c5467ffffffffffffffff16156125c0576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6125c983613170565b505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612621573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126459190614b9f565b6001600160a01b0316336001600160a01b0316146126a65760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dc1573d6000803e3d6000fd5b6126af81613044565b6040516000907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e908290a250565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127549190614b9f565b6001600160a01b0316336001600160a01b0316146127b55760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dc1573d6000803e3d6000fd5b600082826040516127c7929190614f61565b6040519081900381207ffe000000000000000000000000000000000000000000000000000000000000006020830152602182015260410160408051601f1981840301815291905280516020909101209050600160ff1b811862010000831061285b576040517fb3d1f41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526008602052604090205460ff16156128a7576040517ffa2fddda00000000000000000000000000000000000000000000000000000000815260048101829052602401610941565b437f0000000000000000000000000000000000000000000000000000000000000000156129345760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561290d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129319190614b86565b90505b6040805180820182526001815267ffffffffffffffff8381166020808401918252600087815260089091528490209251835491517fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000009092169015157fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff161761010091909216021790555182907fabca9b7986bc22ad0160eb0cb88ae75411eacfba4052af0b457a9335ef655722906129ef9088908890614f71565b60405180910390a26040516002907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a25050505050565b6001546040517f16bf5579000000000000000000000000000000000000000000000000000000008152600481018390526000916001600160a01b0316906316bf557990602401602060405180830381865afa158015612a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab19190614b86565b92915050565b600a5460009067ffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000015612b09576000612afa600c856139ba565b9050612b0581613a09565b9150505b612b138184614fa0565b9392505050565b826000805a3360009081526003602052604090205490915060ff16158015612b4d57506002546001600160a01b03163314155b15612b6b57604051632dd9fc9760e01b815260040160405180910390fd5b612b74876133b0565b15612b9257604051630e5da8fb60e01b815260040160405180910390fd5b611e3e8a8a8a8a8989600061388f565b600080600080600080600080612bb6613a39565b67ffffffffffffffff9384169b50918316995082169750169450505050505b90919293565b6000548611612c16576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612c4c8684612c2a6020890189614af2565b612c3a60408a0160208b01614af2565b612c4560018d614db7565b8988613ab0565b600a5490915067ffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000015612cbd57612c9a612c926020880188614af2565b600c90613b55565b600c54612cb09067ffffffffffffffff16613a09565b67ffffffffffffffff1690505b4381612ccc6020890189614af2565b67ffffffffffffffff16612ce09190614bd2565b10612d17576040517fad3515d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001891115612da0576001546001600160a01b031663d5719dc2612d3e60028c614db7565b6040518263ffffffff1660e01b8152600401612d5c91815260200190565b602060405180830381865afa158015612d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9d9190614b86565b90505b60408051602080820184905281830186905282518083038401815260609092019092528051910120600180546001600160a01b03169063d5719dc290612de6908d614db7565b6040518263ffffffff1660e01b8152600401612e0491815260200190565b602060405180830381865afa158015612e21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e459190614b86565b14612e7c576040517f13947fd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080612e888b613554565b9150915060008b90506000600160009054906101000a90046001600160a01b03166001600160a01b0316635fca4a166040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ee6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0a9190614b86565b9050806000808080612f1f8988838880613599565b93509350935093508083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548d6002604051612f629493929190614e3e565b60405180910390a4505050505050505050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491612fea9190614fde565b600060405180830381855afa9150503d8060008114613025576040519150601f19603f3d011682016040523d82523d6000602084013e61302a565b606091505b509150915081801561303d575080516020145b9250505090565b805167ffffffffffffffff10806130665750602081015167ffffffffffffffff105b8061307c5750604081015167ffffffffffffffff105b806130925750606081015167ffffffffffffffff105b156130c9576040517f09cfba7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600a80546020840151604085015160609095015167ffffffffffffffff908116600160c01b0277ffffffffffffffffffffffffffffffffffffffffffffffff968216600160801b02969096166fffffffffffffffffffffffffffffffff92821668010000000000000000027fffffffffffffffffffffffffffffffff000000000000000000000000000000009094169190951617919091171691909117919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006131ae57604051631192b39960e31b815260040160405180910390fd5b6131b781613bdb565b6131ed576040517fda1c8eb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c5467ffffffffffffffff16158061321957506020810151600c5467ffffffffffffffff9182169116115b15613245576020810151600c805467ffffffffffffffff191667ffffffffffffffff9092169190911790555b8051600c5467ffffffffffffffff91821691161015613282578051600c805467ffffffffffffffff191667ffffffffffffffff9092169190911790555b602081810151600c805484517fffffffffffffffff00000000000000000000000000000000ffffffffffffffff9091166801000000000000000067ffffffffffffffff948516027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1617600160801b91841691909102179055604080840151600d805467ffffffffffffffff1916919093161790915560005460015482517feca067ad000000000000000000000000000000000000000000000000000000008152925191936001600160a01b039091169263eca067ad92600480830193928290030181865afa158015613379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339d9190614b86565b036133ad576133ad600c43613b55565b50565b60007f000000000000000000000000000000000000000000000000000000000000000080156133e0575060005482115b8015612ab157506133f1600c613c43565b1592915050565b600080600061340686613c76565b925092509250600080600080613420878b60008c8c613599565b93509350935093508a841415801561343a57506000198b14155b1561347b576040517fac7411c900000000000000000000000000000000000000000000000000000000815260048101859052602481018c9052604401610941565b80838c7f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548b60036040516134b69493929190614e3e565b60405180910390a47f000000000000000000000000000000000000000000000000000000000000000015613516576040517f86657a5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b333214801561354357507f0000000000000000000000000000000000000000000000000000000000000000155b156112d9576112d987854888613ea5565b6040805160808101825260008082526020820181905291810182905260608101829052600080613583856140e7565b8151602090920191909120969095509350505050565b6000806000806000548810156135db576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663eca067ad6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561362e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136529190614b86565b88111561368b576040517f925f8bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f86598a56000000000000000000000000000000000000000000000000000000008152600481018b9052602481018a905260448101889052606481018790526001600160a01b03909116906386598a56906084016080604051808303816000875af1158015613704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137289190614ffa565b60008c905592965090945092509050861580159061376457507f0000000000000000000000000000000000000000000000000000000000000000155b15613776576137768985486000613ea5565b95509550955095915050565b60005482111561388b57613796600c6141a2565b1561388b57600154600080546040517fd5719dc200000000000000000000000000000000000000000000000000000000815291926001600160a01b03169163d5719dc2916137ea9160040190815260200190565b602060405180830381865afa158015613807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061382b9190614b86565b905061384081836000015184602001516141d3565b613876576040517fc334542d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020820151604001516125c990600c90613b55565b5050565b60008061389d888888614218565b915091506000806000806138c1868b896138b85760006138ba565b8d5b8c8c613599565b93509350935093508c84141580156138db57506000198d14155b1561391c576040517fac7411c900000000000000000000000000000000000000000000000000000000815260048101859052602481018e9052604401610941565b8083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548a8d613951576001613954565b60005b6040516139649493929190614e3e565b60405180910390a48661208e57837ffe325ca1efe4c5c1062c981c3ee74b781debe4ea9440306a96d2a55759c66c208d8d6040516139a3929190614f71565b60405180910390a250505050505050505050505050565b81546001830154600091612b139167ffffffffffffffff600160c01b8304811692868216928282169268010000000000000000808304821693600160801b810483169391900482169116614426565b600a5460009067ffffffffffffffff90811690831610613a3557600a5467ffffffffffffffff16612ab1565b5090565b6000808080467f000000000000000000000000000000000000000000000000000000000000000014613a7657506001925082915081905080612bd5565b5050600a5467ffffffffffffffff808216935068010000000000000000820481169250600160801b8204811691600160c01b900416612bd5565b6040516001600160f81b031960f889901b1660208201526bffffffffffffffffffffffff19606088901b1660218201527fffffffffffffffff00000000000000000000000000000000000000000000000060c087811b8216603584015286901b16603d82015260458101849052606581018390526085810182905260009060a5016040516020818303038152906040528051906020012090505b979650505050505050565b613b5f82826139ba565b825467ffffffffffffffff928316600160c01b0277ffffffffffffffffffffffffffffffff000000000000000090911691831691909117178255600190910180544390921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b805160009067ffffffffffffffff1615801590613c055750602082015167ffffffffffffffff1615155b8015613c215750612710826040015167ffffffffffffffff1611155b8015612ab15750506020810151905167ffffffffffffffff9182169116111590565b805460009067ffffffffffffffff600160801b8204811691613c6e91600160c01b9091041643614db7565b111592915050565b60408051608081018252600080825260208201819052918101829052606081018290526000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa158015613cfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d229190810190614d11565b90508051600003613d5f576040517f3cd27eb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080613d6b876140e7565b9150915060008351620200007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613dd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df99190614b86565b613e039190614cfa565b613e0d9190614cfa565b60405190915083907f500000000000000000000000000000000000000000000000000000000000000090613e45908790602001615030565b60408051601f1981840301815290829052613e64939291602001615066565b604051602081830303815290604052805190602001208260004811613e8a576000613e94565b613e944884614be5565b965096509650505050509193909250565b327f000000000000000000000000000000000000000000000000000000000000000015613f4b576000606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f319190614b86565b9050613f3d4882614be5565b613f479084614bd2565b9250505b67ffffffffffffffff821115613f8d576040517f04d5501200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080514260208201526bffffffffffffffffffffffff19606084901b16918101919091526054810186905260748101859052609481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c084901b1660b482015260009060bc0160408051808303601f1901815290829052600154815160208301207f7a88b1070000000000000000000000000000000000000000000000000000000084526001600160a01b0386811660048601526024850191909152919350600092911690637a88b107906044016020604051808303816000875af1158015614080573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140a49190614b86565b9050807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b836040516140d69190614e0b565b60405180910390a250505050505050565b604080516080808201835260008083526020808401829052838501829052606080850183905285519384018652828452838201839052838601839052838101839052855191820183905260288201839052603082018390526038820183905260c087901b7fffffffffffffffff000000000000000000000000000000000000000000000000169582019590955260480160405160208183030381529060405290506028815114614199576141996150a9565b94909350915050565b60006141ad82613c43565b1580612ab15750505467ffffffffffffffff680100000000000000008204811691161090565b600061420e836141e2846144ed565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b9093149392505050565b60408051608081018252600080825260208201819052918101829052606081018290526000614248856028614bd2565b90507f00000000000000000000000000000000000000000000000000000000000000008111156142cd576040517f4634691b000000000000000000000000000000000000000000000000000000008152600481018290527f00000000000000000000000000000000000000000000000000000000000000006024820152604401610941565b6000806142d9866140e7565b909250905086156143ec57614309888860008181106142fa576142fa614fc8565b9050013560f81c60f81b61451a565b614361578787600081811061432057614320614fc8565b6040517f6b3333560000000000000000000000000000000000000000000000000000000081529201356001600160f81b031916600483015250602401610941565b600160ff1b888860008161437757614377614fc8565b6001600160f81b031992013592909216161580159150614398575060218710155b156143ec5760006143ad602160018a8c6150bf565b6143b6916150e9565b60008181526008602052604090205490915060ff166143ea5760405162f20c5d60e01b815260048101829052602401610941565b505b81888860405160200161440193929190615107565b60408051601f1981840301815291905280516020909101209890975095505050505050565b600080888811614437576000614441565b6144418989614db7565b9050600089871161445357600061445d565b61445d8a88614db7565b905061271061446c8584614cfa565b6144769190614be5565b6144809089614bd2565b9750600086821161449257600061449c565b61449c8783614db7565b9050828111156144a95750815b808911156144de576144bb818a614db7565b9850868911156144de578589116144d257886144d4565b855b9350505050613b4a565b50949998505050505050505050565b6000612ab1826000015183602001518460400151856060015186608001518760a001518860c00151613ab0565b60006001600160f81b03198216158061454057506001600160f81b03198216600160ff1b145b8061457457506001600160f81b031982167f8800000000000000000000000000000000000000000000000000000000000000145b80612ab157506001600160f81b031982167f20000000000000000000000000000000000000000000000000000000000000001492915050565b6000602082840312156145bf57600080fd5b5035919050565b6001600160a01b03811681146133ad57600080fd5b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614614576146146145db565b60405290565b60405160e0810167ffffffffffffffff81118282101715614614576146146145db565b604051601f8201601f1916810167ffffffffffffffff81118282101715614666576146666145db565b604052919050565b803567ffffffffffffffff8116811461468657600080fd5b919050565b60006060828403121561469d57600080fd5b6040516060810181811067ffffffffffffffff821117156146c0576146c06145db565b6040529050806146cf8361466e565b81526146dd6020840161466e565b60208201526146ee6040840161466e565b60408201525092915050565b600080600083850361010081121561471157600080fd5b843561471c816145c6565b93506080601f198201121561473057600080fd5b506020840191506147448560a0860161468b565b90509250925092565b80151581146133ad57600080fd5b6000806040838503121561476e57600080fd5b8235614779816145c6565b915060208301356147898161474d565b809150509250929050565b6000602082840312156147a657600080fd5b8135612b13816145c6565b6000606082840312156147c357600080fd5b612b13838361468b565b600080600080600060a086880312156147e557600080fd5b853594506020860135935060408601356147fe816145c6565b94979396509394606081013594506080013592915050565b60008083601f84011261482857600080fd5b50813567ffffffffffffffff81111561484057600080fd5b60208301915083602082850101111561485857600080fd5b9250929050565b6000610100828403121561487257600080fd5b50919050565b6000806000806000806000806101c0898b03121561489557600080fd5b88359750602089013567ffffffffffffffff8111156148b357600080fd5b6148bf8b828c01614816565b9098509650506040890135945060608901356148da816145c6565b93506080890135925060a089013591506148f78a60c08b0161485f565b90509295985092959890939650565b60008060008060006080868803121561491e57600080fd5b85359450602086013567ffffffffffffffff81111561493c57600080fd5b61494888828901614816565b909550935050604086013591506060860135614963816145c6565b809150509295509295909350565b600080600080600080600060c0888a03121561498c57600080fd5b87359650602088013567ffffffffffffffff8111156149aa57600080fd5b6149b68a828b01614816565b9097509550506040880135935060608801356149d1816145c6565b969995985093969295946080840135945060a09093013592915050565b6000806000806000806101a08789031215614a0857600080fd5b86359550602087013594506040870135614a21816145c6565b93506060870135925060808701359150614a3e8860a0890161485f565b90509295509295509295565b600060808284031215614a5c57600080fd5b6040516080810181811067ffffffffffffffff82111715614a7f57614a7f6145db565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b60008060208385031215614ac357600080fd5b823567ffffffffffffffff811115614ada57600080fd5b614ae685828601614816565b90969095509350505050565b600060208284031215614b0457600080fd5b612b138261466e565b803560ff8116811461468657600080fd5b60008060008060008060e08789031215614b3757600080fd5b86359550614b4760208801614b0d565b94506080870188811115614b5a57600080fd5b60408801945035925060a0870135614b71816145c6565b8092505060c087013590509295509295509295565b600060208284031215614b9857600080fd5b5051919050565b600060208284031215614bb157600080fd5b8151612b13816145c6565b634e487b7160e01b600052601160045260246000fd5b80820180821115612ab157612ab1614bbc565b600082614c0257634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115614c42578160001904821115614c2857614c28614bbc565b80851615614c3557918102915b93841c9390800290614c0c565b509250929050565b600082614c5957506001612ab1565b81614c6657506000612ab1565b8160018114614c7c5760028114614c8657614ca2565b6001915050612ab1565b60ff841115614c9757614c97614bbc565b50506001821b612ab1565b5060208310610133831016604e8410600b8410161715614cc5575081810a612ab1565b614ccf8383614c07565b8060001904821115614ce357614ce3614bbc565b029392505050565b6000612b1360ff841683614c4a565b8082028115828204841417612ab157612ab1614bbc565b60006020808385031215614d2457600080fd5b825167ffffffffffffffff80821115614d3c57600080fd5b818501915085601f830112614d5057600080fd5b815181811115614d6257614d626145db565b8060051b9150614d7384830161463d565b8181529183018401918481019088841115614d8d57600080fd5b938501935b83851015614dab57845182529385019390850190614d92565b98975050505050505050565b81810381811115612ab157612ab1614bbc565b600060208284031215614ddc57600080fd5b8151612b138161474d565b60005b83811015614e02578181015183820152602001614dea565b50506000910152565b6020815260008251806020840152614e2a816040850160208701614de7565b601f01601f19169190910160400192915050565b600060e08201905085825284602083015267ffffffffffffffff8085511660408401528060208601511660608401528060408601511660808401528060608601511660a08401525060048310614ea457634e487b7160e01b600052602160045260246000fd5b8260c083015295945050505050565b6000818303610100811215614ec757600080fd5b614ecf6145f1565b8335815260e0601f1983011215614ee557600080fd5b614eed61461a565b9150614efb60208501614b0d565b82526040840135614f0b816145c6565b6020830152614f1c6060850161466e565b6040830152614f2d6080850161466e565b606083015260a0840135608083015260c084013560a083015260e084013560c0830152816020820152809250505092915050565b8183823760009101908152919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b67ffffffffffffffff818116838216019080821115614fc157614fc1614bbc565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60008251614ff0818460208701614de7565b9190910192915050565b6000806000806080858703121561501057600080fd5b505082516020840151604085015160609095015191969095509092509050565b815160009082906020808601845b8381101561505a5781518552938201939082019060010161503e565b50929695505050505050565b60008451615078818460208901614de7565b6001600160f81b03198516908301908152835161509c816001840160208801614de7565b0160010195945050505050565b634e487b7160e01b600052600160045260246000fd5b600080858511156150cf57600080fd5b838611156150dc57600080fd5b5050820193919092039150565b80356020831015612ab157600019602084900360031b1b1692915050565b60008451615119818460208901614de7565b820183858237600093019283525090939250505056fea2646970667358221220e6a2167a53b3aeb80193347598bf555c040dd934bdc36ce0bbf5089f02f9a34164736f6c63430008110033", + Bin: "0x610180604052306080526202000060a05246610100526200002b620001c8602090811b62002f7e17901c565b1515610120523480156200003e57600080fd5b5060405162005644380380620056448339810160408190526200006191620002a1565b838383838360e081815250506101205115620000a6576001600160a01b03831615620000a0576040516386657a5360e01b815260040160405180910390fd5b620000ef565b6001600160a01b038316620000ef576040516380fc2c0360e01b815260206004820152600a60248201526914995859195c8d0e0d0d60b21b604482015260640160405180910390fd5b6001600160a01b0392831660c05290151561014052151561016052600180549982166001600160a01b03199a8b1617815560028054909a1633179099558651600a80546020808b01516040808d01516060909d01516001600160401b03908116600160c01b026001600160c01b039e8216600160801b029e909e166001600160801b0393821668010000000000000000026001600160801b0319909616919097161793909317169390931799909917905597166000908152600390975250505091909220805460ff191690931790925550620003ca9050565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b17905290516000918291829160649162000208919062000399565b600060405180830381855afa9150503d806000811462000245576040519150601f19603f3d011682016040523d82523d6000602084013e6200024a565b606091505b50915091508180156200025e575080516020145b9250505090565b6001600160a01b03811681146200027b57600080fd5b50565b80516200028b8162000265565b919050565b805180151581146200028b57600080fd5b6000806000806000806000878903610140811215620002bf57600080fd5b8851620002cc8162000265565b60208a0151909850620002df8162000265565b96506080603f1982011215620002f457600080fd5b50604051608081016001600160401b03811182821017156200032657634e487b7160e01b600052604160045260246000fd5b806040525060408901518152606089015160208201526080890151604082015260a089015160608201528095505060c088015193506200036960e089016200027e565b92506200037a610100890162000290565b91506200038b610120890162000290565b905092959891949750929550565b6000825160005b81811015620003bc5760208186018101518583015201620003a0565b506000920191825250919050565b60805160a05160c05160e05161010051610120516101405161016051615165620004df6000396000818161044201528181610b8a0152818161157601528181611a65015281816120f80152818161254001528181612ac901528181612c5e0152818161317201526133b401526000818161061201528181610a490152818161352201526137430152600081816128aa015281816134c00152613ea80152600081816123b50152613a4101526000818161072c0152818161424c01526142a10152600081816105ad01528181611001015281816120a101528181613c9e0152613d790152600081816111e10152818161173201528181611f9601526122ab0152600081816108b1015261243401526151656000f3fe608060405234801561001057600080fd5b50600436106102ff5760003560e01c806371c3e6fe1161019c578063cc2a1a0c116100ee578063e78cea9211610097578063edaafe2011610071578063edaafe2014610776578063f1981578146107ff578063f60a50911461081257600080fd5b8063e78cea9214610714578063e8eb1dc314610727578063ebea461d1461074e57600080fd5b8063dd44e6e0116100c8578063dd44e6e0146106ae578063e0bc9729146106da578063e5a358c8146106ed57600080fd5b8063cc2a1a0c14610675578063d1ce8da814610688578063d9dd67ab1461069b57600080fd5b8063917cf8ac11610150578063a655d9371161012a578063a655d9371461063c578063b31761f81461064f578063cb23bcb51461066257600080fd5b8063917cf8ac146105fa57806392d9f7821461060d57806396cc5c781461063457600080fd5b8063844208601161018157806384420860146105955780638d910dde146105a85780638f111f3c146105e757600080fd5b806371c3e6fe146105695780637fa3a40e1461058c57600080fd5b80633e5aa082116102555780636c890450116102095780636e7df3e7116101e35780636e7df3e7146104ef5780636f12b0c914610502578063715ea34b1461051557600080fd5b80636c890450146104925780636d46e987146104b95780636e620055146104dc57600080fd5b80636633ae851161023a5780636633ae851461046457806369cacded146104775780636ae71f121461048a57600080fd5b80633e5aa0821461042a5780634b678a661461043d57600080fd5b80631f956632116102b757806327957a491161029157806327957a49146103e85780632cbf74e5146103f05780632f3985a71461041757600080fd5b80631f956632146103af5780631ff64790146103c2578063258f0495146103d557600080fd5b80631637be48116102e85780631637be481461035f57806316af91a7146103925780631ad87e451461039a57600080fd5b806302c992751461030457806306f1305614610349575b600080fd5b61032b7f200000000000000000000000000000000000000000000000000000000000000081565b6040516001600160f81b031990911681526020015b60405180910390f35b61035161081d565b604051908152602001610340565b61038261036d3660046145ad565b60009081526008602052604090205460ff1690565b6040519015158152602001610340565b61032b600081565b6103ad6103a83660046146fa565b6108a7565b005b6103ad6103bd36600461475b565b610bbd565b6103ad6103d0366004614794565b610ce9565b6103516103e33660046145ad565b610e81565b610351602881565b61032b7f500000000000000000000000000000000000000000000000000000000000000081565b6103ad6104253660046147b1565b610eee565b6103ad6104383660046147cd565b610ffe565b6103827f000000000000000000000000000000000000000000000000000000000000000081565b6103ad6104723660046145ad565b6112e7565b6103ad610485366004614878565b611504565b6103ad61183a565b61032b7f080000000000000000000000000000000000000000000000000000000000000081565b6103826104c7366004614794565b60096020526000908152604090205460ff1681565b6103ad6104ea366004614878565b611a12565b6103ad6104fd36600461475b565b611ac4565b6103ad610510366004614906565b611bf0565b6105496105233660046145ad565b60086020526000908152604090205460ff811690610100900467ffffffffffffffff1682565b60408051921515835267ffffffffffffffff909116602083015201610340565b610382610577366004614794565b60036020526000908152604090205460ff1681565b61035160005481565b6103ad6105a33660046145ad565b611c22565b6105cf7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610340565b6103ad6105f5366004614971565b611d97565b6103ad6106083660046149ee565b61209e565b6103827f000000000000000000000000000000000000000000000000000000000000000081565b6103ad6123b2565b6103ad61064a3660046147b1565b61242a565b6103ad61065d366004614a4a565b6125ce565b6002546105cf906001600160a01b031681565b600b546105cf906001600160a01b031681565b6103ad610696366004614ab0565b6126dd565b6103516106a93660046145ad565b612a2a565b6106c16106bc366004614af2565b612ab7565b60405167ffffffffffffffff9091168152602001610340565b6103ad6106e8366004614971565b612b1a565b61032b7f400000000000000000000000000000000000000000000000000000000000000081565b6001546105cf906001600160a01b031681565b6103517f000000000000000000000000000000000000000000000000000000000000000081565b610756612ba2565b604080519485526020850193909352918301526060820152608001610340565b600c54600d546107bc9167ffffffffffffffff8082169268010000000000000000808404831693600160801b8104841693600160c01b9091048116928082169290041686565b6040805167ffffffffffffffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c001610340565b6103ad61080d366004614b1e565b612bdb565b61032b600160ff1b81565b600154604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa15801561087e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a29190614b86565b905090565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361094a5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001546001600160a01b03161561098d576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383166109cd576040517f1ad0f74300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000836001600160a01b031663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a29575060408051601f3d908101601f19168201909252610a2691810190614b9f565b60015b15610a44576001600160a01b03811615610a4257600191505b505b8015157f0000000000000000000000000000000000000000000000000000000000000000151514610aa1576040517fc3e31f8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038616908117909155604080517fcb23bcb5000000000000000000000000000000000000000000000000000000008152905163cb23bcb5916004808201926020929091908290030181865afa158015610b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b449190614b9f565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055610b88610b8336859003850185614a4a565b613044565b7f000000000000000000000000000000000000000000000000000000000000000015610bb757610bb782613170565b50505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c349190614b9f565b6001600160a01b0316336001600160a01b031614158015610c605750600b546001600160a01b03163314155b15610c99576040517f660b3b42000000000000000000000000000000000000000000000000000000008152336004820152602401610941565b6001600160a01b038216600090815260096020526040808220805460ff1916841515179055516004917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d609190614b9f565b6001600160a01b0316336001600160a01b031614610e2a5760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de59190614b9f565b6040517f23295f0e0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015291166024820152604401610941565b600b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556040516005907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b600081815260086020908152604080832081518083019092525460ff811615158252610100900467ffffffffffffffff16918101829052908203610eda5760405162f20c5d60e01b815260048101849052602401610941565b6020015167ffffffffffffffff1692915050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f659190614b9f565b6001600160a01b0316336001600160a01b031614610fc65760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dc1573d6000803e3d6000fd5b610fcf81613170565b6040516006907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b827f000000000000000000000000000000000000000000000000000000000000000060005a3360009081526003602052604090205490915060ff1661105657604051632dd9fc9760e01b815260040160405180910390fd5b61105f876133b0565b1561107d57604051630e5da8fb60e01b815260040160405180910390fd5b611089888887876133f8565b6001600160a01b038316156112dd5736600060206110a883601f614bd2565b6110b29190614be5565b90506102006110c2600283614ceb565b6110cc9190614be5565b6110d7826006614cfa565b6110e19190614bd2565b6110eb9084614bd2565b92503332146110fd5760009150611230565b6001600160a01b0384161561123057836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561116b57506040513d6000823e601f3d908101601f191682016040526111689190810190614d11565b60015b156112305780511561122e576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111db9190614b86565b905048817f0000000000000000000000000000000000000000000000000000000000000000845161120c9190614cfa565b6112169190614cfa565b6112209190614be5565b61122a9086614bd2565b9450505b505b846001600160a01b031663e3db8a49335a61124b9087614db7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af11580156112b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d99190614dca565b5050505b5050505050505050565b6000816040516020016112fc91815260200190565b60408051808303601f1901815290829052600154815160208301207f8db5993b000000000000000000000000000000000000000000000000000000008452600b6004850152600060248501819052604485019190915291935090916001600160a01b0390911690638db5993b906064016020604051808303816000875af115801561138b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113af9190614b86565b905080156113ff5760405162461bcd60e51b815260206004820152601460248201527f414c52454144595f44454c415945445f494e49540000000000000000000000006044820152606401610941565b807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b8360405161142f9190614e0b565b60405180910390a26000806114446001613554565b9150915060008060008061145e8660016000806001613599565b9350935093509350836000146114b65760405162461bcd60e51b815260206004820152601060248201527f414c52454144595f5345515f494e4954000000000000000000000000000000006044820152606401610941565b8083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548a60026040516114f19493929190614e3e565b60405180910390a4505050505050505050565b836000805a9050333214611544576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff1661157457604051632dd9fc9760e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006115b257604051631192b39960e31b815260040160405180910390fd5b6115ca886115c536879003870187614eb3565b613782565b6115da8b8b8b8b8a8a600161388f565b6001600160a01b038316156112d95736600060206115f983601f614bd2565b6116039190614be5565b9050610200611613600283614ceb565b61161d9190614be5565b611628826006614cfa565b6116329190614bd2565b61163c9084614bd2565b925033321461164e5760009150611781565b6001600160a01b0384161561178157836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa9250505080156116bc57506040513d6000823e601f3d908101601f191682016040526116b99190810190614d11565b60015b156117815780511561177f576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611708573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172c9190614b86565b905048817f0000000000000000000000000000000000000000000000000000000000000000845161175d9190614cfa565b6117679190614cfa565b6117719190614be5565b61177b9086614bd2565b9450505b505b846001600160a01b031663e3db8a49335a61179c9087614db7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af1158015611806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182a9190614dca565b5050505050505050505050505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561188d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b19190614b9f565b6001600160a01b0316336001600160a01b0316146119125760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dc1573d6000803e3d6000fd5b600154604080517fcb23bcb500000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cb23bcb59160048083019260209291908290030181865afa158015611975573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119999190614b9f565b6002549091506001600160a01b038083169116036119e3576040517fd054909f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b836000805a3360009081526003602052604090205490915060ff16158015611a4557506002546001600160a01b03163314155b15611a6357604051632dd9fc9760e01b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000611aa157604051631192b39960e31b815260040160405180910390fd5b611ab4886115c536879003870187614eb3565b6115da8b8b8b8b8a8a600061388f565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3b9190614b9f565b6001600160a01b0316336001600160a01b031614158015611b675750600b546001600160a01b03163314155b15611ba0576040517f660b3b42000000000000000000000000000000000000000000000000000000008152336004820152602401610941565b6001600160a01b038216600090815260036020526040808220805460ff1916841515179055516001917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b6040517fc73b9d7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c999190614b9f565b6001600160a01b0316336001600160a01b031614611cfa5760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dc1573d6000803e3d6000fd5b60008181526008602052604090205460ff16611d2b5760405162f20c5d60e01b815260048101829052602401610941565b600081815260086020526040808220805460ff191690555182917f5cb4218b272fd214168ac43e90fb4d05d6c36f0b17ffb4c2dd07c234d744eb2a91a26040516003907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b826000805a9050333214611dd7576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff16611e0757604051632dd9fc9760e01b815260040160405180910390fd5b611e10876133b0565b15611e2e57604051630e5da8fb60e01b815260040160405180910390fd5b611e3e8a8a8a8a8989600161388f565b6001600160a01b03831615612092573660006020611e5d83601f614bd2565b611e679190614be5565b9050610200611e77600283614ceb565b611e819190614be5565b611e8c826006614cfa565b611e969190614bd2565b611ea09084614bd2565b9250333214611eb25760009150611fe5565b6001600160a01b03841615611fe557836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa925050508015611f2057506040513d6000823e601f3d908101601f19168201604052611f1d9190810190614d11565b60015b15611fe557805115611fe3576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190614b86565b905048817f00000000000000000000000000000000000000000000000000000000000000008451611fc19190614cfa565b611fcb9190614cfa565b611fd59190614be5565b611fdf9086614bd2565b9450505b505b846001600160a01b031663e3db8a49335a6120009087614db7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af115801561206a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208e9190614dca565b5050505b50505050505050505050565b837f000000000000000000000000000000000000000000000000000000000000000060005a3360009081526003602052604090205490915060ff166120f657604051632dd9fc9760e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061213457604051631192b39960e31b815260040160405180910390fd5b612147886115c536879003870187614eb3565b612153898988886133f8565b6001600160a01b038316156123a757366000602061217283601f614bd2565b61217c9190614be5565b905061020061218c600283614ceb565b6121969190614be5565b6121a1826006614cfa565b6121ab9190614bd2565b6121b59084614bd2565b92503332146121c757600091506122fa565b6001600160a01b038416156122fa57836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561223557506040513d6000823e601f3d908101601f191682016040526122329190810190614d11565b60015b156122fa578051156122f8576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a59190614b86565b905048817f000000000000000000000000000000000000000000000000000000000000000084516122d69190614cfa565b6122e09190614cfa565b6122ea9190614be5565b6122f49086614bd2565b9450505b505b846001600160a01b031663e3db8a49335a6123159087614db7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af115801561237f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a39190614dca565b5050505b505050505050505050565b467f00000000000000000000000000000000000000000000000000000000000000000361240b576040517fa301bb0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7801000000000000000100000000000000010000000000000001600a55565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036124c85760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610941565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b0382161461253e576040517f23295f0e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0382166024820152604401610941565b7f000000000000000000000000000000000000000000000000000000000000000061257c57604051631192b39960e31b815260040160405180910390fd5b600c5467ffffffffffffffff16156125c0576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6125c983613170565b505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612621573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126459190614b9f565b6001600160a01b0316336001600160a01b0316146126a65760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dc1573d6000803e3d6000fd5b6126af81613044565b6040516000907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e908290a250565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127549190614b9f565b6001600160a01b0316336001600160a01b0316146127b55760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dc1573d6000803e3d6000fd5b600082826040516127c7929190614f61565b6040519081900381207ffe000000000000000000000000000000000000000000000000000000000000006020830152602182015260410160408051601f1981840301815291905280516020909101209050600160ff1b811862010000831061285b576040517fb3d1f41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526008602052604090205460ff16156128a7576040517ffa2fddda00000000000000000000000000000000000000000000000000000000815260048101829052602401610941565b437f0000000000000000000000000000000000000000000000000000000000000000156129345760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561290d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129319190614b86565b90505b6040805180820182526001815267ffffffffffffffff8381166020808401918252600087815260089091528490209251835491517fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000009092169015157fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff161761010091909216021790555182907fabca9b7986bc22ad0160eb0cb88ae75411eacfba4052af0b457a9335ef655722906129ef9088908890614f71565b60405180910390a26040516002907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a25050505050565b6001546040517f16bf5579000000000000000000000000000000000000000000000000000000008152600481018390526000916001600160a01b0316906316bf557990602401602060405180830381865afa158015612a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab19190614b86565b92915050565b600a5460009067ffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000015612b09576000612afa600c856139ba565b9050612b0581613a09565b9150505b612b138184614fa0565b9392505050565b826000805a3360009081526003602052604090205490915060ff16158015612b4d57506002546001600160a01b03163314155b15612b6b57604051632dd9fc9760e01b815260040160405180910390fd5b612b74876133b0565b15612b9257604051630e5da8fb60e01b815260040160405180910390fd5b611e3e8a8a8a8a8989600061388f565b600080600080600080600080612bb6613a39565b67ffffffffffffffff9384169b50918316995082169750169450505050505b90919293565b6000548611612c16576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612c4c8684612c2a6020890189614af2565b612c3a60408a0160208b01614af2565b612c4560018d614db7565b8988613ab0565b600a5490915067ffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000015612cbd57612c9a612c926020880188614af2565b600c90613b55565b600c54612cb09067ffffffffffffffff16613a09565b67ffffffffffffffff1690505b4381612ccc6020890189614af2565b67ffffffffffffffff16612ce09190614bd2565b10612d17576040517fad3515d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001891115612da0576001546001600160a01b031663d5719dc2612d3e60028c614db7565b6040518263ffffffff1660e01b8152600401612d5c91815260200190565b602060405180830381865afa158015612d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9d9190614b86565b90505b60408051602080820184905281830186905282518083038401815260609092019092528051910120600180546001600160a01b03169063d5719dc290612de6908d614db7565b6040518263ffffffff1660e01b8152600401612e0491815260200190565b602060405180830381865afa158015612e21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e459190614b86565b14612e7c576040517f13947fd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080612e888b613554565b9150915060008b90506000600160009054906101000a90046001600160a01b03166001600160a01b0316635fca4a166040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ee6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0a9190614b86565b9050806000808080612f1f8988838880613599565b93509350935093508083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548d6002604051612f629493929190614e3e565b60405180910390a4505050505050505050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491612fea9190614fde565b600060405180830381855afa9150503d8060008114613025576040519150601f19603f3d011682016040523d82523d6000602084013e61302a565b606091505b509150915081801561303d575080516020145b9250505090565b805167ffffffffffffffff10806130665750602081015167ffffffffffffffff105b8061307c5750604081015167ffffffffffffffff105b806130925750606081015167ffffffffffffffff105b156130c9576040517f09cfba7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600a80546020840151604085015160609095015167ffffffffffffffff908116600160c01b0277ffffffffffffffffffffffffffffffffffffffffffffffff968216600160801b02969096166fffffffffffffffffffffffffffffffff92821668010000000000000000027fffffffffffffffffffffffffffffffff000000000000000000000000000000009094169190951617919091171691909117919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006131ae57604051631192b39960e31b815260040160405180910390fd5b6131b781613bdb565b6131ed576040517fda1c8eb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c5467ffffffffffffffff16158061321957506020810151600c5467ffffffffffffffff9182169116115b15613245576020810151600c805467ffffffffffffffff191667ffffffffffffffff9092169190911790555b8051600c5467ffffffffffffffff91821691161015613282578051600c805467ffffffffffffffff191667ffffffffffffffff9092169190911790555b602081810151600c805484517fffffffffffffffff00000000000000000000000000000000ffffffffffffffff9091166801000000000000000067ffffffffffffffff948516027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1617600160801b91841691909102179055604080840151600d805467ffffffffffffffff1916919093161790915560005460015482517feca067ad000000000000000000000000000000000000000000000000000000008152925191936001600160a01b039091169263eca067ad92600480830193928290030181865afa158015613379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339d9190614b86565b036133ad576133ad600c43613b55565b50565b60007f000000000000000000000000000000000000000000000000000000000000000080156133e0575060005482115b8015612ab157506133f1600c613c43565b1592915050565b600080600061340686613c76565b925092509250600080600080613420878b60008c8c613599565b93509350935093508a841415801561343a57506000198b14155b1561347b576040517fac7411c900000000000000000000000000000000000000000000000000000000815260048101859052602481018c9052604401610941565b80838c7f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548b60036040516134b69493929190614e3e565b60405180910390a47f000000000000000000000000000000000000000000000000000000000000000015613516576040517f86657a5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b333214801561354357507f0000000000000000000000000000000000000000000000000000000000000000155b156112d9576112d987854888613ea5565b6040805160808101825260008082526020820181905291810182905260608101829052600080613583856140e7565b8151602090920191909120969095509350505050565b6000806000806000548810156135db576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663eca067ad6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561362e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136529190614b86565b88111561368b576040517f925f8bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f86598a56000000000000000000000000000000000000000000000000000000008152600481018b9052602481018a905260448101889052606481018790526001600160a01b03909116906386598a56906084016080604051808303816000875af1158015613704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137289190614ffa565b60008c905592965090945092509050861580159061376457507f0000000000000000000000000000000000000000000000000000000000000000155b15613776576137768985486000613ea5565b95509550955095915050565b60005482111561388b57613796600c6141a2565b1561388b57600154600080546040517fd5719dc200000000000000000000000000000000000000000000000000000000815291926001600160a01b03169163d5719dc2916137ea9160040190815260200190565b602060405180830381865afa158015613807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061382b9190614b86565b905061384081836000015184602001516141d3565b613876576040517fc334542d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020820151604001516125c990600c90613b55565b5050565b60008061389d888888614218565b915091506000806000806138c1868b896138b85760006138ba565b8d5b8c8c613599565b93509350935093508c84141580156138db57506000198d14155b1561391c576040517fac7411c900000000000000000000000000000000000000000000000000000000815260048101859052602481018e9052604401610941565b8083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548a8d613951576001613954565b60005b6040516139649493929190614e3e565b60405180910390a48661208e57837ffe325ca1efe4c5c1062c981c3ee74b781debe4ea9440306a96d2a55759c66c208d8d6040516139a3929190614f71565b60405180910390a250505050505050505050505050565b81546001830154600091612b139167ffffffffffffffff600160c01b8304811692868216928282169268010000000000000000808304821693600160801b810483169391900482169116614426565b600a5460009067ffffffffffffffff90811690831610613a3557600a5467ffffffffffffffff16612ab1565b5090565b6000808080467f000000000000000000000000000000000000000000000000000000000000000014613a7657506001925082915081905080612bd5565b5050600a5467ffffffffffffffff808216935068010000000000000000820481169250600160801b8204811691600160c01b900416612bd5565b6040516001600160f81b031960f889901b1660208201526bffffffffffffffffffffffff19606088901b1660218201527fffffffffffffffff00000000000000000000000000000000000000000000000060c087811b8216603584015286901b16603d82015260458101849052606581018390526085810182905260009060a5016040516020818303038152906040528051906020012090505b979650505050505050565b613b5f82826139ba565b825467ffffffffffffffff928316600160c01b0277ffffffffffffffffffffffffffffffff000000000000000090911691831691909117178255600190910180544390921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b805160009067ffffffffffffffff1615801590613c055750602082015167ffffffffffffffff1615155b8015613c215750612710826040015167ffffffffffffffff1611155b8015612ab15750506020810151905167ffffffffffffffff9182169116111590565b805460009067ffffffffffffffff600160801b8204811691613c6e91600160c01b9091041643614db7565b111592915050565b60408051608081018252600080825260208201819052918101829052606081018290526000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa158015613cfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d229190810190614d11565b90508051600003613d5f576040517f3cd27eb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080613d6b876140e7565b9150915060008351620200007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613dd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df99190614b86565b613e039190614cfa565b613e0d9190614cfa565b60405190915083907f500000000000000000000000000000000000000000000000000000000000000090613e45908790602001615030565b60408051601f1981840301815290829052613e64939291602001615066565b604051602081830303815290604052805190602001208260004811613e8a576000613e94565b613e944884614be5565b965096509650505050509193909250565b327f000000000000000000000000000000000000000000000000000000000000000015613f4b576000606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f319190614b86565b9050613f3d4882614be5565b613f479084614bd2565b9250505b67ffffffffffffffff821115613f8d576040517f04d5501200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080514260208201526bffffffffffffffffffffffff19606084901b16918101919091526054810186905260748101859052609481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c084901b1660b482015260009060bc0160408051808303601f1901815290829052600154815160208301207f7a88b1070000000000000000000000000000000000000000000000000000000084526001600160a01b0386811660048601526024850191909152919350600092911690637a88b107906044016020604051808303816000875af1158015614080573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140a49190614b86565b9050807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b836040516140d69190614e0b565b60405180910390a250505050505050565b604080516080808201835260008083526020808401829052838501829052606080850183905285519384018652828452838201839052838601839052838101839052855191820183905260288201839052603082018390526038820183905260c087901b7fffffffffffffffff000000000000000000000000000000000000000000000000169582019590955260480160405160208183030381529060405290506028815114614199576141996150a9565b94909350915050565b60006141ad82613c43565b1580612ab15750505467ffffffffffffffff680100000000000000008204811691161090565b600061420e836141e2846144ed565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b9093149392505050565b60408051608081018252600080825260208201819052918101829052606081018290526000614248856028614bd2565b90507f00000000000000000000000000000000000000000000000000000000000000008111156142cd576040517f4634691b000000000000000000000000000000000000000000000000000000008152600481018290527f00000000000000000000000000000000000000000000000000000000000000006024820152604401610941565b6000806142d9866140e7565b909250905086156143ec57614309888860008181106142fa576142fa614fc8565b9050013560f81c60f81b61451a565b614361578787600081811061432057614320614fc8565b6040517f6b3333560000000000000000000000000000000000000000000000000000000081529201356001600160f81b031916600483015250602401610941565b600160ff1b888860008161437757614377614fc8565b6001600160f81b031992013592909216161580159150614398575060218710155b156143ec5760006143ad602160018a8c6150bf565b6143b6916150e9565b60008181526008602052604090205490915060ff166143ea5760405162f20c5d60e01b815260048101829052602401610941565b505b81888860405160200161440193929190615107565b60408051601f1981840301815291905280516020909101209890975095505050505050565b600080888811614437576000614441565b6144418989614db7565b9050600089871161445357600061445d565b61445d8a88614db7565b905061271061446c8584614cfa565b6144769190614be5565b6144809089614bd2565b9750600086821161449257600061449c565b61449c8783614db7565b9050828111156144a95750815b808911156144de576144bb818a614db7565b9850868911156144de578589116144d257886144d4565b855b9350505050613b4a565b50949998505050505050505050565b6000612ab1826000015183602001518460400151856060015186608001518760a001518860c00151613ab0565b60006001600160f81b03198216158061454057506001600160f81b03198216600160ff1b145b8061457457506001600160f81b031982167f8800000000000000000000000000000000000000000000000000000000000000145b80612ab157506001600160f81b031982167f20000000000000000000000000000000000000000000000000000000000000001492915050565b6000602082840312156145bf57600080fd5b5035919050565b6001600160a01b03811681146133ad57600080fd5b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614614576146146145db565b60405290565b60405160e0810167ffffffffffffffff81118282101715614614576146146145db565b604051601f8201601f1916810167ffffffffffffffff81118282101715614666576146666145db565b604052919050565b803567ffffffffffffffff8116811461468657600080fd5b919050565b60006060828403121561469d57600080fd5b6040516060810181811067ffffffffffffffff821117156146c0576146c06145db565b6040529050806146cf8361466e565b81526146dd6020840161466e565b60208201526146ee6040840161466e565b60408201525092915050565b600080600083850361010081121561471157600080fd5b843561471c816145c6565b93506080601f198201121561473057600080fd5b506020840191506147448560a0860161468b565b90509250925092565b80151581146133ad57600080fd5b6000806040838503121561476e57600080fd5b8235614779816145c6565b915060208301356147898161474d565b809150509250929050565b6000602082840312156147a657600080fd5b8135612b13816145c6565b6000606082840312156147c357600080fd5b612b13838361468b565b600080600080600060a086880312156147e557600080fd5b853594506020860135935060408601356147fe816145c6565b94979396509394606081013594506080013592915050565b60008083601f84011261482857600080fd5b50813567ffffffffffffffff81111561484057600080fd5b60208301915083602082850101111561485857600080fd5b9250929050565b6000610100828403121561487257600080fd5b50919050565b6000806000806000806000806101c0898b03121561489557600080fd5b88359750602089013567ffffffffffffffff8111156148b357600080fd5b6148bf8b828c01614816565b9098509650506040890135945060608901356148da816145c6565b93506080890135925060a089013591506148f78a60c08b0161485f565b90509295985092959890939650565b60008060008060006080868803121561491e57600080fd5b85359450602086013567ffffffffffffffff81111561493c57600080fd5b61494888828901614816565b909550935050604086013591506060860135614963816145c6565b809150509295509295909350565b600080600080600080600060c0888a03121561498c57600080fd5b87359650602088013567ffffffffffffffff8111156149aa57600080fd5b6149b68a828b01614816565b9097509550506040880135935060608801356149d1816145c6565b969995985093969295946080840135945060a09093013592915050565b6000806000806000806101a08789031215614a0857600080fd5b86359550602087013594506040870135614a21816145c6565b93506060870135925060808701359150614a3e8860a0890161485f565b90509295509295509295565b600060808284031215614a5c57600080fd5b6040516080810181811067ffffffffffffffff82111715614a7f57614a7f6145db565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b60008060208385031215614ac357600080fd5b823567ffffffffffffffff811115614ada57600080fd5b614ae685828601614816565b90969095509350505050565b600060208284031215614b0457600080fd5b612b138261466e565b803560ff8116811461468657600080fd5b60008060008060008060e08789031215614b3757600080fd5b86359550614b4760208801614b0d565b94506080870188811115614b5a57600080fd5b60408801945035925060a0870135614b71816145c6565b8092505060c087013590509295509295509295565b600060208284031215614b9857600080fd5b5051919050565b600060208284031215614bb157600080fd5b8151612b13816145c6565b634e487b7160e01b600052601160045260246000fd5b80820180821115612ab157612ab1614bbc565b600082614c0257634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115614c42578160001904821115614c2857614c28614bbc565b80851615614c3557918102915b93841c9390800290614c0c565b509250929050565b600082614c5957506001612ab1565b81614c6657506000612ab1565b8160018114614c7c5760028114614c8657614ca2565b6001915050612ab1565b60ff841115614c9757614c97614bbc565b50506001821b612ab1565b5060208310610133831016604e8410600b8410161715614cc5575081810a612ab1565b614ccf8383614c07565b8060001904821115614ce357614ce3614bbc565b029392505050565b6000612b1360ff841683614c4a565b8082028115828204841417612ab157612ab1614bbc565b60006020808385031215614d2457600080fd5b825167ffffffffffffffff80821115614d3c57600080fd5b818501915085601f830112614d5057600080fd5b815181811115614d6257614d626145db565b8060051b9150614d7384830161463d565b8181529183018401918481019088841115614d8d57600080fd5b938501935b83851015614dab57845182529385019390850190614d92565b98975050505050505050565b81810381811115612ab157612ab1614bbc565b600060208284031215614ddc57600080fd5b8151612b138161474d565b60005b83811015614e02578181015183820152602001614dea565b50506000910152565b6020815260008251806020840152614e2a816040850160208701614de7565b601f01601f19169190910160400192915050565b600060e08201905085825284602083015267ffffffffffffffff8085511660408401528060208601511660608401528060408601511660808401528060608601511660a08401525060048310614ea457634e487b7160e01b600052602160045260246000fd5b8260c083015295945050505050565b6000818303610100811215614ec757600080fd5b614ecf6145f1565b8335815260e0601f1983011215614ee557600080fd5b614eed61461a565b9150614efb60208501614b0d565b82526040840135614f0b816145c6565b6020830152614f1c6060850161466e565b6040830152614f2d6080850161466e565b606083015260a0840135608083015260c084013560a083015260e084013560c0830152816020820152809250505092915050565b8183823760009101908152919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b67ffffffffffffffff818116838216019080821115614fc157614fc1614bbc565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60008251614ff0818460208701614de7565b9190910192915050565b6000806000806080858703121561501057600080fd5b505082516020840151604085015160609095015191969095509092509050565b815160009082906020808601845b8381101561505a5781518552938201939082019060010161503e565b50929695505050505050565b60008451615078818460208901614de7565b6001600160f81b03198516908301908152835161509c816001840160208801614de7565b0160010195945050505050565b634e487b7160e01b600052600160045260246000fd5b600080858511156150cf57600080fd5b838611156150dc57600080fd5b5050820193919092039150565b80356020831015612ab157600019602084900360031b1b1692915050565b60008451615119818460208901614de7565b820183858237600093019283525090939250505056fea26469706673582212208f1f825b5fb8648e940d6bfde369ed58a138e34cdd9088bc71154120f659f1ec64736f6c63430008110033", } // SequencerInboxStubABI is the input ABI used to generate the binding from. @@ -12424,7 +12424,7 @@ func (_Simple *SimpleFilterer) ParseRedeemedEvent(log types.Log) (*SimpleRedeeme // SimpleOneStepProofEntryMetaData contains all meta data concerning the SimpleOneStepProofEntry contract. var SimpleOneStepProofEntryMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"STEPS_PER_BATCH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"execState\",\"type\":\"tuple\"}],\"name\":\"getMachineHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"globalStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"}],\"name\":\"getStartMachineHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxInboxMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIBridge\",\"name\":\"bridge\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"initialWasmModuleRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structExecutionContext\",\"name\":\"execCtx\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"step\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"beforeHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"proveOneStep\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"afterHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50610990806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806304997be4146100515780639c2009cd146100cd578063b5112fd2146100ef578063c39619c414610102575b600080fd5b6100ba61005f36600461062e565b6040517f4d616368696e653a0000000000000000000000000000000000000000000000006020820152602881018390526048810182905260009060680160405160208183030381529060405280519060200120905092915050565b6040519081526020015b60405180910390f35b6100d66107d081565b60405167ffffffffffffffff90911681526020016100c4565b6100ba6100fd366004610650565b610115565b6100ba6101103660046106ec565b610439565b600081810361016b5760405162461bcd60e51b815260206004820152600b60248201527f454d5054595f50524f4f4600000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6101736105eb565b600061018085858361055f565b602084015167ffffffffffffffff90921690915290506101a185858361055f565b60208481015167ffffffffffffffff9093169201919091529050861580159061020a57508560001a60f81b7fff0000000000000000000000000000000000000000000000000000000000000016158061020a57506101fe826105c7565b67ffffffffffffffff16155b15610219578592505050610430565b8735610224836105dd565b67ffffffffffffffff161061023d578592505050610430565b8151805160209182015182850151805190840151604080517f476c6f62616c2073746174653a0000000000000000000000000000000000000081880152602d810195909552604d8501939093527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116606d860152911b1660758301528051808303605d018152607d9092019052805191012086146103235760405162461bcd60e51b815260206004820152600960248201527f4241445f50524f4f4600000000000000000000000000000000000000000000006044820152606401610162565b6020828101510180519061033682610730565b67ffffffffffffffff169052506020828101510151610358906107d090610757565b67ffffffffffffffff1660000361039357602082015180519061037a82610730565b67ffffffffffffffff1690525060208281015160009101525b8151805160209182015182850151805190840151604080517f476c6f62616c2073746174653a0000000000000000000000000000000000000081880152602d810195909552604d8501939093527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116606d860152911b1660758301528051808303605d018152607d90920190528051910120925050505b95945050505050565b6000600161044d60a08401608085016107a2565b600281111561045e5761045e61078c565b146104ab5760405162461bcd60e51b815260206004820152601260248201527f4241445f4d414348494e455f53544154555300000000000000000000000000006044820152606401610162565b6105596104bd36849003840184610889565b8051805160209182015192820151805190830151604080517f476c6f62616c2073746174653a0000000000000000000000000000000000000081870152602d810194909452604d8401959095527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116606d850152911b1660758201528251808203605d018152607d909101909252815191012090565b92915050565b600081815b60088110156105be5760088367ffffffffffffffff16901b925085858381811061059057610590610704565b919091013560f81c939093179250816105a881610922565b92505080806105b690610922565b915050610564565b50935093915050565b602081015160009060015b602002015192915050565b6020810151600090816105d2565b60405180604001604052806105fe610610565b815260200161060b610610565b905290565b60405180604001604052806002906020820280368337509192915050565b6000806040838503121561064157600080fd5b50508035926020909101359150565b600080600080600085870360c081121561066957600080fd5b606081121561067757600080fd5b50859450606086013593506080860135925060a086013567ffffffffffffffff808211156106a457600080fd5b818801915088601f8301126106b857600080fd5b8135818111156106c757600080fd5b8960208285010111156106d957600080fd5b9699959850939650602001949392505050565b600060a082840312156106fe57600080fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600067ffffffffffffffff80831681810361074d5761074d61071a565b6001019392505050565b600067ffffffffffffffff8084168061078057634e487b7160e01b600052601260045260246000fd5b92169190910692915050565b634e487b7160e01b600052602160045260246000fd5b6000602082840312156107b457600080fd5b8135600381106107c357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610803576108036107ca565b60405290565b600082601f83011261081a57600080fd5b6040516040810167ffffffffffffffff828210818311171561083e5761083e6107ca565b6040918252829185018681111561085457600080fd5b855b8181101561087d578035838116811461086f5760008081fd5b845260209384019301610856565b50929695505050505050565b60006080828403121561089b57600080fd5b6040516040810181811067ffffffffffffffff821117156108be576108be6107ca565b604052601f830184136108d057600080fd5b6108d86107e0565b8060408501868111156108ea57600080fd5b855b818110156109045780358452602093840193016108ec565b508184526109128782610809565b6020850152509195945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036109535761095361071a565b506001019056fea26469706673582212204b44c5e0d966ac162869b93db7c5aa2eef563ff13dc0a1123f3ecdc2717d8e6764736f6c63430008110033", + Bin: "0x608060405234801561001057600080fd5b50610990806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806304997be4146100515780639c2009cd146100cd578063b5112fd2146100ef578063c39619c414610102575b600080fd5b6100ba61005f36600461062e565b6040517f4d616368696e653a0000000000000000000000000000000000000000000000006020820152602881018390526048810182905260009060680160405160208183030381529060405280519060200120905092915050565b6040519081526020015b60405180910390f35b6100d66107d081565b60405167ffffffffffffffff90911681526020016100c4565b6100ba6100fd366004610650565b610115565b6100ba6101103660046106ec565b610439565b600081810361016b5760405162461bcd60e51b815260206004820152600b60248201527f454d5054595f50524f4f4600000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6101736105eb565b600061018085858361055f565b602084015167ffffffffffffffff90921690915290506101a185858361055f565b60208481015167ffffffffffffffff9093169201919091529050861580159061020a57508560001a60f81b7fff0000000000000000000000000000000000000000000000000000000000000016158061020a57506101fe826105c7565b67ffffffffffffffff16155b15610219578592505050610430565b8735610224836105dd565b67ffffffffffffffff161061023d578592505050610430565b8151805160209182015182850151805190840151604080517f476c6f62616c2073746174653a0000000000000000000000000000000000000081880152602d810195909552604d8501939093527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116606d860152911b1660758301528051808303605d018152607d9092019052805191012086146103235760405162461bcd60e51b815260206004820152600960248201527f4241445f50524f4f4600000000000000000000000000000000000000000000006044820152606401610162565b6020828101510180519061033682610730565b67ffffffffffffffff169052506020828101510151610358906107d090610757565b67ffffffffffffffff1660000361039357602082015180519061037a82610730565b67ffffffffffffffff1690525060208281015160009101525b8151805160209182015182850151805190840151604080517f476c6f62616c2073746174653a0000000000000000000000000000000000000081880152602d810195909552604d8501939093527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116606d860152911b1660758301528051808303605d018152607d90920190528051910120925050505b95945050505050565b6000600161044d60a08401608085016107a2565b600281111561045e5761045e61078c565b146104ab5760405162461bcd60e51b815260206004820152601260248201527f4241445f4d414348494e455f53544154555300000000000000000000000000006044820152606401610162565b6105596104bd36849003840184610889565b8051805160209182015192820151805190830151604080517f476c6f62616c2073746174653a0000000000000000000000000000000000000081870152602d810194909452604d8401959095527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116606d850152911b1660758201528251808203605d018152607d909101909252815191012090565b92915050565b600081815b60088110156105be5760088367ffffffffffffffff16901b925085858381811061059057610590610704565b919091013560f81c939093179250816105a881610922565b92505080806105b690610922565b915050610564565b50935093915050565b602081015160009060015b602002015192915050565b6020810151600090816105d2565b60405180604001604052806105fe610610565b815260200161060b610610565b905290565b60405180604001604052806002906020820280368337509192915050565b6000806040838503121561064157600080fd5b50508035926020909101359150565b600080600080600085870360c081121561066957600080fd5b606081121561067757600080fd5b50859450606086013593506080860135925060a086013567ffffffffffffffff808211156106a457600080fd5b818801915088601f8301126106b857600080fd5b8135818111156106c757600080fd5b8960208285010111156106d957600080fd5b9699959850939650602001949392505050565b600060a082840312156106fe57600080fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600067ffffffffffffffff80831681810361074d5761074d61071a565b6001019392505050565b600067ffffffffffffffff8084168061078057634e487b7160e01b600052601260045260246000fd5b92169190910692915050565b634e487b7160e01b600052602160045260246000fd5b6000602082840312156107b457600080fd5b8135600381106107c357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610803576108036107ca565b60405290565b600082601f83011261081a57600080fd5b6040516040810167ffffffffffffffff828210818311171561083e5761083e6107ca565b6040918252829185018681111561085457600080fd5b855b8181101561087d578035838116811461086f5760008081fd5b845260209384019301610856565b50929695505050505050565b60006080828403121561089b57600080fd5b6040516040810181811067ffffffffffffffff821117156108be576108be6107ca565b604052601f830184136108d057600080fd5b6108d86107e0565b8060408501868111156108ea57600080fd5b855b818110156109045780358452602093840193016108ec565b508184526109128782610809565b6020850152509195945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036109535761095361071a565b506001019056fea26469706673582212204ab71744265ae4130cdfc97eb454b3e0e2d195a1b2b447ebee2f8dcba5412d3064736f6c63430008110033", } // SimpleOneStepProofEntryABI is the input ABI used to generate the binding from. diff --git a/solgen/go/rollupgen/rollupgen.go b/solgen/go/rollupgen/rollupgen.go index 7f5d61044..65d71fe4c 100644 --- a/solgen/go/rollupgen/rollupgen.go +++ b/solgen/go/rollupgen/rollupgen.go @@ -1171,7 +1171,7 @@ func (_AssertionStateLib *AssertionStateLibTransactorRaw) Transact(opts *bind.Tr // BOLDUpgradeActionMetaData contains all meta data concerning the BOLDUpgradeAction contract. var BOLDUpgradeActionMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"l1Timelock\",\"type\":\"address\"},{\"internalType\":\"contractIOldRollup\",\"name\":\"rollup\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bridge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sequencerInbox\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rollupEventInbox\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"outbox\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"inbox\",\"type\":\"address\"},{\"internalType\":\"contractIOneStepProofEntry\",\"name\":\"osp\",\"type\":\"address\"}],\"internalType\":\"structBOLDUpgradeAction.Contracts\",\"name\":\"contracts\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"outbox\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bridge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rei\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seqInbox\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"inbox\",\"type\":\"address\"}],\"internalType\":\"structBOLDUpgradeAction.ProxyAdmins\",\"name\":\"proxyAdmins\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"bridge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seqInbox\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"inbox\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rei\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"outbox\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oldRollupUser\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newRollupUser\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newRollupAdmin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"}],\"internalType\":\"structBOLDUpgradeAction.Implementations\",\"name\":\"implementations\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"challengePeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"stakeToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmt\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"miniStakeAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"anyTrustFastConfirmer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"disableValidatorWhitelist\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"blockLeafSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bigStepLeafSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"smallStepLeafSize\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"numBigStepLevel\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"challengeGracePeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDelayBufferable\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"replenishRateInBasis\",\"type\":\"uint64\"}],\"internalType\":\"structBufferConfig\",\"name\":\"bufferConfig\",\"type\":\"tuple\"}],\"internalType\":\"structBOLDUpgradeAction.Settings\",\"name\":\"settings\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rollup\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"}],\"name\":\"RollupMigrated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ANY_TRUST_FAST_CONFIRMER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIGSTEP_LEAF_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLOCK_LEAF_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BRIDGE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CHALLENGE_GRACE_PERIOD_BLOCKS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CHALLENGE_PERIOD_BLOCKS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CONFIRM_PERIOD_BLOCKS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DISABLE_VALIDATOR_WHITELIST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IMPL_BRIDGE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IMPL_CHALLENGE_MANAGER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IMPL_INBOX\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IMPL_NEW_ROLLUP_ADMIN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IMPL_NEW_ROLLUP_USER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IMPL_OUTBOX\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IMPL_PATCHED_OLD_ROLLUP_USER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IMPL_REI\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IMPL_SEQUENCER_INBOX\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INBOX\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_DELAY_BUFFERABLE\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L1_TIMELOCK\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINI_STAKE_AMOUNTS_STORAGE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NUM_BIGSTEP_LEVEL\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OLD_ROLLUP\",\"outputs\":[{\"internalType\":\"contractIOldRollup\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OSP\",\"outputs\":[{\"internalType\":\"contractIOneStepProofEntry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OUTBOX\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PREIMAGE_LOOKUP\",\"outputs\":[{\"internalType\":\"contractStateHashPreImageLookup\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROXY_ADMIN_BRIDGE\",\"outputs\":[{\"internalType\":\"contractProxyAdmin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROXY_ADMIN_INBOX\",\"outputs\":[{\"internalType\":\"contractProxyAdmin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROXY_ADMIN_OUTBOX\",\"outputs\":[{\"internalType\":\"contractProxyAdmin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROXY_ADMIN_REI\",\"outputs\":[{\"internalType\":\"contractProxyAdmin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROXY_ADMIN_SEQUENCER_INBOX\",\"outputs\":[{\"internalType\":\"contractProxyAdmin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REI\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REPLENISH_RATE_IN_BASIS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ROLLUP_READER\",\"outputs\":[{\"internalType\":\"contractRollupReader\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SEQ_INBOX\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SMALLSTEP_LEAF_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STAKE_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STAKE_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"THRESHOLD\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"validators\",\"type\":\"address[]\"}],\"name\":\"perform\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6105a06040523480156200001257600080fd5b5060405162007f0338038062007f0383398101604081905262000035916200079c565b83516001600160a01b039081166101005260208086015182166101205260408087015183166101405260608088015184166101605260808089015185166101805260a089015185166101a05260c089015185166101c05260e0890151851661038052875185166103a0529287015184166103c0528682015184166103e052860151831661040052908501519091166104205251620000d390620002c2565b604051809103906000f080158015620000f0573d6000803e3d6000fd5b506001600160a01b03166104405260208401516040516200011190620002d0565b6001600160a01b039091168152602001604051809103906000f0801580156200013e573d6000803e3d6000fd5b506001600160a01b0390811661046052825181166104805260208084015182166104a05260408085015183166104c05260608086015184166104e05260808087015185166105005260a08088015186166105205260c088015186166105405260e08801518616610560526101008801518616610580528601516102605285516001600160401b039081166101e0529386015190931661020052848201519093166102205291830151610240528201519051620001fa90620002de565b620002069190620008c3565b604051809103906000f08015801562000223573d6000803e3d6000fd5b506001600160a01b039081166102e05260c0808301519091166102805260e08083015115156102a05261010083015160805261012083015160a05261014083015190915261016082015160ff1690526101808101516001600160401b039081166102c0526101a08201511515610300526101c0909101805160200151821661032052805151821661034052516040015116610360525062000909915050565b610a2d806200665383390190565b610be3806200708083390190565b6102a08062007c6383390190565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715620003285762000328620002ec565b60405290565b6040516101e081016001600160401b0381118282101715620003285762000328620002ec565b60405161010081016001600160401b0381118282101715620003285762000328620002ec565b6001600160a01b03811681146200039057600080fd5b50565b8051620003a0816200037a565b919050565b600060a08284031215620003b857600080fd5b60405160a081016001600160401b0381118282101715620003dd57620003dd620002ec565b80604052508091508251620003f2816200037a565b8152602083015162000404816200037a565b6020820152604083015162000419816200037a565b604082015260608301516200042e816200037a565b6060820152608083015162000443816200037a565b6080919091015292915050565b600061012082840312156200046457600080fd5b6200046e62000302565b90506200047b8262000393565b81526200048b6020830162000393565b60208201526200049e6040830162000393565b6040820152620004b16060830162000393565b6060820152620004c46080830162000393565b6080820152620004d760a0830162000393565b60a0820152620004ea60c0830162000393565b60c0820152620004fd60e0830162000393565b60e08201526101006200051281840162000393565b9082015292915050565b80516001600160401b0381168114620003a057600080fd5b600082601f8301126200054657600080fd5b815160206001600160401b0380831115620005655762000565620002ec565b8260051b604051601f19603f830116810181811084821117156200058d576200058d620002ec565b604052938452858101830193838101925087851115620005ac57600080fd5b83870191505b84821015620005cd57815183529183019190830190620005b2565b979650505050505050565b80518015158114620003a057600080fd5b805160ff81168114620003a057600080fd5b6000606082840312156200060e57600080fd5b604051606081016001600160401b0381118282101715620006335762000633620002ec565b60405290508062000644836200051c565b815262000654602084016200051c565b602082015262000667604084016200051c565b60408201525092915050565b600061022082840312156200068757600080fd5b620006916200032e565b90506200069e826200051c565b8152620006ae602083016200051c565b6020820152620006c16040830162000393565b60408201526060828101519082015260808201516001600160401b03811115620006ea57600080fd5b620006f88482850162000534565b60808301525060a082015160a08201526200071660c0830162000393565b60c08201526200072960e08301620005d8565b60e08201526101008281015190820152610120808301519082015261014080830151908201526101606200075f818401620005e9565b90820152610180620007738382016200051c565b908201526101a062000787838201620005d8565b908201526101c06200051284848301620005fb565b6000806000808486036102e0811215620007b557600080fd5b61010080821215620007c657600080fd5b620007d062000354565b91508651620007df816200037a565b8252620007ef6020880162000393565b6020830152620008026040880162000393565b6040830152620008156060880162000393565b6060830152620008286080880162000393565b60808301526200083b60a0880162000393565b60a08301526200084e60c0880162000393565b60c08301526200086160e0880162000393565b60e08301528195506200087788828901620003a5565b945050506200088b866101a0870162000450565b6102c08601519092506001600160401b03811115620008a957600080fd5b620008b78782880162000673565b91505092959194509250565b6020808252825182820181905260009190848201906040850190845b81811015620008fd57835183529284019291840191600101620008df565b50909695505050505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e05161040051610420516104405161046051610480516104a0516104c0516104e051610500516105205161054051610560516105805161599662000cbd600039600081816103fa0152610a240152600081816103230152610bc20152600081816105210152610bf10152600081816104d101526116cc015260008181610815015261223d0152600081816107c50152612101015260008181610624015261203a0152600081816107ed015281816123fc015281816125b201526126710152600081816108dd0152611ed101526000818161057101528181610c2001528181610f9e0152818161135d015281816114550152818161150901528181611763015281816117920152611b5b01526000818161083d015281816118d2015261199c01526000818161054901526120630152600081816104a9015281816123cc015281816125da01526126950152600081816104f9015261212b01526000818161039001528181610a450152611efa01526000818161036801526122670152600081816106c40152610d5801526000818161092d01526124880152600081816105fc01526124280152600081816108b50152612458015260008181610905015281816123a501526127850152600081816107250152611c5e01526000818161096e0152611dc80152600081816106ec0152818161116401526111b10152600081816108650152611d7001526000818161064c0152611c230152600081816109e60152611b3501526000818161044a0152611b0601526000818161069c0152610d370152600081816103b80152611ad601526000818161074d01528181610b26015261201101526000818161042201528181610b550152818161221401526122c801526000818161077501528181610b84015281816120d8015261218c01526000818161088d01528181610af701528181612384015281816127a801526128a401526000818161099601528181610ac801528181611ea80152611f90015260008181610674015281816112e60152818161161401526116f401526000818161079d01528181610d900152611bf40152600081816105990152611d9f0152600081816109be0152611d3e0152600081816104720152611d180152600081816105d40152611cf201526159966000f3fe60806040523480156200001157600080fd5b5060043610620003185760003560e01c80639f9854e511620001a5578063d1da2c5c11620000f5578063eb657a4e11620000a3578063ee9a31a2116200007a578063ee9a31a21462000990578063fa28742014620009b8578063faf5625f14620009e057600080fd5b8063eb657a4e1462000927578063ebe03a93146200094f578063ec4f74ce146200096857600080fd5b8063d49d518111620000d8578063d49d518114620008af578063dae7cb8b14620008d7578063e8180c2914620008ff57600080fd5b8063d1da2c5c146200085f578063d384cb95146200088757600080fd5b8063bf5e3d521162000153578063c519d1511162000136578063c519d15114620007e7578063c897f55e146200080f578063cc8089bb146200083757600080fd5b8063bf5e3d521462000797578063c21c423314620007bf57600080fd5b8063b5e00c3f1162000188578063b5e00c3f146200071f578063b70106971462000747578063be41b367146200076f57600080fd5b80639f9854e514620006be578063b38d57f014620006e657600080fd5b80633c2b7840116200026d578063609fb503116200021b57806385e1f4d011620001f257806385e1f4d014620006465780638765240f146200066e57806391ddb285146200069657600080fd5b8063609fb50314620005ce578063785ffb3714620005f6578063817cd312146200061e57600080fd5b80634b2f51ef11620002505780634b2f51ef14620005435780634e0e75fb146200056b5780635d9e2444146200059357600080fd5b80633c2b784014620004f35780634692de5d146200051b57600080fd5b80631b142ea711620002cb5780631ccc2cd111620002ae5780631ccc2cd1146200046c5780632cfb7ca314620004a35780632db93bdc14620004cb57600080fd5b80631b142ea7146200041c5780631c39b672146200044457600080fd5b80630a54257d11620003005780630a54257d146200038a5780631047fc5214620003b257806310a662e214620003f457600080fd5b8062f9731e146200031d5780630787484b1462000362575b600080fd5b620003457f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff909116815260200162000359565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620004947f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200162000359565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620005bb7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200162000359565b620004947f000000000000000000000000000000000000000000000000000000000000000081565b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620004947f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b6200070e7f000000000000000000000000000000000000000000000000000000000000000081565b604051901515815260200162000359565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b6200070e7f000000000000000000000000000000000000000000000000000000000000000081565b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b620009666200096036600462002b88565b62000a08565b005b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620004947f000000000000000000000000000000000000000000000000000000000000000081565b620004947f000000000000000000000000000000000000000000000000000000000000000081565b62000a12620012e4565b600062000a1e62001755565b905060007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060405162000a7290620028fe565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562000ab5573d6000803e3d6000fd5b50905060006040518061012001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602001836001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bc45e0ae6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000c7d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ca3919062002c33565b6001600160a01b0316815250905060008360405160200162000cc6919062002f5d565b604051602081830303815290604052805190602001209050600062000d18826040518060200162000cf7906200290c565b6020820181038252601f19601f820116604052508051906020012062001e05565b905062000d258162001e91565b836001600160a01b0316631a72d54c827f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008961014001518a61016001518b61018001518c602001517f00000000000000000000000000000000000000000000000000000000000000008e61020001518f61010001516040518b63ffffffff1660e01b815260040162000de29a9998979695949392919062002f72565b600060405180830381600087803b15801562000dfd57600080fd5b505af115801562000e12573d6000803e3d6000fd5b5050505060008260405162000e27906200290c565b8190604051809103906000f590508015801562000e48573d6000803e3d6000fd5b509050816001600160a01b0316816001600160a01b03161462000eb25760405162461bcd60e51b815260206004820152601560248201527f554e455850435445445f524f4c4c55505f41444452000000000000000000000060448201526064015b60405180910390fd5b608086018051309091526040517fd384644b0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063d384644b9062000f05908a90899060040162002fef565b600060405180830381600087803b15801562000f2057600080fd5b505af115801562000f35573d6000803e3d6000fd5b50505050875160001462001162576000885167ffffffffffffffff81111562000f625762000f6262002aab565b60405190808252806020026020018201604052801562000f8c578160200160208202803683370190505b50905060005b8951811015620010e2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663facd743b8b838151811062000fe05762000fe0620030d5565b60200260200101516040518263ffffffff1660e01b81526004016200101491906001600160a01b0391909116815260200190565b602060405180830381865afa15801562001032573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001058919062003101565b620010a65760405162461bcd60e51b815260206004820152601860248201527f554e45585045435445445f4e45575f56414c494441544f520000000000000000604482015260640162000ea9565b6001828281518110620010bd57620010bd620030d5565b9115156020928302919091019091015280620010d98162003135565b91505062000f92565b506040517fa3ffb7720000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063a3ffb772906200112c908c908590600401620031ab565b600060405180830381600087803b1580156200114757600080fd5b505af11580156200115c573d6000803e3d6000fd5b50505050505b7f00000000000000000000000000000000000000000000000000000000000000001562001220576040517fa2b4f1d80000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000151560048201526001600160a01b0383169063a2b4f1d890602401600060405180830381600087803b1580156200120657600080fd5b505af11580156200121b573d6000803e3d6000fd5b505050505b6040517f13af40350000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301528316906313af403590602401600060405180830381600087803b1580156200127d57600080fd5b505af115801562001292573d6000803e3d6000fd5b5050604080516001600160a01b0380881682528a1660208201527f7e5cc5c3fce046d868d5918548df8d3e8ef9f09e6fb30a68081f1f1348cd0314935001905060405180910390a15050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200134057600080fd5b505af115801562001355573d6000803e3d6000fd5b5050505060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff697876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620013ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013e0919062003221565b905060328167ffffffffffffffff161115620013fa575060325b60005b8167ffffffffffffffff168167ffffffffffffffff1610156200169b576040517f6ddd374400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636ddd374490602401602060405180830381865afa158015620014a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014cb919062002c33565b6040517fa23c44b10000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063a23c44b19060240160a060405180830381865afa15801562001551573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200157791906200323f565b905080608001518015620015975750606081015167ffffffffffffffff16155b156200168357604080516001808252818301909252600091602080830190803683370190505090508281600081518110620015d657620015d6620030d5565b6001600160a01b0392831660209182029290920101526040517f7c75c2980000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000090911690637c75c298906200164d908490600401620032d2565b600060405180830381600087803b1580156200166857600080fd5b505af11580156200167d573d6000803e3d6000fd5b50505050505b505080806200169290620032e7565b915050620013fd565b506040517f0d40a0fd0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000001690630d40a0fd90602401600060405180830381600087803b1580156200173957600080fd5b505af11580156200174e573d6000803e3d6000fd5b5050505050565b6200175f6200291a565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166392c8134c7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166365f7f80d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620017ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001815919062003221565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff909116600482015260240161018060405180830381865afa15801562001874573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200189a919062003311565b516040517f8eaa6ac00000000000000000000000000000000000000000000000000000000081526004810182905290915060009081907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638eaa6ac09060240160c060405180830381865afa15801562001922573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001948919062003465565b915091506200195662002a24565b8251815260208084015190820190600281111562001978576200197862002d47565b908160028111156200198e576200198e62002d47565b905250836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166331644130620019cc8462002342565b856040518363ffffffff1660e01b8152600401620019ec92919062003536565b602060405180830381865afa15801562001a0a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a3091906200356d565b1462001a7f5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206c617465737420657865637574696f6e2068617368000000604482015260640162000ea9565b62001aab6040518060800160405280600081526020016000815260200160008152602001600081525090565b60408051606081018252600080825260208201819052918101919091526040518061026001604052807f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638ee1a1266040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001bb8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bde91906200356d565b8152602001306001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000081526020016040518060200160405280600081525081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0ec2ae16040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001cbb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ce5919081019062003587565b81526020018381526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f000000000000000000000000000000000000000000000000000000000000000081526020018481526020018581526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000060ff1681526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16815260200182815250965050505050505090565b604080517fff000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000905b90505b92915050565b60405163266a23b160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401527f000000000000000000000000000000000000000000000000000000000000000082166024840152917f0000000000000000000000000000000000000000000000000000000000000000909116906399a88ec490604401600060405180830381600087803b15801562001f4157600080fd5b505af115801562001f56573d6000803e3d6000fd5b50506040517f919cc7060000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301527f000000000000000000000000000000000000000000000000000000000000000016925063919cc7069150602401600060405180830381600087803b15801562001fd757600080fd5b505af115801562001fec573d6000803e3d6000fd5b5050505062001ffa62002382565b60405163266a23b160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401527f000000000000000000000000000000000000000000000000000000000000000082166024840152917f0000000000000000000000000000000000000000000000000000000000000000909116906399a88ec490604401600060405180830381600087803b158015620020aa57600080fd5b505af1158015620020bf573d6000803e3d6000fd5b505060405163266a23b160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401527f00000000000000000000000000000000000000000000000000000000000000008216602484015293507f00000000000000000000000000000000000000000000000000000000000000001691506399a88ec490604401600060405180830381600087803b1580156200217157600080fd5b505af115801562002186573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636ae71f126040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620021e657600080fd5b505af1158015620021fb573d6000803e3d6000fd5b505060405163266a23b160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401527f00000000000000000000000000000000000000000000000000000000000000008216602484015293507f00000000000000000000000000000000000000000000000000000000000000001691506399a88ec490604401600060405180830381600087803b158015620022ad57600080fd5b505af1158015620022c2573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636ae71f126040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200232257600080fd5b505af115801562002337573d6000803e3d6000fd5b505050505050505050565b6200234c62002a4d565b604051806040016040528083600001518152602001836020015160028111156200237a576200237a62002d47565b905292915050565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000001562002593577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639623609d827f000000000000000000000000000000000000000000000000000000000000000060405180606001604052807f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16815250604051602401620024c6919062003616565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa655d93700000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152620025599392919060040162003648565b600060405180830381600087803b1580156200257457600080fd5b505af115801562002589573d6000803e3d6000fd5b5050505062002639565b60405163266a23b160e21b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f000000000000000000000000000000000000000000000000000000000000000016906399a88ec490604401600060405180830381600087803b1580156200261f57600080fd5b505af115801562002634573d6000803e3d6000fd5b505050505b6040517f204e1c7a0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000008116917f00000000000000000000000000000000000000000000000000000000000000009091169063204e1c7a90602401602060405180830381865afa158015620026df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002705919062002c33565b6001600160a01b031614620027835760405162461bcd60e51b815260206004820152603160248201527f44656c61794275666665723a206e65772073657120696e626f7820696d706c6560448201527f6d656e746174696f6e206e6f7420736574000000000000000000000000000000606482015260840162000ea9565b7f000000000000000000000000000000000000000000000000000000000000000015157f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634b678a666040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200282b919062003101565b151514620028a25760405162461bcd60e51b815260206004820152602660248201527f44656c61794275666665723a20697344656c617942756666657261626c65206e60448201527f6f74207365740000000000000000000000000000000000000000000000000000606482015260840162000ea9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636ae71f126040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200173957600080fd5b610ed3806200368083390190565b61140e806200455383390190565b604051806102600160405280600067ffffffffffffffff16815260200160006001600160a01b03168152602001600081526020016000801916815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016060815260200160608152602001620029b96040518060800160405280600081526020016000815260200160008152602001600081525090565b8152602001600081526020016000815260200160008152602001620029dd62002a24565b81526000602080830182905260408084018390526060808501849052608085018490528151908101825283815291820183905281019190915260a09091015290565b905290565b604051806060016040528062002a3962002a6e565b815260200160008152600060209091015290565b604051806040016040528062002a6262002a6e565b81526020016000905290565b604051806040016040528062002a8362002a8d565b815260200162002a1f5b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff8111828210171562002ae85762002ae862002aab565b60405290565b6040805190810167ffffffffffffffff8111828210171562002ae85762002ae862002aab565b604051601f8201601f1916810167ffffffffffffffff8111828210171562002b405762002b4062002aab565b604052919050565b600067ffffffffffffffff82111562002b655762002b6562002aab565b5060051b60200190565b6001600160a01b038116811462002b8557600080fd5b50565b6000602080838503121562002b9c57600080fd5b823567ffffffffffffffff81111562002bb457600080fd5b8301601f8101851362002bc657600080fd5b803562002bdd62002bd78262002b48565b62002b14565b81815260059190911b8201830190838101908783111562002bfd57600080fd5b928401925b8284101562002c2857833562002c188162002b6f565b8252928401929084019062002c02565b979650505050505050565b60006020828403121562002c4657600080fd5b815162002c538162002b6f565b9392505050565b6000815180845260005b8181101562002c825760208185018101518683018201520162002c64565b506000602082860101526020601f19601f83011685010191505092915050565b600081518084526020808501945080840160005b8381101562002cd45781518752958201959082019060010162002cb6565b509495945050505050565b80518260005b600281101562002d0657825182526020928301929091019060010162002ce5565b5050506020808201516040840160005b600281101562002d3f57825167ffffffffffffffff168252918301919083019060010162002d16565b505050505050565b634e487b7160e01b600052602160045260246000fd5b6003811062002d7c57634e487b7160e01b600052602160045260246000fd5b9052565b62002d8d82825162002cdf565b602081015162002da1608084018262002d5d565b506040015160a09190910152565b805167ffffffffffffffff16825260006103a0602083015162002ddd60208601826001600160a01b03169052565b506040830151604085015260608301516060850152608083015162002e0d60808601826001600160a01b03169052565b5060a083015162002e2960a08601826001600160a01b03169052565b5060c083015160c085015260e08301518160e086015262002e4d8286018262002c5a565b915050610100808401518583038287015262002e6a838262002ca2565b6101208681015180518983015260208101516101408a015260408101516101608a015260608101516101808a01529194509250905050506101408301516101a0818187015261016085015191506101c0828188015261018086015192506101e08381890152828701519350610200925062002ee88389018562002d80565b908601516102c08801528501516001600160a01b03166102e087015284015160ff166103008601525061022083015167ffffffffffffffff908116610320860152610240840151805182166103408701526020810151821661036087015260408101519091166103808601525b509392505050565b60208152600062001e88602083018462002daf565b60006101406001600160a01b03808e16845267ffffffffffffffff8d166020850152808c1660408501528a60608501528960808501528860a085015280881660c085015280871660e08501525060ff85166101008401528061012084015262002fde8184018562002ca2565b9d9c50505050505050505050505050565b6000610140808352620030058184018662002daf565b9150506001600160a01b03835116602083015260208301516200303360408401826001600160a01b03169052565b5060408301516001600160a01b03811660608401525060608301516001600160a01b03811660808401525060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100620030ba818501836001600160a01b03169052565b8401516001600160a01b038116610120850152905062002f55565b634e487b7160e01b600052603260045260246000fd5b80518015158114620030fc57600080fd5b919050565b6000602082840312156200311457600080fd5b62001e8882620030eb565b634e487b7160e01b600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200316957620031696200311f565b5060010190565b600081518084526020808501945080840160005b8381101562002cd45781516001600160a01b03168752958201959082019060010162003184565b604081526000620031c0604083018562003170565b82810360208481019190915284518083528582019282019060005b81811015620031fb578451151583529383019391830191600101620031db565b5090979650505050505050565b805167ffffffffffffffff81168114620030fc57600080fd5b6000602082840312156200323457600080fd5b62001e888262003208565b600060a082840312156200325257600080fd5b60405160a0810181811067ffffffffffffffff8211171562003278576200327862002aab565b604052825181526200328d6020840162003208565b6020820152620032a06040840162003208565b6040820152620032b36060840162003208565b6060820152620032c660808401620030eb565b60808201529392505050565b60208152600062001e88602083018462003170565b600067ffffffffffffffff8083168181036200330757620033076200311f565b6001019392505050565b600061018082840312156200332557600080fd5b6200332f62002ac1565b825181526020830151602082015260408301516040820152620033556060840162003208565b6060820152620033686080840162003208565b60808201526200337b60a0840162003208565b60a08201526200338e60c0840162003208565b60c0820152620033a160e0840162003208565b60e0820152610100620033b681850162003208565b90820152610120620033ca84820162003208565b90820152610140620033de84820162003208565b90820152610160928301519281019290925250919050565b600082601f8301126200340857600080fd5b6200341262002aee565b8060408401858111156200342557600080fd5b845b818110156200344a576200343b8162003208565b84526020938401930162003427565b509095945050505050565b805160038110620030fc57600080fd5b60008082840360c08112156200347a57600080fd5b60a08112156200348957600080fd5b6200349362002aee565b6080821215620034a257600080fd5b620034ac62002aee565b915085601f860112620034be57600080fd5b620034c862002aee565b806040870188811115620034db57600080fd5b875b81811015620034f7578051845260209384019301620034dd565b50818552620035078982620033f6565b6020860152505050818152620035206080860162003455565b602082015260a094909401519395939450505050565b600060c0820190506200354b82855162002cdf565b60208401516200355f608084018262002d5d565b508260a08301529392505050565b6000602082840312156200358057600080fd5b5051919050565b600060208083850312156200359b57600080fd5b825167ffffffffffffffff811115620035b357600080fd5b8301601f81018513620035c557600080fd5b8051620035d662002bd78262002b48565b81815260059190911b82018301908381019087831115620035f657600080fd5b928401925b8284101562002c2857835182529284019290840190620035fb565b6060810162001e8b8284805167ffffffffffffffff908116835260208083015182169084015260409182015116910152565b60006001600160a01b0380861683528085166020840152506060604083015262003676606083018462002c5a565b9594505050505056fe608060405260405162000ed338038062000ed3833981016040819052620000269162000487565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ba565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b6200023e1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000eac60279139620002f8565b9392505050565b60006200018060008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200026a1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620001fa1760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000567565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f1919062000585565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b50506000910152565b6000806000606084860312156200049d57600080fd5b620004a8846200042e565b9250620004b8602085016200042e565b60408501519092506001600160401b0380821115620004d657600080fd5b818601915086601f830112620004eb57600080fd5b8151818111156200050057620005006200044b565b604051601f8201601f19908116603f011681019083821181831017156200052b576200052b6200044b565b816040528281528960208487010111156200054557600080fd5b6200055883602083016020880162000461565b80955050505050509250925092565b600082516200057b81846020870162000461565b9190910192915050565b6020815260008251806020840152620005a681604085016020870162000461565b601f01601f19169190910160400192915050565b6108c280620005ca6000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100d9578063f851a440146100f95761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61010e565b005b61006b61010e565b34801561008157600080fd5b5061006b610090366004610736565b610128565b61006b6100a3366004610751565b610165565b3480156100b457600080fd5b506100bd6101cc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100e557600080fd5b5061006b6100f4366004610736565b6101fd565b34801561010557600080fd5b506100bd61021d565b610116610279565b610126610121610329565b610333565b565b610130610357565b6001600160a01b0316330361015d5761015a8160405180602001604052806000815250600061038a565b50565b61015a61010e565b61016d610357565b6001600160a01b031633036101c4576101bf8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061038a915050565b505050565b6101bf61010e565b60006101d6610357565b6001600160a01b031633036101f2576101ed610329565b905090565b6101fa61010e565b90565b610205610357565b6001600160a01b0316330361015d5761015a816103b5565b6000610227610357565b6001600160a01b031633036101f2576101ed610357565b6060610263838360405180606001604052806027815260200161086660279139610409565b9392505050565b6001600160a01b03163b151590565b610281610357565b6001600160a01b031633036101265760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006101ed6104fd565b3660008037600080366000845af43d6000803e808015610352573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61039383610525565b6000825111806103a05750805b156101bf576103af838361023e565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103de610357565b604080516001600160a01b03928316815291841660208301520160405180910390a161015a81610565565b60606001600160a01b0384163b6104885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610320565b600080856001600160a01b0316856040516104a391906107f8565b600060405180830381855af49150503d80600081146104de576040519150601f19603f3d011682016040523d82523d6000602084013e6104e3565b606091505b50915091506104f382828661063d565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61037b565b61052e81610676565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105e15760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610320565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6060831561064c575081610263565b82511561065c5782518084602001fd5b8160405162461bcd60e51b81526004016103209190610814565b6001600160a01b0381163b6106f35760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610320565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610604565b80356001600160a01b038116811461073157600080fd5b919050565b60006020828403121561074857600080fd5b6102638261071a565b60008060006040848603121561076657600080fd5b61076f8461071a565b9250602084013567ffffffffffffffff8082111561078c57600080fd5b818601915086601f8301126107a057600080fd5b8135818111156107af57600080fd5b8760208285010111156107c157600080fd5b6020830194508093505050509250925092565b60005b838110156107ef5781810151838201526020016107d7565b50506000910152565b6000825161080a8184602087016107d4565b9190910192915050565b60208152600082518060208401526108338160408501602087016107d4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c1888b421836e473bfc3e72d153dc5c76569ce769e37cfa444506490e142daa564736f6c63430008110033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b506113ee806100206000396000f3fe6080604052600436106100225760003560e01c8063d384644b1461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f610054366004610d95565b61006b565b6100696100646101bd565b6102a1565b565b60006100756102ca565b6001600160a01b031614801561009b575060006100906102fd565b6001600160a01b0316145b80156100b7575060006100ac610325565b6001600160a01b0316145b156101b5576101b18160c0015183836040516024016100d792919061113d565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9e7e6aa70000000000000000000000000000000000000000000000000000000017905260e08601519087015191516001600160a01b0390921660248301529060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052608087015161034d565b5050565b6101b1610059565b600060043610156102155760405162461bcd60e51b815260206004820152600b60248201527f4e4f5f46554e435f53494700000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000336102206102ca565b6001600160a01b03160361023b576102366102fd565b610243565b610243610325565b90506001600160a01b0381163b61029c5760405162461bcd60e51b815260206004820152601360248201527f5441524745545f4e4f545f434f4e545241435400000000000000000000000000604482015260640161020c565b919050565b3660008037600080366000845af43d6000803e8080156102c0573d6000f35b3d6000fd5b505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6102ee565b60007f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6102ee565b61037860017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610461132b565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103146103a6576103a661134c565b6103d160017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61132b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc146103ff576103ff61134c565b61042a60017f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546e61132b565b7f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d146104585761045861134c565b61046181610480565b61046d858560006104d7565b61047983836000610502565b5050505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104a96102ca565b604080516001600160a01b03928316815291841660208301520160405180910390a16104d48161050b565b50565b6104e0836105e3565b6000825111806104ed5750805b156102c5576104fc8383610623565b50505050565b6104e083610651565b6001600160a01b0381166105875760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161020c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6105ec81610691565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610648838360405180606001604052806027815260200161139260279139610735565b90505b92915050565b61065a8161082b565b6040516001600160a01b038216907ff7eed2a7fabbf1bec8d55ed5e785cc76622376dde5df4ff15470551e030b813490600090a250565b6001600160a01b0381163b61070e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161020c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105aa565b60606001600160a01b0384163b6107b45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161020c565b600080856001600160a01b0316856040516107cf9190611362565b600060405180830381855af49150503d806000811461080a576040519150601f19603f3d011682016040523d82523d6000602084013e61080f565b606091505b509150915061081f8282866108cf565b925050505b9392505050565b6001600160a01b0381163b6108a85760405162461bcd60e51b815260206004820152603760248201527f455243313936373a206e6577207365636f6e6461727920696d706c656d656e7460448201527f6174696f6e206973206e6f74206120636f6e7472616374000000000000000000606482015260840161020c565b807f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6105aa565b606083156108de575081610824565b8251156108ee5782518084602001fd5b8160405162461bcd60e51b815260040161020c919061137e565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561094157610941610908565b60405290565b6040805190810167ffffffffffffffff8111828210171561094157610941610908565b604051610120810167ffffffffffffffff8111828210171561094157610941610908565b604051610260810167ffffffffffffffff8111828210171561094157610941610908565b604051601f8201601f1916810167ffffffffffffffff811182821017156109db576109db610908565b604052919050565b803567ffffffffffffffff8116811461029c57600080fd5b80356001600160a01b038116811461029c57600080fd5b600082601f830112610a2357600080fd5b813567ffffffffffffffff811115610a3d57610a3d610908565b610a506020601f19601f840116016109b2565b818152846020838601011115610a6557600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112610a9357600080fd5b8135602067ffffffffffffffff821115610aaf57610aaf610908565b8160051b610abe8282016109b2565b9283528481018201928281019087851115610ad857600080fd5b83870192505b84831015610af757823582529183019190830190610ade565b979650505050505050565b600060808284031215610b1457600080fd5b6040516080810181811067ffffffffffffffff82111715610b3757610b37610908565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b600082601f830112610b7957600080fd5b610b81610947565b806040840185811115610b9357600080fd5b845b81811015610bb457610ba6816109e3565b845260209384019301610b95565b509095945050505050565b80356003811061029c57600080fd5b600081830360c0811215610be157600080fd5b610be961091e565b91506080811215610bf957600080fd5b50610c02610947565b83601f840112610c1157600080fd5b610c19610947565b806040850186811115610c2b57600080fd5b855b81811015610c45578035845260209384019301610c2d565b50818452610c538782610b68565b60208501525050508152610c6960808301610bbf565b602082015260a0820135604082015292915050565b803560ff8116811461029c57600080fd5b600060608284031215610ca157600080fd5b610ca961091e565b9050610cb4826109e3565b8152610cc2602083016109e3565b6020820152610cd3604083016109e3565b604082015292915050565b60006101208284031215610cf157600080fd5b610cf961096a565b9050610d04826109fb565b8152610d12602083016109fb565b6020820152610d23604083016109fb565b6040820152610d34606083016109fb565b6060820152610d45608083016109fb565b6080820152610d5660a083016109fb565b60a0820152610d6760c083016109fb565b60c0820152610d7860e083016109fb565b60e0820152610100610d8b8184016109fb565b9082015292915050565b600080610140808486031215610daa57600080fd5b833567ffffffffffffffff80821115610dc257600080fd5b908501906103a08288031215610dd757600080fd5b610ddf61098e565b610de8836109e3565b8152610df6602084016109fb565b60208201526040830135604082015260608301356060820152610e1b608084016109fb565b6080820152610e2c60a084016109fb565b60a082015260c083013560c082015260e083013582811115610e4d57600080fd5b610e5989828601610a12565b60e0830152506101008084013583811115610e7357600080fd5b610e7f8a828701610a82565b8284015250506101209150610e9688838501610b02565b828201526101a0915081830135848201526101c09350838301356101608201526101e080840135610180830152610200610ed28a828701610bce565b848401526102c085013586840152610eed6102e086016109fb565b82840152610efe6103008601610c7e565b9083015250610f1061032084016109e3565b610220820152610f24886103408501610c8f565b61024082015280955050505050610f3e8460208501610cde565b90509250929050565b60005b83811015610f62578181015183820152602001610f4a565b50506000910152565b60008151808452610f83816020860160208601610f47565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b83811015610fc757815187529582019590820190600101610fab565b509495945050505050565b60038110610ff057634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b600281101561101b578251825260209283019290910190600101610ffc565b505050602090810151906040840160005b600281101561105357835167ffffffffffffffff168252928201929082019060010161102c565b505082015190506110676080840182610fd2565b506040015160a09190910152565b6001600160a01b038082511683528060208301511660208401528060408301511660408401525060608101516110b660608401826001600160a01b03169052565b5060808101516110d160808401826001600160a01b03169052565b5060a08101516110ec60a08401826001600160a01b03169052565b5060c081015161110760c08401826001600160a01b03169052565b5060e081015161112260e08401826001600160a01b03169052565b50610100818101516001600160a01b038116848301526104fc565b600061014080835261115b818401865167ffffffffffffffff169052565b6020850151610160611177818601836001600160a01b03169052565b604087015191506101808281870152606088015192506101a08381880152608089015193506101c06111b3818901866001600160a01b03169052565b60a08a015194506101e06111d1818a01876001600160a01b03169052565b60c08b0151955061020086818b015260e08c015196506102206103a0818c01526111ff6104e08c0189610f6b565b97506101008d01516102407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec08d8b0301818e015261123d8a83610f97565b99506101208f015191506112766102608e0183805182526020810151602083015260408101516040830152606081015160608301525050565b998e01516102e08d0152878e01516103008d0152868e01516103208d0152858e0151996112a76103408e018c610ff4565b948e01516104008d015250918c01516001600160a01b03166104208b01528b015160ff166104408a01528a015167ffffffffffffffff9081166104608a0152908a0151805182166104808a0152602081015182166104a08a015260408101519091166104c0890152945061131a92505050565b915061082490506020830184611075565b8181038181111561064b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60008251611374818460208701610f47565b9190910192915050565b6020815260006106486020830184610f6b56fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220732408815ed3a9eb4bb4849e485231d66bc79a458b945fdcde68c84250df6fa964736f6c63430008110033a2646970667358221220f0503739608171662e9e94c75b3e246acad3684986d431e13c96fbd6f0b889f264736f6c63430008110033608060405234801561001057600080fd5b50610a0d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806331644130146100465780638eaa6ac01461006c578063945c94941461008d575b600080fd5b61005961005436600461041d565b6100a2565b6040519081526020015b60405180910390f35b61007f61007a366004610448565b610193565b604051610063929190610483565b6100a061009b36600461050a565b6102bf565b005b60006101526100b636859003850185610598565b8051805160209182015192820151805190830151604080517f476c6f62616c2073746174653a0000000000000000000000000000000000000081870152602d810194909452604d8401959095527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116606d850152911b1660758201528251808203605d018152607d909101909252815191012090565b8261016360a0860160808701610667565b6040516020016101759392919061068b565b60405160208183030381529060405280519060200120905092915050565b61019b6103ab565b600082815260208190526040812080546101b4906106c9565b80601f01602080910402602001604051908101604052809291908181526020018280546101e0906106c9565b801561022d5780601f106102025761010080835404028352916020019161022d565b820191906000526020600020905b81548152906001019060200180831161021057829003601f168201915b50505050508060200190518101906102459190610766565b909250905060008190036102ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f48617368206e6f7420796574207365740000000000000000000000000000000060448201526064015b60405180910390fd5b915091565b6102c982826100a2565b8314610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f496e76616c69642068617368000000000000000000000000000000000000000060448201526064016102b1565b818160405160200161034492919061088c565b60408051601f1981840301815291815260008581526020819052209061036a90826108f5565b507f14c0a6b8d81f5915dacfd85e41ae4798343ec29de408ac4c13360c7238ae0ad983838360405161039e939291906109b5565b60405180910390a1505050565b60405180604001604052806103be6103cb565b815260200160005b905290565b60405180604001604052806103de6103e7565b81526020016103c65b60405180604001604052806002906020820280368337509192915050565b600060a0828403121561041757600080fd5b50919050565b60008060c0838503121561043057600080fd5b61043a8484610405565b9460a0939093013593505050565b60006020828403121561045a57600080fd5b5035919050565b6003811061047f57634e487b7160e01b600052602160045260246000fd5b9052565b8251805160c0830191908360005b60028110156104b0578251825260209283019290910190600101610491565b505050602090810151906040840160005b60028110156104e857835167ffffffffffffffff16825292820192908201906001016104c1565b505085015190506104fc6080840182610461565b508260a08301529392505050565b600080600060e0848603121561051f57600080fd5b833592506105308560208601610405565b915060c084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561057957610579610540565b60405290565b67ffffffffffffffff8116811461059557600080fd5b50565b6000608082840312156105aa57600080fd5b6105b2610556565b83601f8401126105c157600080fd5b6105c9610556565b8060408501868111156105db57600080fd5b855b818110156105f55780358452602093840193016105dd565b5081845286605f87011261060857600080fd5b610610610556565b9250829150608086018781111561062657600080fd5b8082101561064b5781356106398161057f565b84526020938401939190910190610626565b50506020830152509392505050565b6003811061059557600080fd5b60006020828403121561067957600080fd5b81356106848161065a565b9392505050565b8381528260208201526000600383106106b457634e487b7160e01b600052602160045260246000fd5b5060f89190911b604082015260410192915050565b600181811c908216806106dd57607f821691505b60208210810361041757634e487b7160e01b600052602260045260246000fd5b600082601f83011261070e57600080fd5b610716610556565b80604084018581111561072857600080fd5b845b8181101561074b57805161073d8161057f565b84526020938401930161072a565b509095945050505050565b80516107618161065a565b919050565b60008082840360c081121561077a57600080fd5b60a081121561078857600080fd5b610790610556565b608082121561079e57600080fd5b6107a6610556565b915085601f8601126107b757600080fd5b6107bf610556565b8060408701888111156107d157600080fd5b875b818110156107eb5780518452602093840193016107d3565b508185526107f989826106fd565b602086015250505081815261081060808601610756565b602082015260a094909401519395939450505050565b6040818337604082016040820160005b600281101561086957813561084a8161057f565b67ffffffffffffffff1683526020928301929190910190600101610836565b505050608081013561087a8161065a565b6108876080840182610461565b505050565b60c0810161089a8285610826565b8260a08301529392505050565b601f82111561088757600081815260208120601f850160051c810160208610156108ce5750805b601f850160051c820191505b818110156108ed578281556001016108da565b505050505050565b815167ffffffffffffffff81111561090f5761090f610540565b6109238161091d84546106c9565b846108a7565b602080601f83116001811461095857600084156109405750858301515b600019600386901b1c1916600185901b1785556108ed565b600085815260208120601f198616915b8281101561098757888601518255948401946001909101908401610968565b50858210156109a55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b83815260e081016109c96020830185610826565b8260c083015294935050505056fea2646970667358221220d0ed545f8625d4422cd4a6306c6e46af920c1e32ce4225ffb24ad77981a2c49364736f6c6343000811003360a060405234801561001057600080fd5b50604051610be3380380610be383398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610b206100c3600039600081816101a5015281816101f6015281816102b601528181610333015281816104500152818161051b0152818161058a0152818161060e01526106a50152610b206000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063a23c44b111610076578063cb23bcb51161005b578063cb23bcb5146101a0578063dff69787146101c7578063facd743b146101cf57600080fd5b8063a23c44b11461012f578063bc45e0ae1461019857600080fd5b806365f7f80d146100a85780636ddd3744146100ce5780638ee1a126146100f957806392c8134c1461010f575b600080fd5b6100b06101f2565b60405167ffffffffffffffff90911681526020015b60405180910390f35b6100e16100dc36600461072b565b61027b565b6040516001600160a01b0390911681526020016100c5565b61010161032f565b6040519081526020016100c5565b61012261011d36600461072b565b6103b3565b6040516100c5919061074f565b61014261013d366004610868565b6104bc565b6040516100c59190600060a08201905082518252602083015167ffffffffffffffff8082166020850152806040860151166040850152806060860151166060850152505060808301511515608083015292915050565b6100e1610586565b6100e17f000000000000000000000000000000000000000000000000000000000000000081565b6100b061060a565b6101e26101dd366004610868565b61066a565b60405190151581526020016100c5565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166365f7f80d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610252573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102769190610895565b905090565b6040517f6ddd374400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636ddd374490602401602060405180830381865afa158015610305573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032991906108b2565b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638ee1a1266040518163ffffffff1660e01b8152600401602060405180830381865afa15801561038f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027691906108cf565b6040805161018081018252600080825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e0820181905261010082018190526101208201819052610140820181905261016082015290517f92c8134c00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906392c8134c9060240161018060405180830381865afa158015610498573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610939565b6040805160a08101825260008082526020820181905281830181905260608201819052608082015290517fa23c44b10000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a23c44b19060240160a060405180830381865afa158015610562573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610a1b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bc45e0ae6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027691906108b2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff697876040518163ffffffff1660e01b8152600401602060405180830381865afa158015610252573d6000803e3d6000fd5b6040517ffacd743b0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063facd743b90602401602060405180830381865afa1580156106ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610acf565b67ffffffffffffffff8116811461072857600080fd5b50565b60006020828403121561073d57600080fd5b813561074881610712565b9392505050565b600061018082019050825182526020830151602083015260408301516040830152606083015161078b606084018267ffffffffffffffff169052565b5060808301516107a7608084018267ffffffffffffffff169052565b5060a08301516107c360a084018267ffffffffffffffff169052565b5060c08301516107df60c084018267ffffffffffffffff169052565b5060e08301516107fb60e084018267ffffffffffffffff169052565b506101008381015167ffffffffffffffff81168483015250506101208381015167ffffffffffffffff81168483015250506101408381015167ffffffffffffffff811684830152505061016092830151919092015290565b6001600160a01b038116811461072857600080fd5b60006020828403121561087a57600080fd5b813561074881610853565b805161089081610712565b919050565b6000602082840312156108a757600080fd5b815161074881610712565b6000602082840312156108c457600080fd5b815161074881610853565b6000602082840312156108e157600080fd5b5051919050565b604051610180810167ffffffffffffffff81118282101715610933577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610180828403121561094c57600080fd5b6109546108e8565b82518152602083015160208201526040830151604082015261097860608401610885565b606082015261098960808401610885565b608082015261099a60a08401610885565b60a08201526109ab60c08401610885565b60c08201526109bc60e08401610885565b60e08201526101006109cf818501610885565b908201526101206109e1848201610885565b908201526101406109f3848201610885565b90820152610160928301519281019290925250919050565b8051801515811461089057600080fd5b600060a08284031215610a2d57600080fd5b60405160a0810181811067ffffffffffffffff82111715610a77577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825181526020830151610a8c81610712565b60208201526040830151610a9f81610712565b60408201526060830151610ab281610712565b6060820152610ac360808401610a0b565b60808201529392505050565b600060208284031215610ae157600080fd5b61074882610a0b56fea26469706673582212203c3480b4b424cedcf330b2d11dd5f962c39c04fab5203cf33888313dc4bda1b564736f6c63430008110033608060405234801561001057600080fd5b506040516102a03803806102a083398101604081905261002f916100bf565b8051610042906000906020840190610049565b505061017c565b828054828255906000526020600020908101928215610084579160200282015b82811115610084578251825591602001919060010190610069565b50610090929150610094565b5090565b5b808211156100905760008155600101610095565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156100d257600080fd5b82516001600160401b03808211156100e957600080fd5b818501915085601f8301126100fd57600080fd5b81518181111561010f5761010f6100a9565b8060051b604051601f19603f83011681018181108582111715610134576101346100a9565b60405291825284820192508381018501918883111561015257600080fd5b938501935b8285101561017057845184529385019392850192610157565b98975050505050505050565b6101158061018b6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b0ec2ae114602d575b600080fd5b60336047565b604051603e9190609d565b60405180910390f35b60606000805480602002602001604051908101604052809291908181526020018280548015609357602002820191906000526020600020905b8154815260200190600101908083116080575b5050505050905090565b6020808252825182820181905260009190848201906040850190845b8181101560d35783518352928401929184019160010160b9565b5090969550505050505056fea2646970667358221220591bf41323dcdd242b18818cea694e71bdf2db68435c9ffd8e09f5502b0d007164736f6c63430008110033", + Bin: "0x6105a06040523480156200001257600080fd5b5060405162007f0338038062007f0383398101604081905262000035916200079c565b83516001600160a01b039081166101005260208086015182166101205260408087015183166101405260608088015184166101605260808089015185166101805260a089015185166101a05260c089015185166101c05260e0890151851661038052875185166103a0529287015184166103c0528682015184166103e052860151831661040052908501519091166104205251620000d390620002c2565b604051809103906000f080158015620000f0573d6000803e3d6000fd5b506001600160a01b03166104405260208401516040516200011190620002d0565b6001600160a01b039091168152602001604051809103906000f0801580156200013e573d6000803e3d6000fd5b506001600160a01b0390811661046052825181166104805260208084015182166104a05260408085015183166104c05260608086015184166104e05260808087015185166105005260a08088015186166105205260c088015186166105405260e08801518616610560526101008801518616610580528601516102605285516001600160401b039081166101e0529386015190931661020052848201519093166102205291830151610240528201519051620001fa90620002de565b620002069190620008c3565b604051809103906000f08015801562000223573d6000803e3d6000fd5b506001600160a01b039081166102e05260c0808301519091166102805260e08083015115156102a05261010083015160805261012083015160a05261014083015190915261016082015160ff1690526101808101516001600160401b039081166102c0526101a08201511515610300526101c0909101805160200151821661032052805151821661034052516040015116610360525062000909915050565b610a2d806200665383390190565b610be3806200708083390190565b6102a08062007c6383390190565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715620003285762000328620002ec565b60405290565b6040516101e081016001600160401b0381118282101715620003285762000328620002ec565b60405161010081016001600160401b0381118282101715620003285762000328620002ec565b6001600160a01b03811681146200039057600080fd5b50565b8051620003a0816200037a565b919050565b600060a08284031215620003b857600080fd5b60405160a081016001600160401b0381118282101715620003dd57620003dd620002ec565b80604052508091508251620003f2816200037a565b8152602083015162000404816200037a565b6020820152604083015162000419816200037a565b604082015260608301516200042e816200037a565b6060820152608083015162000443816200037a565b6080919091015292915050565b600061012082840312156200046457600080fd5b6200046e62000302565b90506200047b8262000393565b81526200048b6020830162000393565b60208201526200049e6040830162000393565b6040820152620004b16060830162000393565b6060820152620004c46080830162000393565b6080820152620004d760a0830162000393565b60a0820152620004ea60c0830162000393565b60c0820152620004fd60e0830162000393565b60e08201526101006200051281840162000393565b9082015292915050565b80516001600160401b0381168114620003a057600080fd5b600082601f8301126200054657600080fd5b815160206001600160401b0380831115620005655762000565620002ec565b8260051b604051601f19603f830116810181811084821117156200058d576200058d620002ec565b604052938452858101830193838101925087851115620005ac57600080fd5b83870191505b84821015620005cd57815183529183019190830190620005b2565b979650505050505050565b80518015158114620003a057600080fd5b805160ff81168114620003a057600080fd5b6000606082840312156200060e57600080fd5b604051606081016001600160401b0381118282101715620006335762000633620002ec565b60405290508062000644836200051c565b815262000654602084016200051c565b602082015262000667604084016200051c565b60408201525092915050565b600061022082840312156200068757600080fd5b620006916200032e565b90506200069e826200051c565b8152620006ae602083016200051c565b6020820152620006c16040830162000393565b60408201526060828101519082015260808201516001600160401b03811115620006ea57600080fd5b620006f88482850162000534565b60808301525060a082015160a08201526200071660c0830162000393565b60c08201526200072960e08301620005d8565b60e08201526101008281015190820152610120808301519082015261014080830151908201526101606200075f818401620005e9565b90820152610180620007738382016200051c565b908201526101a062000787838201620005d8565b908201526101c06200051284848301620005fb565b6000806000808486036102e0811215620007b557600080fd5b61010080821215620007c657600080fd5b620007d062000354565b91508651620007df816200037a565b8252620007ef6020880162000393565b6020830152620008026040880162000393565b6040830152620008156060880162000393565b6060830152620008286080880162000393565b60808301526200083b60a0880162000393565b60a08301526200084e60c0880162000393565b60c08301526200086160e0880162000393565b60e08301528195506200087788828901620003a5565b945050506200088b866101a0870162000450565b6102c08601519092506001600160401b03811115620008a957600080fd5b620008b78782880162000673565b91505092959194509250565b6020808252825182820181905260009190848201906040850190845b81811015620008fd57835183529284019291840191600101620008df565b50909695505050505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e05161040051610420516104405161046051610480516104a0516104c0516104e051610500516105205161054051610560516105805161599662000cbd600039600081816103fa0152610a240152600081816103230152610bc20152600081816105210152610bf10152600081816104d101526116cc015260008181610815015261223d0152600081816107c50152612101015260008181610624015261203a0152600081816107ed015281816123fc015281816125b201526126710152600081816108dd0152611ed101526000818161057101528181610c2001528181610f9e0152818161135d015281816114550152818161150901528181611763015281816117920152611b5b01526000818161083d015281816118d2015261199c01526000818161054901526120630152600081816104a9015281816123cc015281816125da01526126950152600081816104f9015261212b01526000818161039001528181610a450152611efa01526000818161036801526122670152600081816106c40152610d5801526000818161092d01526124880152600081816105fc01526124280152600081816108b50152612458015260008181610905015281816123a501526127850152600081816107250152611c5e01526000818161096e0152611dc80152600081816106ec0152818161116401526111b10152600081816108650152611d7001526000818161064c0152611c230152600081816109e60152611b3501526000818161044a0152611b0601526000818161069c0152610d370152600081816103b80152611ad601526000818161074d01528181610b26015261201101526000818161042201528181610b550152818161221401526122c801526000818161077501528181610b84015281816120d8015261218c01526000818161088d01528181610af701528181612384015281816127a801526128a401526000818161099601528181610ac801528181611ea80152611f90015260008181610674015281816112e60152818161161401526116f401526000818161079d01528181610d900152611bf40152600081816105990152611d9f0152600081816109be0152611d3e0152600081816104720152611d180152600081816105d40152611cf201526159966000f3fe60806040523480156200001157600080fd5b5060043610620003185760003560e01c80639f9854e511620001a5578063d1da2c5c11620000f5578063eb657a4e11620000a3578063ee9a31a2116200007a578063ee9a31a21462000990578063fa28742014620009b8578063faf5625f14620009e057600080fd5b8063eb657a4e1462000927578063ebe03a93146200094f578063ec4f74ce146200096857600080fd5b8063d49d518111620000d8578063d49d518114620008af578063dae7cb8b14620008d7578063e8180c2914620008ff57600080fd5b8063d1da2c5c146200085f578063d384cb95146200088757600080fd5b8063bf5e3d521162000153578063c519d1511162000136578063c519d15114620007e7578063c897f55e146200080f578063cc8089bb146200083757600080fd5b8063bf5e3d521462000797578063c21c423314620007bf57600080fd5b8063b5e00c3f1162000188578063b5e00c3f146200071f578063b70106971462000747578063be41b367146200076f57600080fd5b80639f9854e514620006be578063b38d57f014620006e657600080fd5b80633c2b7840116200026d578063609fb503116200021b57806385e1f4d011620001f257806385e1f4d014620006465780638765240f146200066e57806391ddb285146200069657600080fd5b8063609fb50314620005ce578063785ffb3714620005f6578063817cd312146200061e57600080fd5b80634b2f51ef11620002505780634b2f51ef14620005435780634e0e75fb146200056b5780635d9e2444146200059357600080fd5b80633c2b784014620004f35780634692de5d146200051b57600080fd5b80631b142ea711620002cb5780631ccc2cd111620002ae5780631ccc2cd1146200046c5780632cfb7ca314620004a35780632db93bdc14620004cb57600080fd5b80631b142ea7146200041c5780631c39b672146200044457600080fd5b80630a54257d11620003005780630a54257d146200038a5780631047fc5214620003b257806310a662e214620003f457600080fd5b8062f9731e146200031d5780630787484b1462000362575b600080fd5b620003457f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff909116815260200162000359565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620004947f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200162000359565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620005bb7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200162000359565b620004947f000000000000000000000000000000000000000000000000000000000000000081565b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620004947f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b6200070e7f000000000000000000000000000000000000000000000000000000000000000081565b604051901515815260200162000359565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b6200070e7f000000000000000000000000000000000000000000000000000000000000000081565b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b620009666200096036600462002b88565b62000a08565b005b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620004947f000000000000000000000000000000000000000000000000000000000000000081565b620004947f000000000000000000000000000000000000000000000000000000000000000081565b62000a12620012e4565b600062000a1e62001755565b905060007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060405162000a7290620028fe565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562000ab5573d6000803e3d6000fd5b50905060006040518061012001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602001836001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bc45e0ae6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000c7d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ca3919062002c33565b6001600160a01b0316815250905060008360405160200162000cc6919062002f5d565b604051602081830303815290604052805190602001209050600062000d18826040518060200162000cf7906200290c565b6020820181038252601f19601f820116604052508051906020012062001e05565b905062000d258162001e91565b836001600160a01b0316631a72d54c827f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008961014001518a61016001518b61018001518c602001517f00000000000000000000000000000000000000000000000000000000000000008e61020001518f61010001516040518b63ffffffff1660e01b815260040162000de29a9998979695949392919062002f72565b600060405180830381600087803b15801562000dfd57600080fd5b505af115801562000e12573d6000803e3d6000fd5b5050505060008260405162000e27906200290c565b8190604051809103906000f590508015801562000e48573d6000803e3d6000fd5b509050816001600160a01b0316816001600160a01b03161462000eb25760405162461bcd60e51b815260206004820152601560248201527f554e455850435445445f524f4c4c55505f41444452000000000000000000000060448201526064015b60405180910390fd5b608086018051309091526040517fd384644b0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063d384644b9062000f05908a90899060040162002fef565b600060405180830381600087803b15801562000f2057600080fd5b505af115801562000f35573d6000803e3d6000fd5b50505050875160001462001162576000885167ffffffffffffffff81111562000f625762000f6262002aab565b60405190808252806020026020018201604052801562000f8c578160200160208202803683370190505b50905060005b8951811015620010e2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663facd743b8b838151811062000fe05762000fe0620030d5565b60200260200101516040518263ffffffff1660e01b81526004016200101491906001600160a01b0391909116815260200190565b602060405180830381865afa15801562001032573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001058919062003101565b620010a65760405162461bcd60e51b815260206004820152601860248201527f554e45585045435445445f4e45575f56414c494441544f520000000000000000604482015260640162000ea9565b6001828281518110620010bd57620010bd620030d5565b9115156020928302919091019091015280620010d98162003135565b91505062000f92565b506040517fa3ffb7720000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063a3ffb772906200112c908c908590600401620031ab565b600060405180830381600087803b1580156200114757600080fd5b505af11580156200115c573d6000803e3d6000fd5b50505050505b7f00000000000000000000000000000000000000000000000000000000000000001562001220576040517fa2b4f1d80000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000151560048201526001600160a01b0383169063a2b4f1d890602401600060405180830381600087803b1580156200120657600080fd5b505af11580156200121b573d6000803e3d6000fd5b505050505b6040517f13af40350000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301528316906313af403590602401600060405180830381600087803b1580156200127d57600080fd5b505af115801562001292573d6000803e3d6000fd5b5050604080516001600160a01b0380881682528a1660208201527f7e5cc5c3fce046d868d5918548df8d3e8ef9f09e6fb30a68081f1f1348cd0314935001905060405180910390a15050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200134057600080fd5b505af115801562001355573d6000803e3d6000fd5b5050505060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff697876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620013ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013e0919062003221565b905060328167ffffffffffffffff161115620013fa575060325b60005b8167ffffffffffffffff168167ffffffffffffffff1610156200169b576040517f6ddd374400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636ddd374490602401602060405180830381865afa158015620014a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014cb919062002c33565b6040517fa23c44b10000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063a23c44b19060240160a060405180830381865afa15801562001551573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200157791906200323f565b905080608001518015620015975750606081015167ffffffffffffffff16155b156200168357604080516001808252818301909252600091602080830190803683370190505090508281600081518110620015d657620015d6620030d5565b6001600160a01b0392831660209182029290920101526040517f7c75c2980000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000090911690637c75c298906200164d908490600401620032d2565b600060405180830381600087803b1580156200166857600080fd5b505af11580156200167d573d6000803e3d6000fd5b50505050505b505080806200169290620032e7565b915050620013fd565b506040517f0d40a0fd0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000001690630d40a0fd90602401600060405180830381600087803b1580156200173957600080fd5b505af11580156200174e573d6000803e3d6000fd5b5050505050565b6200175f6200291a565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166392c8134c7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166365f7f80d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620017ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001815919062003221565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff909116600482015260240161018060405180830381865afa15801562001874573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200189a919062003311565b516040517f8eaa6ac00000000000000000000000000000000000000000000000000000000081526004810182905290915060009081907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638eaa6ac09060240160c060405180830381865afa15801562001922573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001948919062003465565b915091506200195662002a24565b8251815260208084015190820190600281111562001978576200197862002d47565b908160028111156200198e576200198e62002d47565b905250836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166331644130620019cc8462002342565b856040518363ffffffff1660e01b8152600401620019ec92919062003536565b602060405180830381865afa15801562001a0a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a3091906200356d565b1462001a7f5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206c617465737420657865637574696f6e2068617368000000604482015260640162000ea9565b62001aab6040518060800160405280600081526020016000815260200160008152602001600081525090565b60408051606081018252600080825260208201819052918101919091526040518061026001604052807f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638ee1a1266040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001bb8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bde91906200356d565b8152602001306001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000081526020016040518060200160405280600081525081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0ec2ae16040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001cbb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ce5919081019062003587565b81526020018381526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f000000000000000000000000000000000000000000000000000000000000000081526020018481526020018581526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000060ff1681526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16815260200182815250965050505050505090565b604080517fff000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000905b90505b92915050565b60405163266a23b160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401527f000000000000000000000000000000000000000000000000000000000000000082166024840152917f0000000000000000000000000000000000000000000000000000000000000000909116906399a88ec490604401600060405180830381600087803b15801562001f4157600080fd5b505af115801562001f56573d6000803e3d6000fd5b50506040517f919cc7060000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301527f000000000000000000000000000000000000000000000000000000000000000016925063919cc7069150602401600060405180830381600087803b15801562001fd757600080fd5b505af115801562001fec573d6000803e3d6000fd5b5050505062001ffa62002382565b60405163266a23b160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401527f000000000000000000000000000000000000000000000000000000000000000082166024840152917f0000000000000000000000000000000000000000000000000000000000000000909116906399a88ec490604401600060405180830381600087803b158015620020aa57600080fd5b505af1158015620020bf573d6000803e3d6000fd5b505060405163266a23b160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401527f00000000000000000000000000000000000000000000000000000000000000008216602484015293507f00000000000000000000000000000000000000000000000000000000000000001691506399a88ec490604401600060405180830381600087803b1580156200217157600080fd5b505af115801562002186573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636ae71f126040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620021e657600080fd5b505af1158015620021fb573d6000803e3d6000fd5b505060405163266a23b160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401527f00000000000000000000000000000000000000000000000000000000000000008216602484015293507f00000000000000000000000000000000000000000000000000000000000000001691506399a88ec490604401600060405180830381600087803b158015620022ad57600080fd5b505af1158015620022c2573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636ae71f126040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200232257600080fd5b505af115801562002337573d6000803e3d6000fd5b505050505050505050565b6200234c62002a4d565b604051806040016040528083600001518152602001836020015160028111156200237a576200237a62002d47565b905292915050565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000001562002593577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639623609d827f000000000000000000000000000000000000000000000000000000000000000060405180606001604052807f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16815250604051602401620024c6919062003616565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa655d93700000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152620025599392919060040162003648565b600060405180830381600087803b1580156200257457600080fd5b505af115801562002589573d6000803e3d6000fd5b5050505062002639565b60405163266a23b160e21b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f000000000000000000000000000000000000000000000000000000000000000016906399a88ec490604401600060405180830381600087803b1580156200261f57600080fd5b505af115801562002634573d6000803e3d6000fd5b505050505b6040517f204e1c7a0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000008116917f00000000000000000000000000000000000000000000000000000000000000009091169063204e1c7a90602401602060405180830381865afa158015620026df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002705919062002c33565b6001600160a01b031614620027835760405162461bcd60e51b815260206004820152603160248201527f44656c61794275666665723a206e65772073657120696e626f7820696d706c6560448201527f6d656e746174696f6e206e6f7420736574000000000000000000000000000000606482015260840162000ea9565b7f000000000000000000000000000000000000000000000000000000000000000015157f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634b678a666040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200282b919062003101565b151514620028a25760405162461bcd60e51b815260206004820152602660248201527f44656c61794275666665723a20697344656c617942756666657261626c65206e60448201527f6f74207365740000000000000000000000000000000000000000000000000000606482015260840162000ea9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636ae71f126040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200173957600080fd5b610ed3806200368083390190565b61140e806200455383390190565b604051806102600160405280600067ffffffffffffffff16815260200160006001600160a01b03168152602001600081526020016000801916815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016060815260200160608152602001620029b96040518060800160405280600081526020016000815260200160008152602001600081525090565b8152602001600081526020016000815260200160008152602001620029dd62002a24565b81526000602080830182905260408084018390526060808501849052608085018490528151908101825283815291820183905281019190915260a09091015290565b905290565b604051806060016040528062002a3962002a6e565b815260200160008152600060209091015290565b604051806040016040528062002a6262002a6e565b81526020016000905290565b604051806040016040528062002a8362002a8d565b815260200162002a1f5b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff8111828210171562002ae85762002ae862002aab565b60405290565b6040805190810167ffffffffffffffff8111828210171562002ae85762002ae862002aab565b604051601f8201601f1916810167ffffffffffffffff8111828210171562002b405762002b4062002aab565b604052919050565b600067ffffffffffffffff82111562002b655762002b6562002aab565b5060051b60200190565b6001600160a01b038116811462002b8557600080fd5b50565b6000602080838503121562002b9c57600080fd5b823567ffffffffffffffff81111562002bb457600080fd5b8301601f8101851362002bc657600080fd5b803562002bdd62002bd78262002b48565b62002b14565b81815260059190911b8201830190838101908783111562002bfd57600080fd5b928401925b8284101562002c2857833562002c188162002b6f565b8252928401929084019062002c02565b979650505050505050565b60006020828403121562002c4657600080fd5b815162002c538162002b6f565b9392505050565b6000815180845260005b8181101562002c825760208185018101518683018201520162002c64565b506000602082860101526020601f19601f83011685010191505092915050565b600081518084526020808501945080840160005b8381101562002cd45781518752958201959082019060010162002cb6565b509495945050505050565b80518260005b600281101562002d0657825182526020928301929091019060010162002ce5565b5050506020808201516040840160005b600281101562002d3f57825167ffffffffffffffff168252918301919083019060010162002d16565b505050505050565b634e487b7160e01b600052602160045260246000fd5b6003811062002d7c57634e487b7160e01b600052602160045260246000fd5b9052565b62002d8d82825162002cdf565b602081015162002da1608084018262002d5d565b506040015160a09190910152565b805167ffffffffffffffff16825260006103a0602083015162002ddd60208601826001600160a01b03169052565b506040830151604085015260608301516060850152608083015162002e0d60808601826001600160a01b03169052565b5060a083015162002e2960a08601826001600160a01b03169052565b5060c083015160c085015260e08301518160e086015262002e4d8286018262002c5a565b915050610100808401518583038287015262002e6a838262002ca2565b6101208681015180518983015260208101516101408a015260408101516101608a015260608101516101808a01529194509250905050506101408301516101a0818187015261016085015191506101c0828188015261018086015192506101e08381890152828701519350610200925062002ee88389018562002d80565b908601516102c08801528501516001600160a01b03166102e087015284015160ff166103008601525061022083015167ffffffffffffffff908116610320860152610240840151805182166103408701526020810151821661036087015260408101519091166103808601525b509392505050565b60208152600062001e88602083018462002daf565b60006101406001600160a01b03808e16845267ffffffffffffffff8d166020850152808c1660408501528a60608501528960808501528860a085015280881660c085015280871660e08501525060ff85166101008401528061012084015262002fde8184018562002ca2565b9d9c50505050505050505050505050565b6000610140808352620030058184018662002daf565b9150506001600160a01b03835116602083015260208301516200303360408401826001600160a01b03169052565b5060408301516001600160a01b03811660608401525060608301516001600160a01b03811660808401525060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100620030ba818501836001600160a01b03169052565b8401516001600160a01b038116610120850152905062002f55565b634e487b7160e01b600052603260045260246000fd5b80518015158114620030fc57600080fd5b919050565b6000602082840312156200311457600080fd5b62001e8882620030eb565b634e487b7160e01b600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200316957620031696200311f565b5060010190565b600081518084526020808501945080840160005b8381101562002cd45781516001600160a01b03168752958201959082019060010162003184565b604081526000620031c0604083018562003170565b82810360208481019190915284518083528582019282019060005b81811015620031fb578451151583529383019391830191600101620031db565b5090979650505050505050565b805167ffffffffffffffff81168114620030fc57600080fd5b6000602082840312156200323457600080fd5b62001e888262003208565b600060a082840312156200325257600080fd5b60405160a0810181811067ffffffffffffffff8211171562003278576200327862002aab565b604052825181526200328d6020840162003208565b6020820152620032a06040840162003208565b6040820152620032b36060840162003208565b6060820152620032c660808401620030eb565b60808201529392505050565b60208152600062001e88602083018462003170565b600067ffffffffffffffff8083168181036200330757620033076200311f565b6001019392505050565b600061018082840312156200332557600080fd5b6200332f62002ac1565b825181526020830151602082015260408301516040820152620033556060840162003208565b6060820152620033686080840162003208565b60808201526200337b60a0840162003208565b60a08201526200338e60c0840162003208565b60c0820152620033a160e0840162003208565b60e0820152610100620033b681850162003208565b90820152610120620033ca84820162003208565b90820152610140620033de84820162003208565b90820152610160928301519281019290925250919050565b600082601f8301126200340857600080fd5b6200341262002aee565b8060408401858111156200342557600080fd5b845b818110156200344a576200343b8162003208565b84526020938401930162003427565b509095945050505050565b805160038110620030fc57600080fd5b60008082840360c08112156200347a57600080fd5b60a08112156200348957600080fd5b6200349362002aee565b6080821215620034a257600080fd5b620034ac62002aee565b915085601f860112620034be57600080fd5b620034c862002aee565b806040870188811115620034db57600080fd5b875b81811015620034f7578051845260209384019301620034dd565b50818552620035078982620033f6565b6020860152505050818152620035206080860162003455565b602082015260a094909401519395939450505050565b600060c0820190506200354b82855162002cdf565b60208401516200355f608084018262002d5d565b508260a08301529392505050565b6000602082840312156200358057600080fd5b5051919050565b600060208083850312156200359b57600080fd5b825167ffffffffffffffff811115620035b357600080fd5b8301601f81018513620035c557600080fd5b8051620035d662002bd78262002b48565b81815260059190911b82018301908381019087831115620035f657600080fd5b928401925b8284101562002c2857835182529284019290840190620035fb565b6060810162001e8b8284805167ffffffffffffffff908116835260208083015182169084015260409182015116910152565b60006001600160a01b0380861683528085166020840152506060604083015262003676606083018462002c5a565b9594505050505056fe608060405260405162000ed338038062000ed3833981016040819052620000269162000487565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ba565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b6200023e1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000eac60279139620002f8565b9392505050565b60006200018060008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200026a1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620001fa1760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000567565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f1919062000585565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b50506000910152565b6000806000606084860312156200049d57600080fd5b620004a8846200042e565b9250620004b8602085016200042e565b60408501519092506001600160401b0380821115620004d657600080fd5b818601915086601f830112620004eb57600080fd5b8151818111156200050057620005006200044b565b604051601f8201601f19908116603f011681019083821181831017156200052b576200052b6200044b565b816040528281528960208487010111156200054557600080fd5b6200055883602083016020880162000461565b80955050505050509250925092565b600082516200057b81846020870162000461565b9190910192915050565b6020815260008251806020840152620005a681604085016020870162000461565b601f01601f19169190910160400192915050565b6108c280620005ca6000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100d9578063f851a440146100f95761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61010e565b005b61006b61010e565b34801561008157600080fd5b5061006b610090366004610736565b610128565b61006b6100a3366004610751565b610165565b3480156100b457600080fd5b506100bd6101cc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100e557600080fd5b5061006b6100f4366004610736565b6101fd565b34801561010557600080fd5b506100bd61021d565b610116610279565b610126610121610329565b610333565b565b610130610357565b6001600160a01b0316330361015d5761015a8160405180602001604052806000815250600061038a565b50565b61015a61010e565b61016d610357565b6001600160a01b031633036101c4576101bf8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061038a915050565b505050565b6101bf61010e565b60006101d6610357565b6001600160a01b031633036101f2576101ed610329565b905090565b6101fa61010e565b90565b610205610357565b6001600160a01b0316330361015d5761015a816103b5565b6000610227610357565b6001600160a01b031633036101f2576101ed610357565b6060610263838360405180606001604052806027815260200161086660279139610409565b9392505050565b6001600160a01b03163b151590565b610281610357565b6001600160a01b031633036101265760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006101ed6104fd565b3660008037600080366000845af43d6000803e808015610352573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61039383610525565b6000825111806103a05750805b156101bf576103af838361023e565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103de610357565b604080516001600160a01b03928316815291841660208301520160405180910390a161015a81610565565b60606001600160a01b0384163b6104885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610320565b600080856001600160a01b0316856040516104a391906107f8565b600060405180830381855af49150503d80600081146104de576040519150601f19603f3d011682016040523d82523d6000602084013e6104e3565b606091505b50915091506104f382828661063d565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61037b565b61052e81610676565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105e15760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610320565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6060831561064c575081610263565b82511561065c5782518084602001fd5b8160405162461bcd60e51b81526004016103209190610814565b6001600160a01b0381163b6106f35760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610320565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610604565b80356001600160a01b038116811461073157600080fd5b919050565b60006020828403121561074857600080fd5b6102638261071a565b60008060006040848603121561076657600080fd5b61076f8461071a565b9250602084013567ffffffffffffffff8082111561078c57600080fd5b818601915086601f8301126107a057600080fd5b8135818111156107af57600080fd5b8760208285010111156107c157600080fd5b6020830194508093505050509250925092565b60005b838110156107ef5781810151838201526020016107d7565b50506000910152565b6000825161080a8184602087016107d4565b9190910192915050565b60208152600082518060208401526108338160408501602087016107d4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c1888b421836e473bfc3e72d153dc5c76569ce769e37cfa444506490e142daa564736f6c63430008110033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b506113ee806100206000396000f3fe6080604052600436106100225760003560e01c8063d384644b1461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f610054366004610d95565b61006b565b6100696100646101bd565b6102a1565b565b60006100756102ca565b6001600160a01b031614801561009b575060006100906102fd565b6001600160a01b0316145b80156100b7575060006100ac610325565b6001600160a01b0316145b156101b5576101b18160c0015183836040516024016100d792919061113d565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9e7e6aa70000000000000000000000000000000000000000000000000000000017905260e08601519087015191516001600160a01b0390921660248301529060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052608087015161034d565b5050565b6101b1610059565b600060043610156102155760405162461bcd60e51b815260206004820152600b60248201527f4e4f5f46554e435f53494700000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000336102206102ca565b6001600160a01b03160361023b576102366102fd565b610243565b610243610325565b90506001600160a01b0381163b61029c5760405162461bcd60e51b815260206004820152601360248201527f5441524745545f4e4f545f434f4e545241435400000000000000000000000000604482015260640161020c565b919050565b3660008037600080366000845af43d6000803e8080156102c0573d6000f35b3d6000fd5b505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6102ee565b60007f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6102ee565b61037860017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610461132b565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103146103a6576103a661134c565b6103d160017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61132b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc146103ff576103ff61134c565b61042a60017f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546e61132b565b7f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d146104585761045861134c565b61046181610480565b61046d858560006104d7565b61047983836000610502565b5050505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104a96102ca565b604080516001600160a01b03928316815291841660208301520160405180910390a16104d48161050b565b50565b6104e0836105e3565b6000825111806104ed5750805b156102c5576104fc8383610623565b50505050565b6104e083610651565b6001600160a01b0381166105875760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161020c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6105ec81610691565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610648838360405180606001604052806027815260200161139260279139610735565b90505b92915050565b61065a8161082b565b6040516001600160a01b038216907ff7eed2a7fabbf1bec8d55ed5e785cc76622376dde5df4ff15470551e030b813490600090a250565b6001600160a01b0381163b61070e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161020c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105aa565b60606001600160a01b0384163b6107b45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161020c565b600080856001600160a01b0316856040516107cf9190611362565b600060405180830381855af49150503d806000811461080a576040519150601f19603f3d011682016040523d82523d6000602084013e61080f565b606091505b509150915061081f8282866108cf565b925050505b9392505050565b6001600160a01b0381163b6108a85760405162461bcd60e51b815260206004820152603760248201527f455243313936373a206e6577207365636f6e6461727920696d706c656d656e7460448201527f6174696f6e206973206e6f74206120636f6e7472616374000000000000000000606482015260840161020c565b807f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6105aa565b606083156108de575081610824565b8251156108ee5782518084602001fd5b8160405162461bcd60e51b815260040161020c919061137e565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561094157610941610908565b60405290565b6040805190810167ffffffffffffffff8111828210171561094157610941610908565b604051610120810167ffffffffffffffff8111828210171561094157610941610908565b604051610260810167ffffffffffffffff8111828210171561094157610941610908565b604051601f8201601f1916810167ffffffffffffffff811182821017156109db576109db610908565b604052919050565b803567ffffffffffffffff8116811461029c57600080fd5b80356001600160a01b038116811461029c57600080fd5b600082601f830112610a2357600080fd5b813567ffffffffffffffff811115610a3d57610a3d610908565b610a506020601f19601f840116016109b2565b818152846020838601011115610a6557600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112610a9357600080fd5b8135602067ffffffffffffffff821115610aaf57610aaf610908565b8160051b610abe8282016109b2565b9283528481018201928281019087851115610ad857600080fd5b83870192505b84831015610af757823582529183019190830190610ade565b979650505050505050565b600060808284031215610b1457600080fd5b6040516080810181811067ffffffffffffffff82111715610b3757610b37610908565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b600082601f830112610b7957600080fd5b610b81610947565b806040840185811115610b9357600080fd5b845b81811015610bb457610ba6816109e3565b845260209384019301610b95565b509095945050505050565b80356003811061029c57600080fd5b600081830360c0811215610be157600080fd5b610be961091e565b91506080811215610bf957600080fd5b50610c02610947565b83601f840112610c1157600080fd5b610c19610947565b806040850186811115610c2b57600080fd5b855b81811015610c45578035845260209384019301610c2d565b50818452610c538782610b68565b60208501525050508152610c6960808301610bbf565b602082015260a0820135604082015292915050565b803560ff8116811461029c57600080fd5b600060608284031215610ca157600080fd5b610ca961091e565b9050610cb4826109e3565b8152610cc2602083016109e3565b6020820152610cd3604083016109e3565b604082015292915050565b60006101208284031215610cf157600080fd5b610cf961096a565b9050610d04826109fb565b8152610d12602083016109fb565b6020820152610d23604083016109fb565b6040820152610d34606083016109fb565b6060820152610d45608083016109fb565b6080820152610d5660a083016109fb565b60a0820152610d6760c083016109fb565b60c0820152610d7860e083016109fb565b60e0820152610100610d8b8184016109fb565b9082015292915050565b600080610140808486031215610daa57600080fd5b833567ffffffffffffffff80821115610dc257600080fd5b908501906103a08288031215610dd757600080fd5b610ddf61098e565b610de8836109e3565b8152610df6602084016109fb565b60208201526040830135604082015260608301356060820152610e1b608084016109fb565b6080820152610e2c60a084016109fb565b60a082015260c083013560c082015260e083013582811115610e4d57600080fd5b610e5989828601610a12565b60e0830152506101008084013583811115610e7357600080fd5b610e7f8a828701610a82565b8284015250506101209150610e9688838501610b02565b828201526101a0915081830135848201526101c09350838301356101608201526101e080840135610180830152610200610ed28a828701610bce565b848401526102c085013586840152610eed6102e086016109fb565b82840152610efe6103008601610c7e565b9083015250610f1061032084016109e3565b610220820152610f24886103408501610c8f565b61024082015280955050505050610f3e8460208501610cde565b90509250929050565b60005b83811015610f62578181015183820152602001610f4a565b50506000910152565b60008151808452610f83816020860160208601610f47565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b83811015610fc757815187529582019590820190600101610fab565b509495945050505050565b60038110610ff057634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b600281101561101b578251825260209283019290910190600101610ffc565b505050602090810151906040840160005b600281101561105357835167ffffffffffffffff168252928201929082019060010161102c565b505082015190506110676080840182610fd2565b506040015160a09190910152565b6001600160a01b038082511683528060208301511660208401528060408301511660408401525060608101516110b660608401826001600160a01b03169052565b5060808101516110d160808401826001600160a01b03169052565b5060a08101516110ec60a08401826001600160a01b03169052565b5060c081015161110760c08401826001600160a01b03169052565b5060e081015161112260e08401826001600160a01b03169052565b50610100818101516001600160a01b038116848301526104fc565b600061014080835261115b818401865167ffffffffffffffff169052565b6020850151610160611177818601836001600160a01b03169052565b604087015191506101808281870152606088015192506101a08381880152608089015193506101c06111b3818901866001600160a01b03169052565b60a08a015194506101e06111d1818a01876001600160a01b03169052565b60c08b0151955061020086818b015260e08c015196506102206103a0818c01526111ff6104e08c0189610f6b565b97506101008d01516102407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec08d8b0301818e015261123d8a83610f97565b99506101208f015191506112766102608e0183805182526020810151602083015260408101516040830152606081015160608301525050565b998e01516102e08d0152878e01516103008d0152868e01516103208d0152858e0151996112a76103408e018c610ff4565b948e01516104008d015250918c01516001600160a01b03166104208b01528b015160ff166104408a01528a015167ffffffffffffffff9081166104608a0152908a0151805182166104808a0152602081015182166104a08a015260408101519091166104c0890152945061131a92505050565b915061082490506020830184611075565b8181038181111561064b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60008251611374818460208701610f47565b9190910192915050565b6020815260006106486020830184610f6b56fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220577ece77367ad682a0e21e0d8e295a83ee6834bb13f8126c050804a725153bab64736f6c63430008110033a2646970667358221220de755e795f8c31ba51fe985c762af04866f88491a3c8d050d5d3650e5ca3343164736f6c63430008110033608060405234801561001057600080fd5b50610a0d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806331644130146100465780638eaa6ac01461006c578063945c94941461008d575b600080fd5b61005961005436600461041d565b6100a2565b6040519081526020015b60405180910390f35b61007f61007a366004610448565b610193565b604051610063929190610483565b6100a061009b36600461050a565b6102bf565b005b60006101526100b636859003850185610598565b8051805160209182015192820151805190830151604080517f476c6f62616c2073746174653a0000000000000000000000000000000000000081870152602d810194909452604d8401959095527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116606d850152911b1660758201528251808203605d018152607d909101909252815191012090565b8261016360a0860160808701610667565b6040516020016101759392919061068b565b60405160208183030381529060405280519060200120905092915050565b61019b6103ab565b600082815260208190526040812080546101b4906106c9565b80601f01602080910402602001604051908101604052809291908181526020018280546101e0906106c9565b801561022d5780601f106102025761010080835404028352916020019161022d565b820191906000526020600020905b81548152906001019060200180831161021057829003601f168201915b50505050508060200190518101906102459190610766565b909250905060008190036102ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f48617368206e6f7420796574207365740000000000000000000000000000000060448201526064015b60405180910390fd5b915091565b6102c982826100a2565b8314610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f496e76616c69642068617368000000000000000000000000000000000000000060448201526064016102b1565b818160405160200161034492919061088c565b60408051601f1981840301815291815260008581526020819052209061036a90826108f5565b507f14c0a6b8d81f5915dacfd85e41ae4798343ec29de408ac4c13360c7238ae0ad983838360405161039e939291906109b5565b60405180910390a1505050565b60405180604001604052806103be6103cb565b815260200160005b905290565b60405180604001604052806103de6103e7565b81526020016103c65b60405180604001604052806002906020820280368337509192915050565b600060a0828403121561041757600080fd5b50919050565b60008060c0838503121561043057600080fd5b61043a8484610405565b9460a0939093013593505050565b60006020828403121561045a57600080fd5b5035919050565b6003811061047f57634e487b7160e01b600052602160045260246000fd5b9052565b8251805160c0830191908360005b60028110156104b0578251825260209283019290910190600101610491565b505050602090810151906040840160005b60028110156104e857835167ffffffffffffffff16825292820192908201906001016104c1565b505085015190506104fc6080840182610461565b508260a08301529392505050565b600080600060e0848603121561051f57600080fd5b833592506105308560208601610405565b915060c084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561057957610579610540565b60405290565b67ffffffffffffffff8116811461059557600080fd5b50565b6000608082840312156105aa57600080fd5b6105b2610556565b83601f8401126105c157600080fd5b6105c9610556565b8060408501868111156105db57600080fd5b855b818110156105f55780358452602093840193016105dd565b5081845286605f87011261060857600080fd5b610610610556565b9250829150608086018781111561062657600080fd5b8082101561064b5781356106398161057f565b84526020938401939190910190610626565b50506020830152509392505050565b6003811061059557600080fd5b60006020828403121561067957600080fd5b81356106848161065a565b9392505050565b8381528260208201526000600383106106b457634e487b7160e01b600052602160045260246000fd5b5060f89190911b604082015260410192915050565b600181811c908216806106dd57607f821691505b60208210810361041757634e487b7160e01b600052602260045260246000fd5b600082601f83011261070e57600080fd5b610716610556565b80604084018581111561072857600080fd5b845b8181101561074b57805161073d8161057f565b84526020938401930161072a565b509095945050505050565b80516107618161065a565b919050565b60008082840360c081121561077a57600080fd5b60a081121561078857600080fd5b610790610556565b608082121561079e57600080fd5b6107a6610556565b915085601f8601126107b757600080fd5b6107bf610556565b8060408701888111156107d157600080fd5b875b818110156107eb5780518452602093840193016107d3565b508185526107f989826106fd565b602086015250505081815261081060808601610756565b602082015260a094909401519395939450505050565b6040818337604082016040820160005b600281101561086957813561084a8161057f565b67ffffffffffffffff1683526020928301929190910190600101610836565b505050608081013561087a8161065a565b6108876080840182610461565b505050565b60c0810161089a8285610826565b8260a08301529392505050565b601f82111561088757600081815260208120601f850160051c810160208610156108ce5750805b601f850160051c820191505b818110156108ed578281556001016108da565b505050505050565b815167ffffffffffffffff81111561090f5761090f610540565b6109238161091d84546106c9565b846108a7565b602080601f83116001811461095857600084156109405750858301515b600019600386901b1c1916600185901b1785556108ed565b600085815260208120601f198616915b8281101561098757888601518255948401946001909101908401610968565b50858210156109a55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b83815260e081016109c96020830185610826565b8260c083015294935050505056fea26469706673582212201810aafa2710cf085af645b315f1aaef8f94d38c67e5d40ba1c50a9af3f75ff164736f6c6343000811003360a060405234801561001057600080fd5b50604051610be3380380610be383398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610b206100c3600039600081816101a5015281816101f6015281816102b601528181610333015281816104500152818161051b0152818161058a0152818161060e01526106a50152610b206000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063a23c44b111610076578063cb23bcb51161005b578063cb23bcb5146101a0578063dff69787146101c7578063facd743b146101cf57600080fd5b8063a23c44b11461012f578063bc45e0ae1461019857600080fd5b806365f7f80d146100a85780636ddd3744146100ce5780638ee1a126146100f957806392c8134c1461010f575b600080fd5b6100b06101f2565b60405167ffffffffffffffff90911681526020015b60405180910390f35b6100e16100dc36600461072b565b61027b565b6040516001600160a01b0390911681526020016100c5565b61010161032f565b6040519081526020016100c5565b61012261011d36600461072b565b6103b3565b6040516100c5919061074f565b61014261013d366004610868565b6104bc565b6040516100c59190600060a08201905082518252602083015167ffffffffffffffff8082166020850152806040860151166040850152806060860151166060850152505060808301511515608083015292915050565b6100e1610586565b6100e17f000000000000000000000000000000000000000000000000000000000000000081565b6100b061060a565b6101e26101dd366004610868565b61066a565b60405190151581526020016100c5565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166365f7f80d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610252573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102769190610895565b905090565b6040517f6ddd374400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636ddd374490602401602060405180830381865afa158015610305573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032991906108b2565b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638ee1a1266040518163ffffffff1660e01b8152600401602060405180830381865afa15801561038f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027691906108cf565b6040805161018081018252600080825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e0820181905261010082018190526101208201819052610140820181905261016082015290517f92c8134c00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906392c8134c9060240161018060405180830381865afa158015610498573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610939565b6040805160a08101825260008082526020820181905281830181905260608201819052608082015290517fa23c44b10000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a23c44b19060240160a060405180830381865afa158015610562573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610a1b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bc45e0ae6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027691906108b2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff697876040518163ffffffff1660e01b8152600401602060405180830381865afa158015610252573d6000803e3d6000fd5b6040517ffacd743b0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063facd743b90602401602060405180830381865afa1580156106ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610acf565b67ffffffffffffffff8116811461072857600080fd5b50565b60006020828403121561073d57600080fd5b813561074881610712565b9392505050565b600061018082019050825182526020830151602083015260408301516040830152606083015161078b606084018267ffffffffffffffff169052565b5060808301516107a7608084018267ffffffffffffffff169052565b5060a08301516107c360a084018267ffffffffffffffff169052565b5060c08301516107df60c084018267ffffffffffffffff169052565b5060e08301516107fb60e084018267ffffffffffffffff169052565b506101008381015167ffffffffffffffff81168483015250506101208381015167ffffffffffffffff81168483015250506101408381015167ffffffffffffffff811684830152505061016092830151919092015290565b6001600160a01b038116811461072857600080fd5b60006020828403121561087a57600080fd5b813561074881610853565b805161089081610712565b919050565b6000602082840312156108a757600080fd5b815161074881610712565b6000602082840312156108c457600080fd5b815161074881610853565b6000602082840312156108e157600080fd5b5051919050565b604051610180810167ffffffffffffffff81118282101715610933577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610180828403121561094c57600080fd5b6109546108e8565b82518152602083015160208201526040830151604082015261097860608401610885565b606082015261098960808401610885565b608082015261099a60a08401610885565b60a08201526109ab60c08401610885565b60c08201526109bc60e08401610885565b60e08201526101006109cf818501610885565b908201526101206109e1848201610885565b908201526101406109f3848201610885565b90820152610160928301519281019290925250919050565b8051801515811461089057600080fd5b600060a08284031215610a2d57600080fd5b60405160a0810181811067ffffffffffffffff82111715610a77577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825181526020830151610a8c81610712565b60208201526040830151610a9f81610712565b60408201526060830151610ab281610712565b6060820152610ac360808401610a0b565b60808201529392505050565b600060208284031215610ae157600080fd5b61074882610a0b56fea2646970667358221220e7d173d7427911ae1261bfcb8df4436ba036e779c448fabcffea3e87feb3abf864736f6c63430008110033608060405234801561001057600080fd5b506040516102a03803806102a083398101604081905261002f916100bf565b8051610042906000906020840190610049565b505061017c565b828054828255906000526020600020908101928215610084579160200282015b82811115610084578251825591602001919060010190610069565b50610090929150610094565b5090565b5b808211156100905760008155600101610095565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156100d257600080fd5b82516001600160401b03808211156100e957600080fd5b818501915085601f8301126100fd57600080fd5b81518181111561010f5761010f6100a9565b8060051b604051601f19603f83011681018181108582111715610134576101346100a9565b60405291825284820192508381018501918883111561015257600080fd5b938501935b8285101561017057845184529385019392850192610157565b98975050505050505050565b6101158061018b6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b0ec2ae114602d575b600080fd5b60336047565b604051603e9190609d565b60405180910390f35b60606000805480602002602001604051908101604052809291908181526020018280548015609357602002820191906000526020600020905b8154815260200190600101908083116080575b5050505050905090565b6020808252825182820181905260009190848201906040850190845b8181101560d35783518352928401929184019160010160b9565b5090969550505050505056fea26469706673582212202f269e929f4817e35935475eda876bc6d672c7ccad46939d0d194266206869ab64736f6c63430008110033", } // BOLDUpgradeActionABI is the input ABI used to generate the binding from. @@ -2771,7 +2771,7 @@ func (_BOLDUpgradeAction *BOLDUpgradeActionFilterer) ParseRollupMigrated(log typ // BridgeCreatorMetaData contains all meta data concerning the BridgeCreator contract. var BridgeCreatorMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"contractIBridge\",\"name\":\"bridge\",\"type\":\"address\"},{\"internalType\":\"contractISequencerInbox\",\"name\":\"sequencerInbox\",\"type\":\"address\"},{\"internalType\":\"contractISequencerInbox\",\"name\":\"delayBufferableSequencerInbox\",\"type\":\"address\"},{\"internalType\":\"contractIInboxBase\",\"name\":\"inbox\",\"type\":\"address\"},{\"internalType\":\"contractIRollupEventInbox\",\"name\":\"rollupEventInbox\",\"type\":\"address\"},{\"internalType\":\"contractIOutbox\",\"name\":\"outbox\",\"type\":\"address\"}],\"internalType\":\"structBridgeCreator.BridgeTemplates\",\"name\":\"_ethBasedTemplates\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"contractIBridge\",\"name\":\"bridge\",\"type\":\"address\"},{\"internalType\":\"contractISequencerInbox\",\"name\":\"sequencerInbox\",\"type\":\"address\"},{\"internalType\":\"contractISequencerInbox\",\"name\":\"delayBufferableSequencerInbox\",\"type\":\"address\"},{\"internalType\":\"contractIInboxBase\",\"name\":\"inbox\",\"type\":\"address\"},{\"internalType\":\"contractIRollupEventInbox\",\"name\":\"rollupEventInbox\",\"type\":\"address\"},{\"internalType\":\"contractIOutbox\",\"name\":\"outbox\",\"type\":\"address\"}],\"internalType\":\"structBridgeCreator.BridgeTemplates\",\"name\":\"_erc20BasedTemplates\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"ERC20TemplatesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"TemplatesUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"adminProxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rollup\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nativeToken\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"delayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delaySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureSeconds\",\"type\":\"uint256\"}],\"internalType\":\"structISequencerInbox.MaxTimeVariation\",\"name\":\"maxTimeVariation\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"replenishRateInBasis\",\"type\":\"uint64\"}],\"internalType\":\"structBufferConfig\",\"name\":\"bufferConfig\",\"type\":\"tuple\"}],\"name\":\"createBridge\",\"outputs\":[{\"components\":[{\"internalType\":\"contractIBridge\",\"name\":\"bridge\",\"type\":\"address\"},{\"internalType\":\"contractIInboxBase\",\"name\":\"inbox\",\"type\":\"address\"},{\"internalType\":\"contractISequencerInbox\",\"name\":\"sequencerInbox\",\"type\":\"address\"},{\"internalType\":\"contractIRollupEventInbox\",\"name\":\"rollupEventInbox\",\"type\":\"address\"},{\"internalType\":\"contractIOutbox\",\"name\":\"outbox\",\"type\":\"address\"}],\"internalType\":\"structBridgeCreator.BridgeContracts\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"erc20BasedTemplates\",\"outputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"bridge\",\"type\":\"address\"},{\"internalType\":\"contractISequencerInbox\",\"name\":\"sequencerInbox\",\"type\":\"address\"},{\"internalType\":\"contractISequencerInbox\",\"name\":\"delayBufferableSequencerInbox\",\"type\":\"address\"},{\"internalType\":\"contractIInboxBase\",\"name\":\"inbox\",\"type\":\"address\"},{\"internalType\":\"contractIRollupEventInbox\",\"name\":\"rollupEventInbox\",\"type\":\"address\"},{\"internalType\":\"contractIOutbox\",\"name\":\"outbox\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ethBasedTemplates\",\"outputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"bridge\",\"type\":\"address\"},{\"internalType\":\"contractISequencerInbox\",\"name\":\"sequencerInbox\",\"type\":\"address\"},{\"internalType\":\"contractISequencerInbox\",\"name\":\"delayBufferableSequencerInbox\",\"type\":\"address\"},{\"internalType\":\"contractIInboxBase\",\"name\":\"inbox\",\"type\":\"address\"},{\"internalType\":\"contractIRollupEventInbox\",\"name\":\"rollupEventInbox\",\"type\":\"address\"},{\"internalType\":\"contractIOutbox\",\"name\":\"outbox\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contractIBridge\",\"name\":\"bridge\",\"type\":\"address\"},{\"internalType\":\"contractISequencerInbox\",\"name\":\"sequencerInbox\",\"type\":\"address\"},{\"internalType\":\"contractISequencerInbox\",\"name\":\"delayBufferableSequencerInbox\",\"type\":\"address\"},{\"internalType\":\"contractIInboxBase\",\"name\":\"inbox\",\"type\":\"address\"},{\"internalType\":\"contractIRollupEventInbox\",\"name\":\"rollupEventInbox\",\"type\":\"address\"},{\"internalType\":\"contractIOutbox\",\"name\":\"outbox\",\"type\":\"address\"}],\"internalType\":\"structBridgeCreator.BridgeTemplates\",\"name\":\"_newTemplates\",\"type\":\"tuple\"}],\"name\":\"updateERC20Templates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contractIBridge\",\"name\":\"bridge\",\"type\":\"address\"},{\"internalType\":\"contractISequencerInbox\",\"name\":\"sequencerInbox\",\"type\":\"address\"},{\"internalType\":\"contractISequencerInbox\",\"name\":\"delayBufferableSequencerInbox\",\"type\":\"address\"},{\"internalType\":\"contractIInboxBase\",\"name\":\"inbox\",\"type\":\"address\"},{\"internalType\":\"contractIRollupEventInbox\",\"name\":\"rollupEventInbox\",\"type\":\"address\"},{\"internalType\":\"contractIOutbox\",\"name\":\"outbox\",\"type\":\"address\"}],\"internalType\":\"structBridgeCreator.BridgeTemplates\",\"name\":\"_newTemplates\",\"type\":\"tuple\"}],\"name\":\"updateTemplates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040523480156200001157600080fd5b5060405162001f6638038062001f66833981016040819052620000349162000268565b6200003f336200013e565b8151600180546001600160a01b03199081166001600160a01b039384161790915560208085015160028054841691851691909117905560408086015160038054851691861691909117905560608087015160048054861691871691909117905560808088015160058054871691881691909117905560a09788015160068054871691881691909117905586516007805487169188169190911790559286015160088054861691871691909117905590850151600980548516918616919091179055840151600a80548416918516919091179055830151600b805483169184169190911790559190920151600c80549092169216919091179055620002a3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620001a657600080fd5b919050565b600060c08284031215620001be57600080fd5b60405160c081016001600160401b0381118282101715620001ef57634e487b7160e01b600052604160045260246000fd5b60405290508062000200836200018e565b815262000210602084016200018e565b602082015262000223604084016200018e565b604082015262000236606084016200018e565b606082015262000249608084016200018e565b60808201526200025c60a084016200018e565b60a08201525092915050565b60008061018083850312156200027d57600080fd5b620002898484620001ab565b91506200029a8460c08501620001ab565b90509250929050565b611cb380620002b36000396000f3fe60806040523480156200001157600080fd5b5060043610620000935760003560e01c80638da5cb5b11620000625780638da5cb5b14620001b8578063ceab941014620001d4578063e83b0e1614620001eb578063f2fde38b146200020257600080fd5b806311f02227146200009857806357d3a2001462000112578063715018a6146200017957806376768ab91462000185575b600080fd5b600154600254600354600454600554600654620000cb956001600160a01b03908116958116948116938116928116911686565b604080516001600160a01b03978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c0015b60405180910390f35b620001296200012336600462000a80565b62000219565b60405162000109919081516001600160a01b039081168252602080840151821690830152604080840151821690830152606080840151821690830152608092830151169181019190915260a00190565b62000183620005c0565b005b600754600854600954600a54600b54600c54620000cb956001600160a01b03908116958116948116938116928116911686565b6000546040516001600160a01b03909116815260200162000109565b62000183620001e536600462000b47565b620005d8565b62000183620001fc36600462000b47565b6200061f565b620001836200021336600462000b60565b62000666565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152600062000255602084018462000ba5565b67ffffffffffffffff16151590506000620002e3886001600160a01b038816156200028257600762000285565b60015b6040805160c08101825282546001600160a01b03908116825260018401548116602083015260028401548116928201929092526003830154821660608201526004830154821660808201526005909201541660a0820152846200071a565b90506001600160a01b0386166200035a57805160405163189acdbd60e31b81526001600160a01b0389811660048301529091169063c4d66de890602401600060405180830381600087803b1580156200033b57600080fd5b505af115801562000350573d6000803e3d6000fd5b50505050620003dc565b80516040517f485cc9550000000000000000000000000000000000000000000000000000000081526001600160a01b03898116600483015288811660248301529091169063485cc95590604401600060405180830381600087803b158015620003c257600080fd5b505af1158015620003d7573d6000803e3d6000fd5b505050505b604080820151825191517f1ad87e450000000000000000000000000000000000000000000000000000000081526001600160a01b0390911691631ad87e45916200042e91908990899060040162000bc3565b600060405180830381600087803b1580156200044957600080fd5b505af11580156200045e573d6000803e3d6000fd5b505050506020810151815160408084015190517f485cc9550000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216602482015291169063485cc95590604401600060405180830381600087803b158015620004d357600080fd5b505af1158015620004e8573d6000803e3d6000fd5b505050506060810151815160405163189acdbd60e31b81526001600160a01b03918216600482015291169063c4d66de890602401600060405180830381600087803b1580156200053757600080fd5b505af11580156200054c573d6000803e3d6000fd5b505050506080810151815160405163189acdbd60e31b81526001600160a01b03918216600482015291169063c4d66de890602401600060405180830381600087803b1580156200059b57600080fd5b505af1158015620005b0573d6000803e3d6000fd5b50929a9950505050505050505050565b620005ca62000989565b620005d66000620009ff565b565b620005e262000989565b806007620005f1828262000c4b565b50506040517fa47434bb6d1ddd5521e8980ded6a783513e159f80437d78715b10e6e8b6bba5e90600090a150565b6200062962000989565b80600162000638828262000c4b565b50506040517fc9d3947d22fa124aaec4c7e8c919f79016e2d7b48eee10568375d98b86460d1b90600090a150565b6200067062000989565b6001600160a01b0381166200070c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6200071781620009ff565b50565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040805160a08101825260008082526020820181905291810182905260608101829052608081019190915283516040518690620007829062000a5c565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f080158015620007c5573d6000803e3d6000fd5b506001600160a01b0316815282620007e2578360200151620007e8565b83604001515b85604051620007f79062000a5c565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f0801580156200083a573d6000803e3d6000fd5b506001600160a01b0316604080830191909152606085015190518690620008619062000a5c565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f080158015620008a4573d6000803e3d6000fd5b506001600160a01b0316602082015260808401516040518690620008c89062000a5c565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f0801580156200090b573d6000803e3d6000fd5b506001600160a01b0316606082015260a084015160405186906200092f9062000a5c565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562000972573d6000803e3d6000fd5b506001600160a01b03166080820152949350505050565b6000546001600160a01b03163314620005d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000703565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610ed38062000dab83390190565b6001600160a01b03811681146200071757600080fd5b600080600080600085870361014081121562000a9b57600080fd5b863562000aa88162000a6a565b9550602087013562000aba8162000a6a565b9450604087013562000acc8162000a6a565b935060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08201121562000aff57600080fd5b60608701925060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208201121562000b3657600080fd5b5060e0860190509295509295909350565b600060c0828403121562000b5a57600080fd5b50919050565b60006020828403121562000b7357600080fd5b813562000b808162000a6a565b9392505050565b803567ffffffffffffffff8116811462000ba057600080fd5b919050565b60006020828403121562000bb857600080fd5b62000b808262000b87565b6000610100820190506001600160a01b03851682528335602083015260208401356040830152604084013560608301526060840135608083015267ffffffffffffffff8062000c128562000b87565b1660a08401528062000c276020860162000b87565b1660c08401528062000c3c6040860162000b87565b1660e084015250949350505050565b813562000c588162000a6a565b815473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03821617825550602082013562000c8f8162000a6a565b60018201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03831617905550604082013562000cca8162000a6a565b60028201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03831617905550606082013562000d058162000a6a565b60038201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03831617905550608082013562000d408162000a6a565b60048201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555060a082013562000d7b8162000a6a565b60058201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03831617905550505056fe608060405260405162000ed338038062000ed3833981016040819052620000269162000487565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ba565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b6200023e1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000eac60279139620002f8565b9392505050565b60006200018060008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200026a1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620001fa1760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000567565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f1919062000585565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b50506000910152565b6000806000606084860312156200049d57600080fd5b620004a8846200042e565b9250620004b8602085016200042e565b60408501519092506001600160401b0380821115620004d657600080fd5b818601915086601f830112620004eb57600080fd5b8151818111156200050057620005006200044b565b604051601f8201601f19908116603f011681019083821181831017156200052b576200052b6200044b565b816040528281528960208487010111156200054557600080fd5b6200055883602083016020880162000461565b80955050505050509250925092565b600082516200057b81846020870162000461565b9190910192915050565b6020815260008251806020840152620005a681604085016020870162000461565b601f01601f19169190910160400192915050565b6108c280620005ca6000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100d9578063f851a440146100f95761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61010e565b005b61006b61010e565b34801561008157600080fd5b5061006b610090366004610736565b610128565b61006b6100a3366004610751565b610165565b3480156100b457600080fd5b506100bd6101cc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100e557600080fd5b5061006b6100f4366004610736565b6101fd565b34801561010557600080fd5b506100bd61021d565b610116610279565b610126610121610329565b610333565b565b610130610357565b6001600160a01b0316330361015d5761015a8160405180602001604052806000815250600061038a565b50565b61015a61010e565b61016d610357565b6001600160a01b031633036101c4576101bf8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061038a915050565b505050565b6101bf61010e565b60006101d6610357565b6001600160a01b031633036101f2576101ed610329565b905090565b6101fa61010e565b90565b610205610357565b6001600160a01b0316330361015d5761015a816103b5565b6000610227610357565b6001600160a01b031633036101f2576101ed610357565b6060610263838360405180606001604052806027815260200161086660279139610409565b9392505050565b6001600160a01b03163b151590565b610281610357565b6001600160a01b031633036101265760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006101ed6104fd565b3660008037600080366000845af43d6000803e808015610352573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61039383610525565b6000825111806103a05750805b156101bf576103af838361023e565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103de610357565b604080516001600160a01b03928316815291841660208301520160405180910390a161015a81610565565b60606001600160a01b0384163b6104885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610320565b600080856001600160a01b0316856040516104a391906107f8565b600060405180830381855af49150503d80600081146104de576040519150601f19603f3d011682016040523d82523d6000602084013e6104e3565b606091505b50915091506104f382828661063d565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61037b565b61052e81610676565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105e15760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610320565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6060831561064c575081610263565b82511561065c5782518084602001fd5b8160405162461bcd60e51b81526004016103209190610814565b6001600160a01b0381163b6106f35760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610320565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610604565b80356001600160a01b038116811461073157600080fd5b919050565b60006020828403121561074857600080fd5b6102638261071a565b60008060006040848603121561076657600080fd5b61076f8461071a565b9250602084013567ffffffffffffffff8082111561078c57600080fd5b818601915086601f8301126107a057600080fd5b8135818111156107af57600080fd5b8760208285010111156107c157600080fd5b6020830194508093505050509250925092565b60005b838110156107ef5781810151838201526020016107d7565b50506000910152565b6000825161080a8184602087016107d4565b9190910192915050565b60208152600082518060208401526108338160408501602087016107d4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c1888b421836e473bfc3e72d153dc5c76569ce769e37cfa444506490e142daa564736f6c63430008110033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209b184c1c4f0c1941d8967f61cfad33d931f528e64155f9ff78e1411c5a71100664736f6c63430008110033", + Bin: "0x60806040523480156200001157600080fd5b5060405162001f6638038062001f66833981016040819052620000349162000268565b6200003f336200013e565b8151600180546001600160a01b03199081166001600160a01b039384161790915560208085015160028054841691851691909117905560408086015160038054851691861691909117905560608087015160048054861691871691909117905560808088015160058054871691881691909117905560a09788015160068054871691881691909117905586516007805487169188169190911790559286015160088054861691871691909117905590850151600980548516918616919091179055840151600a80548416918516919091179055830151600b805483169184169190911790559190920151600c80549092169216919091179055620002a3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620001a657600080fd5b919050565b600060c08284031215620001be57600080fd5b60405160c081016001600160401b0381118282101715620001ef57634e487b7160e01b600052604160045260246000fd5b60405290508062000200836200018e565b815262000210602084016200018e565b602082015262000223604084016200018e565b604082015262000236606084016200018e565b606082015262000249608084016200018e565b60808201526200025c60a084016200018e565b60a08201525092915050565b60008061018083850312156200027d57600080fd5b620002898484620001ab565b91506200029a8460c08501620001ab565b90509250929050565b611cb380620002b36000396000f3fe60806040523480156200001157600080fd5b5060043610620000935760003560e01c80638da5cb5b11620000625780638da5cb5b14620001b8578063ceab941014620001d4578063e83b0e1614620001eb578063f2fde38b146200020257600080fd5b806311f02227146200009857806357d3a2001462000112578063715018a6146200017957806376768ab91462000185575b600080fd5b600154600254600354600454600554600654620000cb956001600160a01b03908116958116948116938116928116911686565b604080516001600160a01b03978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c0015b60405180910390f35b620001296200012336600462000a80565b62000219565b60405162000109919081516001600160a01b039081168252602080840151821690830152604080840151821690830152606080840151821690830152608092830151169181019190915260a00190565b62000183620005c0565b005b600754600854600954600a54600b54600c54620000cb956001600160a01b03908116958116948116938116928116911686565b6000546040516001600160a01b03909116815260200162000109565b62000183620001e536600462000b47565b620005d8565b62000183620001fc36600462000b47565b6200061f565b620001836200021336600462000b60565b62000666565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152600062000255602084018462000ba5565b67ffffffffffffffff16151590506000620002e3886001600160a01b038816156200028257600762000285565b60015b6040805160c08101825282546001600160a01b03908116825260018401548116602083015260028401548116928201929092526003830154821660608201526004830154821660808201526005909201541660a0820152846200071a565b90506001600160a01b0386166200035a57805160405163189acdbd60e31b81526001600160a01b0389811660048301529091169063c4d66de890602401600060405180830381600087803b1580156200033b57600080fd5b505af115801562000350573d6000803e3d6000fd5b50505050620003dc565b80516040517f485cc9550000000000000000000000000000000000000000000000000000000081526001600160a01b03898116600483015288811660248301529091169063485cc95590604401600060405180830381600087803b158015620003c257600080fd5b505af1158015620003d7573d6000803e3d6000fd5b505050505b604080820151825191517f1ad87e450000000000000000000000000000000000000000000000000000000081526001600160a01b0390911691631ad87e45916200042e91908990899060040162000bc3565b600060405180830381600087803b1580156200044957600080fd5b505af11580156200045e573d6000803e3d6000fd5b505050506020810151815160408084015190517f485cc9550000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216602482015291169063485cc95590604401600060405180830381600087803b158015620004d357600080fd5b505af1158015620004e8573d6000803e3d6000fd5b505050506060810151815160405163189acdbd60e31b81526001600160a01b03918216600482015291169063c4d66de890602401600060405180830381600087803b1580156200053757600080fd5b505af11580156200054c573d6000803e3d6000fd5b505050506080810151815160405163189acdbd60e31b81526001600160a01b03918216600482015291169063c4d66de890602401600060405180830381600087803b1580156200059b57600080fd5b505af1158015620005b0573d6000803e3d6000fd5b50929a9950505050505050505050565b620005ca62000989565b620005d66000620009ff565b565b620005e262000989565b806007620005f1828262000c4b565b50506040517fa47434bb6d1ddd5521e8980ded6a783513e159f80437d78715b10e6e8b6bba5e90600090a150565b6200062962000989565b80600162000638828262000c4b565b50506040517fc9d3947d22fa124aaec4c7e8c919f79016e2d7b48eee10568375d98b86460d1b90600090a150565b6200067062000989565b6001600160a01b0381166200070c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6200071781620009ff565b50565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040805160a08101825260008082526020820181905291810182905260608101829052608081019190915283516040518690620007829062000a5c565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f080158015620007c5573d6000803e3d6000fd5b506001600160a01b0316815282620007e2578360200151620007e8565b83604001515b85604051620007f79062000a5c565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f0801580156200083a573d6000803e3d6000fd5b506001600160a01b0316604080830191909152606085015190518690620008619062000a5c565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f080158015620008a4573d6000803e3d6000fd5b506001600160a01b0316602082015260808401516040518690620008c89062000a5c565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f0801580156200090b573d6000803e3d6000fd5b506001600160a01b0316606082015260a084015160405186906200092f9062000a5c565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562000972573d6000803e3d6000fd5b506001600160a01b03166080820152949350505050565b6000546001600160a01b03163314620005d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000703565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610ed38062000dab83390190565b6001600160a01b03811681146200071757600080fd5b600080600080600085870361014081121562000a9b57600080fd5b863562000aa88162000a6a565b9550602087013562000aba8162000a6a565b9450604087013562000acc8162000a6a565b935060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08201121562000aff57600080fd5b60608701925060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208201121562000b3657600080fd5b5060e0860190509295509295909350565b600060c0828403121562000b5a57600080fd5b50919050565b60006020828403121562000b7357600080fd5b813562000b808162000a6a565b9392505050565b803567ffffffffffffffff8116811462000ba057600080fd5b919050565b60006020828403121562000bb857600080fd5b62000b808262000b87565b6000610100820190506001600160a01b03851682528335602083015260208401356040830152604084013560608301526060840135608083015267ffffffffffffffff8062000c128562000b87565b1660a08401528062000c276020860162000b87565b1660c08401528062000c3c6040860162000b87565b1660e084015250949350505050565b813562000c588162000a6a565b815473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03821617825550602082013562000c8f8162000a6a565b60018201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03831617905550604082013562000cca8162000a6a565b60028201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03831617905550606082013562000d058162000a6a565b60038201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03831617905550608082013562000d408162000a6a565b60048201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555060a082013562000d7b8162000a6a565b60058201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03831617905550505056fe608060405260405162000ed338038062000ed3833981016040819052620000269162000487565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ba565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b6200023e1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000eac60279139620002f8565b9392505050565b60006200018060008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200026a1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620001fa1760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000567565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f1919062000585565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b50506000910152565b6000806000606084860312156200049d57600080fd5b620004a8846200042e565b9250620004b8602085016200042e565b60408501519092506001600160401b0380821115620004d657600080fd5b818601915086601f830112620004eb57600080fd5b8151818111156200050057620005006200044b565b604051601f8201601f19908116603f011681019083821181831017156200052b576200052b6200044b565b816040528281528960208487010111156200054557600080fd5b6200055883602083016020880162000461565b80955050505050509250925092565b600082516200057b81846020870162000461565b9190910192915050565b6020815260008251806020840152620005a681604085016020870162000461565b601f01601f19169190910160400192915050565b6108c280620005ca6000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100d9578063f851a440146100f95761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61010e565b005b61006b61010e565b34801561008157600080fd5b5061006b610090366004610736565b610128565b61006b6100a3366004610751565b610165565b3480156100b457600080fd5b506100bd6101cc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100e557600080fd5b5061006b6100f4366004610736565b6101fd565b34801561010557600080fd5b506100bd61021d565b610116610279565b610126610121610329565b610333565b565b610130610357565b6001600160a01b0316330361015d5761015a8160405180602001604052806000815250600061038a565b50565b61015a61010e565b61016d610357565b6001600160a01b031633036101c4576101bf8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061038a915050565b505050565b6101bf61010e565b60006101d6610357565b6001600160a01b031633036101f2576101ed610329565b905090565b6101fa61010e565b90565b610205610357565b6001600160a01b0316330361015d5761015a816103b5565b6000610227610357565b6001600160a01b031633036101f2576101ed610357565b6060610263838360405180606001604052806027815260200161086660279139610409565b9392505050565b6001600160a01b03163b151590565b610281610357565b6001600160a01b031633036101265760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006101ed6104fd565b3660008037600080366000845af43d6000803e808015610352573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61039383610525565b6000825111806103a05750805b156101bf576103af838361023e565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103de610357565b604080516001600160a01b03928316815291841660208301520160405180910390a161015a81610565565b60606001600160a01b0384163b6104885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610320565b600080856001600160a01b0316856040516104a391906107f8565b600060405180830381855af49150503d80600081146104de576040519150601f19603f3d011682016040523d82523d6000602084013e6104e3565b606091505b50915091506104f382828661063d565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61037b565b61052e81610676565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105e15760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610320565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6060831561064c575081610263565b82511561065c5782518084602001fd5b8160405162461bcd60e51b81526004016103209190610814565b6001600160a01b0381163b6106f35760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610320565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610604565b80356001600160a01b038116811461073157600080fd5b919050565b60006020828403121561074857600080fd5b6102638261071a565b60008060006040848603121561076657600080fd5b61076f8461071a565b9250602084013567ffffffffffffffff8082111561078c57600080fd5b818601915086601f8301126107a057600080fd5b8135818111156107af57600080fd5b8760208285010111156107c157600080fd5b6020830194508093505050509250925092565b60005b838110156107ef5781810151838201526020016107d7565b50506000910152565b6000825161080a8184602087016107d4565b9190910192915050565b60208152600082518060208401526108338160408501602087016107d4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c1888b421836e473bfc3e72d153dc5c76569ce769e37cfa444506490e142daa564736f6c63430008110033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e658a1f22074c54ee589fdffc99172894def39e1ced6c91f351ce3a39500c7c364736f6c63430008110033", } // BridgeCreatorABI is the input ABI used to generate the binding from. @@ -3629,7 +3629,7 @@ func (_BridgeCreator *BridgeCreatorFilterer) ParseTemplatesUpdated(log types.Log // ConstantArrayStorageMetaData contains all meta data concerning the ConstantArrayStorage contract. var ConstantArrayStorageMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"__array\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"array\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b506040516102a03803806102a083398101604081905261002f916100bf565b8051610042906000906020840190610049565b505061017c565b828054828255906000526020600020908101928215610084579160200282015b82811115610084578251825591602001919060010190610069565b50610090929150610094565b5090565b5b808211156100905760008155600101610095565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156100d257600080fd5b82516001600160401b03808211156100e957600080fd5b818501915085601f8301126100fd57600080fd5b81518181111561010f5761010f6100a9565b8060051b604051601f19603f83011681018181108582111715610134576101346100a9565b60405291825284820192508381018501918883111561015257600080fd5b938501935b8285101561017057845184529385019392850192610157565b98975050505050505050565b6101158061018b6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b0ec2ae114602d575b600080fd5b60336047565b604051603e9190609d565b60405180910390f35b60606000805480602002602001604051908101604052809291908181526020018280548015609357602002820191906000526020600020905b8154815260200190600101908083116080575b5050505050905090565b6020808252825182820181905260009190848201906040850190845b8181101560d35783518352928401929184019160010160b9565b5090969550505050505056fea2646970667358221220591bf41323dcdd242b18818cea694e71bdf2db68435c9ffd8e09f5502b0d007164736f6c63430008110033", + Bin: "0x608060405234801561001057600080fd5b506040516102a03803806102a083398101604081905261002f916100bf565b8051610042906000906020840190610049565b505061017c565b828054828255906000526020600020908101928215610084579160200282015b82811115610084578251825591602001919060010190610069565b50610090929150610094565b5090565b5b808211156100905760008155600101610095565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156100d257600080fd5b82516001600160401b03808211156100e957600080fd5b818501915085601f8301126100fd57600080fd5b81518181111561010f5761010f6100a9565b8060051b604051601f19603f83011681018181108582111715610134576101346100a9565b60405291825284820192508381018501918883111561015257600080fd5b938501935b8285101561017057845184529385019392850192610157565b98975050505050505050565b6101158061018b6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b0ec2ae114602d575b600080fd5b60336047565b604051603e9190609d565b60405180910390f35b60606000805480602002602001604051908101604052809291908181526020018280548015609357602002820191906000526020600020905b8154815260200190600101908083116080575b5050505050905090565b6020808252825182820181905260009190848201906040850190845b8181101560d35783518352928401929184019160010160b9565b5090969550505050505056fea26469706673582212202f269e929f4817e35935475eda876bc6d672c7ccad46939d0d194266206869ab64736f6c63430008110033", } // ConstantArrayStorageABI is the input ABI used to generate the binding from. @@ -11203,7 +11203,7 @@ func (_ISeqInboxPostUpgradeInit *ISeqInboxPostUpgradeInitTransactorSession) Post // RollupAdminLogicMetaData contains all meta data concerning the RollupAdminLogic contract. var RollupAdminLogicMetaData = &bind.MetaData{ ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sendRoot\",\"type\":\"bytes32\"}],\"name\":\"AssertionConfirmed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"parentAssertionHash\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"prevPrevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sequencerBatchAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"internalType\":\"structBeforeStateData\",\"name\":\"beforeStateData\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"beforeState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"afterState\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"structAssertionInputs\",\"name\":\"assertion\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"afterInboxBatchAcc\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inboxMaxCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"}],\"name\":\"AssertionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"OwnerFunctionCalled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"challengeIndex\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asserter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"challengedAssertion\",\"type\":\"uint64\"}],\"name\":\"RollupChallengeStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"machineHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"RollupInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"UpgradedSecondary\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"withdrawalAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"initialBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"finalBalance\",\"type\":\"uint256\"}],\"name\":\"UserStakeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"initialBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"finalBalance\",\"type\":\"uint256\"}],\"name\":\"UserWithdrawableFundsUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_stakerMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountStaked\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"latestStakedAssertion\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isStaked\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"withdrawalAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"amountStaked\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"anyTrustFastConfirmer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"chainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"challengeGracePeriodBlocks\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"challengeManager\",\"outputs\":[{\"internalType\":\"contractIEdgeChallengeManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"confirmPeriodBlocks\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"parentAssertionHash\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"confirmState\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"inboxAcc\",\"type\":\"bytes32\"}],\"name\":\"forceConfirmAssertion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"prevAssertionHash\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"prevPrevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sequencerBatchAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"internalType\":\"structBeforeStateData\",\"name\":\"beforeStateData\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"beforeState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"afterState\",\"type\":\"tuple\"}],\"internalType\":\"structAssertionInputs\",\"name\":\"assertion\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"expectedAssertionHash\",\"type\":\"bytes32\"}],\"name\":\"forceCreateAssertion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"staker\",\"type\":\"address[]\"}],\"name\":\"forceRefundStaker\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisAssertionHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"getAssertion\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"firstChildBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"secondChildBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"createdAtBlock\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isFirstChild\",\"type\":\"bool\"},{\"internalType\":\"enumAssertionStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"configHash\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionNode\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"getAssertionCreationBlockForLogLookup\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"getFirstChildCreationBlock\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"getSecondChildCreationBlock\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"getStaker\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountStaked\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"latestStakedAssertion\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isStaked\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"withdrawalAddress\",\"type\":\"address\"}],\"internalType\":\"structIRollupCore.Staker\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"stakerNum\",\"type\":\"uint64\"}],\"name\":\"getStakerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inbox\",\"outputs\":[{\"internalType\":\"contractIInboxBase\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"stakeToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"baseStake\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"loserStakeEscrow\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"chainConfig\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"miniStakeValues\",\"type\":\"uint256[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"delayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delaySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureSeconds\",\"type\":\"uint256\"}],\"internalType\":\"structISequencerInbox.MaxTimeVariation\",\"name\":\"sequencerInboxMaxTimeVariation\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroBlockEdgeHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroBigStepEdgeHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroSmallStepEdgeHeight\",\"type\":\"uint256\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"genesisAssertionState\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"genesisInboxCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"anyTrustFastConfirmer\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"numBigStepLevel\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"challengeGracePeriodBlocks\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"replenishRateInBasis\",\"type\":\"uint64\"}],\"internalType\":\"structBufferConfig\",\"name\":\"bufferConfig\",\"type\":\"tuple\"}],\"internalType\":\"structConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"contractIBridge\",\"name\":\"bridge\",\"type\":\"address\"},{\"internalType\":\"contractISequencerInbox\",\"name\":\"sequencerInbox\",\"type\":\"address\"},{\"internalType\":\"contractIInboxBase\",\"name\":\"inbox\",\"type\":\"address\"},{\"internalType\":\"contractIOutbox\",\"name\":\"outbox\",\"type\":\"address\"},{\"internalType\":\"contractIRollupEventInbox\",\"name\":\"rollupEventInbox\",\"type\":\"address\"},{\"internalType\":\"contractIEdgeChallengeManager\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rollupAdminLogic\",\"type\":\"address\"},{\"internalType\":\"contractIRollupUser\",\"name\":\"rollupUserLogic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"validatorWalletCreator\",\"type\":\"address\"}],\"internalType\":\"structContractDependencies\",\"name\":\"connectedContracts\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"isFirstChild\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"isPending\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"isStaked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isValidator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestConfirmed\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"latestStakedAssertion\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loserStakeEscrow\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumAssertionPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"outbox\",\"outputs\":[{\"internalType\":\"contractIOutbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_outbox\",\"type\":\"address\"}],\"name\":\"removeOldOutbox\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resume\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupDeploymentBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupEventInbox\",\"outputs\":[{\"internalType\":\"contractIRollupEventInbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sequencerInbox\",\"outputs\":[{\"internalType\":\"contractISequencerInbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_anyTrustFastConfirmer\",\"type\":\"address\"}],\"name\":\"setAnyTrustFastConfirmer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newBaseStake\",\"type\":\"uint256\"}],\"name\":\"setBaseStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_challengeManager\",\"type\":\"address\"}],\"name\":\"setChallengeManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newConfirmPeriod\",\"type\":\"uint64\"}],\"name\":\"setConfirmPeriodBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_inbox\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_enabled\",\"type\":\"bool\"}],\"name\":\"setDelayedInbox\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIInboxBase\",\"name\":\"newInbox\",\"type\":\"address\"}],\"name\":\"setInbox\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newLoserStakerEscrow\",\"type\":\"address\"}],\"name\":\"setLoserStakeEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPeriod\",\"type\":\"uint256\"}],\"name\":\"setMinimumAssertionPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIOutbox\",\"name\":\"_outbox\",\"type\":\"address\"}],\"name\":\"setOutbox\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sequencerInbox\",\"type\":\"address\"}],\"name\":\"setSequencerInbox\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_validator\",\"type\":\"address[]\"},{\"internalType\":\"bool[]\",\"name\":\"_val\",\"type\":\"bool[]\"}],\"name\":\"setValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_validatorWhitelistDisabled\",\"type\":\"bool\"}],\"name\":\"setValidatorWhitelistDisabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newWasmModuleRoot\",\"type\":\"bytes32\"}],\"name\":\"setWasmModuleRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakeToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakerCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalWithdrawableFunds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeSecondaryTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeSecondaryToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"state\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"prevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inboxAcc\",\"type\":\"bytes32\"}],\"name\":\"validateAssertionHash\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"name\":\"validateConfig\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorWalletCreator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorWhitelistDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wasmModuleRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"withdrawableFunds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c0604052620000196200003660201b62002d101760201c565b15156080523060a0523480156200002f57600080fd5b5062000104565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b179052905160009182918291606491620000769190620000d3565b600060405180830381855afa9150503d8060008114620000b3576040519150601f19603f3d011682016040523d82523d6000602084013e620000b8565b606091505b5091509150818015620000cc575080516020145b9250505090565b6000825160005b81811015620000f65760208186018101518583015201620000da565b506000920191825250919050565b60805160a0516158766200017e60003960008181610e4101528181610ecb015281816111ca0152818161124f015281816113ae015281816114330152818161157c01528181611a0701528181611a8c01528181611b710152611bf601526000818161101f01528181612734015261412701526158766000f3fe6080604052600436106103de5760003560e01c80636ddd37441161020d578063aa38a6e711610128578063e78cea92116100bb578063f065de3f1161008a578063fb0e722b1161006f578063fb0e722b14610d77578063fc8ffa0314610d97578063ff204f3b14610db757600080fd5b8063f065de3f14610d27578063facd743b14610d4757600080fd5b8063e78cea9214610c0e578063e8bd492214610c2e578063ee35f32714610cdc578063ef40a67014610cf157600080fd5b8063ce66d05c116100f7578063ce66d05c14610b99578063dff6978714610bb9578063e51019a614610bce578063e531d8c714610bee57600080fd5b8063aa38a6e714610b19578063b7626e7314610b39578063bc45e0ae14610b59578063ce11e6ab14610b7957600080fd5b8063948d6588116101a05780639e7e6aa71161016f5780639e7e6aa7146109a1578063a23c44b1146109c1578063a2b4f1d814610ad9578063a3ffb77214610af957600080fd5b8063948d6588146109385780639846129a146109585780639a7b45561461096b5780639a8a05921461098b57600080fd5b80638456cb59116101dc5780638456cb59146108c057806388302884146108d557806389384960146109025780638ee1a1261461092257600080fd5b80636ddd37441461085457806371ef232c1461087457806376e7e23b1461088a5780637c75c298146108a057600080fd5b80633659cfe6116102fd57806353b60c4a116102905780635bf038331161025f5780635bf03833146107bf5780635c975abb146107df5780636177fd18146107f757806365f7f80d1461083f57600080fd5b806353b60c4a1461073a57806355840a581461075a578063567ca41b1461077f57806356bbc9e61461079f57600080fd5b80634f1ef286116102cc5780634f1ef286146106d25780634f61f850146106e557806351ed6a301461070557806352d1902d1461072557600080fd5b80633659cfe6146106435780633be680ea1461066357806345e38b641461069c57806347fb24c5146106b257600080fd5b806313af4035116103755780632e7acfa6116103445780632e7acfa6146105b75780632f30cabd146105d8578063308362281461060e578063353325e01461062e57600080fd5b806313af40351461051a57806313c56ca71461053a5780631b1689e9146105685780632abdd2301461057e57600080fd5b80630d40a0fd116103b15780630d40a0fd146104775780630d561b371461049757806311715585146104b757806312ab3d3b146104f057600080fd5b8063023a96fe146103e3578063046f7da21461042057806304972af91461043757806306ae585114610457575b600080fd5b3480156103ef57600080fd5b50606954610403906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561042c57600080fd5b50610435610dd7565b005b34801561044357600080fd5b50610435610452366004614d00565b610dfb565b34801561046357600080fd5b50610435610472366004614d38565b610e15565b34801561048357600080fd5b50610435610492366004614d66565b610e37565b3480156104a357600080fd5b506104356104b2366004614d66565b610f85565b3480156104c357600080fd5b506104d76104d2366004614d38565b610fd9565b60405167ffffffffffffffff9091168152602001610417565b3480156104fc57600080fd5b50607a5461050a9060ff1681565b6040519015158152602001610417565b34801561052657600080fd5b50610435610535366004614d66565b610ff5565b34801561054657600080fd5b5061055a610555366004614d38565b61101b565b604051908152602001610417565b34801561057457600080fd5b5061055a60795481565b34801561058a57600080fd5b5061055a610599366004614d66565b6001600160a01b031660009081526076602052604090206001015490565b3480156105c357600080fd5b506066546104d79067ffffffffffffffff1681565b3480156105e457600080fd5b5061055a6105f3366004614d66565b6001600160a01b031660009081526077602052604090205490565b34801561061a57600080fd5b5061050a610629366004614d38565b611168565b34801561063a57600080fd5b5061055a611184565b34801561064f57600080fd5b5061043561065e366004614d66565b6111c0565b34801561066f57600080fd5b506069546104d79074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b3480156106a857600080fd5b5061055a60715481565b3480156106be57600080fd5b506104356106cd366004614d91565b611306565b6104356106e0366004614e3a565b6113a4565b3480156106f157600080fd5b50610435610700366004614d66565b6114da565b34801561071157600080fd5b50607054610403906001600160a01b031681565b34801561073157600080fd5b5061055a61156f565b34801561074657600080fd5b50610435610755366004614d66565b611634565b34801561076657600080fd5b50607a546104039061010090046001600160a01b031681565b34801561078b57600080fd5b5061043561079a366004614d66565b61166c565b3480156107ab57600080fd5b506104d76107ba366004614d38565b611766565b3480156107cb57600080fd5b506104356107da366004614efa565b61178e565b3480156107eb57600080fd5b5060335460ff1661050a565b34801561080357600080fd5b5061050a610812366004614d66565b6001600160a01b031660009081526076602052604090206002015468010000000000000000900460ff1690565b34801561084b57600080fd5b5060735461055a565b34801561086057600080fd5b5061040361086f366004614f52565b6117c2565b34801561088057600080fd5b5061055a60785481565b34801561089657600080fd5b5061055a60675481565b3480156108ac57600080fd5b506104356108bb366004614fb9565b6117fc565b3480156108cc57600080fd5b506104356118ee565b3480156108e157600080fd5b506108f56108f0366004614d38565b611912565b604051610417919061502f565b34801561090e57600080fd5b5061043561091d366004614d38565b6119b9565b34801561092e57600080fd5b5061055a60685481565b34801561094457600080fd5b50610435610953366004614d38565b6119db565b610435610966366004614e3a565b6119fd565b34801561097757600080fd5b50610435610986366004615090565b611b33565b34801561099757600080fd5b5061055a60655481565b3480156109ad57600080fd5b506104356109bc3660046150d4565b611b67565b3480156109cd57600080fd5b50610a826109dc366004614d66565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506001600160a01b03908116600090815260766020908152604091829020825160a081018452815481526001820154928101929092526002015467ffffffffffffffff81169282019290925260ff68010000000000000000830416151560608201526901000000000000000000909104909116608082015290565b6040516104179190600060a082019050825182526020830151602083015267ffffffffffffffff60408401511660408301526060830151151560608301526001600160a01b03608084015116608083015292915050565b348015610ae557600080fd5b50610435610af4366004615128565b61285c565b348015610b0557600080fd5b50610435610b14366004615145565b612887565b348015610b2557600080fd5b50606d54610403906001600160a01b031681565b348015610b4557600080fd5b50610435610b54366004614d66565b6129db565b348015610b6557600080fd5b50606e54610403906001600160a01b031681565b348015610b8557600080fd5b50606c54610403906001600160a01b031681565b348015610ba557600080fd5b50610435610bb4366004614f52565b612a13565b348015610bc557600080fd5b506075546104d7565b348015610bda57600080fd5b50610435610be93660046151b1565b612aa7565b348015610bfa57600080fd5b5061050a610c09366004614d38565b612b14565b348015610c1a57600080fd5b50606b54610403906001600160a01b031681565b348015610c3a57600080fd5b50610c9c610c49366004614d66565b60766020526000908152604090208054600182015460029092015490919067ffffffffffffffff81169068010000000000000000810460ff1690690100000000000000000090046001600160a01b031685565b60408051958652602086019490945267ffffffffffffffff9092169284019290925290151560608301526001600160a01b0316608082015260a001610417565b348015610ce857600080fd5b50610403612b44565b348015610cfd57600080fd5b5061055a610d0c366004614d66565b6001600160a01b031660009081526076602052604090205490565b348015610d3357600080fd5b50606f54610403906001600160a01b031681565b348015610d5357600080fd5b5061050a610d62366004614d66565b60726020526000908152604090205460ff1681565b348015610d8357600080fd5b50606a54610403906001600160a01b031681565b348015610da357600080fd5b50610435610db2366004614d66565b612bd0565b348015610dc357600080fd5b50610435610dd2366004614d66565b612c5e565b610ddf612dd6565b6040516004906000805160206157fa83398151915290600090a2565b610e1181610e0884612e28565b60010154612e89565b5050565b6067819055604051600c906000805160206157fa83398151915290600090a250565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ec95760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610efb612f8e565b6001600160a01b031614610f665760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610ec0565b60408051600080825260208201909252610f8291839190612fc1565b50565b607a80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03841602179055604051601f906000805160206157fa83398151915290600090a250565b6000610fe482612e28565b5467ffffffffffffffff1692915050565b610ffe81613161565b6040516007906000805160206157fa83398151915290600090a250565b60007f0000000000000000000000000000000000000000000000000000000000000000156110a5576000828152607b60205260409020548061109f5760405162461bcd60e51b815260206004820152600c60248201527f4e4f5f415353455254494f4e00000000000000000000000000000000000000006044820152606401610ec0565b92915050565b60006110b083612e28565b6040805160c081018252825467ffffffffffffffff808216835268010000000000000000820481166020840152600160801b8204169282019290925260ff600160c01b830481161515606083015292935061114b92909184916080840191600160c81b900416600281111561112757611127614ffb565b600281111561113857611138614ffb565b81526020016001820154815250506131b5565b54600160801b900467ffffffffffffffff1692915050565b919050565b600061117382612e28565b54600160c01b900460ff1692915050565b600061118e614bfd565b6040805160608101825282815260016020820152600091810182905290806111b781848161321a565b94505050505090565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361124d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610ec0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661127f612f8e565b6001600160a01b0316146112ea5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610ec0565b60408051600080825260208201909252610f8291839190613233565b606b546040517f47fb24c50000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152909116906347fb24c590604401600060405180830381600087803b15801561136e57600080fd5b505af1158015611382573d6000803e3d6000fd5b5050604051600292506000805160206157fa8339815191529150600090a25050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036114315760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610ec0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611463612f8e565b6001600160a01b0316146114ce5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610ec0565b610e1182826001613233565b606b546040517f4f61f8500000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015290911690634f61f85090602401600060405180830381600087803b15801561153a57600080fd5b505af115801561154e573d6000803e3d6000fd5b5050604051601b92506000805160206157fa8339815191529150600090a250565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461160f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610ec0565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b606a80546001600160a01b0319166001600160a01b038316179055604051601c906000805160206157fa83398151915290600090a250565b606c546001600160a01b03908116908216036116ca5760405162461bcd60e51b815260206004820152600a60248201527f4355525f4f5554424f58000000000000000000000000000000000000000000006044820152606401610ec0565b606b546040517fcee3d7280000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600060248301529091169063cee3d72890604401600060405180830381600087803b15801561173157600080fd5b505af1158015611745573d6000803e3d6000fd5b5050604051600192506000805160206157fa8339815191529150600090a250565b600061177182612e28565b5468010000000000000000900467ffffffffffffffff1692915050565b6117966133d3565b6117a284848484613427565b6040516018906000805160206157fa83398151915290600090a250505050565b600060758267ffffffffffffffff16815481106117e1576117e16151ef565b6000918252602090912001546001600160a01b031692915050565b6118046133d3565b806118515760405162461bcd60e51b815260206004820152600b60248201527f454d5054595f41525241590000000000000000000000000000000000000000006044820152606401610ec0565b60005b818110156118cf5761188b838383818110611871576118716151ef565b90506020020160208101906118869190614d66565b613644565b6118bc8383838181106118a0576118a06151ef565b90506020020160208101906118b59190614d66565b600061374d565b50806118c78161521b565b915050611854565b506040516016906000805160206157fa83398151915290600090a25050565b6118f661384e565b6040516003906000805160206157fa83398151915290600090a2565b61191a614c22565b61192382612e28565b6040805160c081018252825467ffffffffffffffff808216835268010000000000000000820481166020840152600160801b8204169282019290925260ff600160c01b83048116151560608301529092916080840191600160c81b90910416600281111561199357611993614ffb565b60028111156119a4576119a4614ffb565b81526020016001820154815250509050919050565b6068819055604051601a906000805160206157fa83398151915290600090a250565b60718190556040516008906000805160206157fa83398151915290600090a250565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003611a8a5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610ec0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611abc612f8e565b6001600160a01b031614611b275760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610ec0565b610e1182826001612fc1565b611b3b6133d3565b611b4682848361388b565b50506040516017906000805160206157fa83398151915290600090a2505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003611bf45760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610ec0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611c26612f8e565b6001600160a01b031614611c915760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610ec0565b600054610100900460ff1615808015611cb15750600054600160ff909116105b80611ccb5750303b158015611ccb575060005460ff166001145b611d3d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610ec0565b6000805460ff191660011790558015611d60576000805461ff0019166101001790555b43607955611d716020830183614d66565b606b80546001600160a01b0319166001600160a01b0392909216919091179055611d9e6020830183614d66565b6001600160a01b03166347fb24c5611dbc6060850160408601614d66565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b158015611e1c57600080fd5b505af1158015611e30573d6000803e3d6000fd5b50611e42925050506020830183614d66565b6001600160a01b0316634f61f850611e606040850160208601614d66565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015611eb957600080fd5b505af1158015611ecd573d6000803e3d6000fd5b50611ee2925050506060830160408401614d66565b606a80546001600160a01b0319166001600160a01b0392909216919091179055611f126080830160608401614d66565b606c80546001600160a01b0319166001600160a01b0392909216919091179055611f3f6020830183614d66565b6001600160a01b031663cee3d728611f5d6080850160608601614d66565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b158015611fbd57600080fd5b505af1158015611fd1573d6000803e3d6000fd5b50611fe69250505060a0830160808401614d66565b606d80546001600160a01b0319166001600160a01b03928316179055606b541663ae60bd1361201b60a0850160808601614d66565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209b9190615235565b6121c4576120ac6020830183614d66565b6001600160a01b03166347fb24c56120ca60a0850160808601614d66565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b15801561212a57600080fd5b505af115801561213e573d6000803e3d6000fd5b506121539250505060a0830160808401614d66565b6001600160a01b031663cf8d56d660c085013561217360e0870187615252565b6040518463ffffffff1660e01b8152600401612191939291906152b7565b600060405180830381600087803b1580156121ab57600080fd5b505af11580156121bf573d6000803e3d6000fd5b505050505b6121d46040830160208401614d66565b6001600160a01b0316637fa3a40e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612211573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223591906152ed565b6000036122ef5761224c6040830160208401614d66565b6040517fe0bc972900000000000000000000000000000000000000000000000000000000815260006004820181905260c0602483015260c4820181905260016044830181905260648301829052608483019190915260a48201526001600160a01b03919091169063e0bc97299060e401600060405180830381600087803b1580156122d657600080fd5b505af11580156122ea573d6000803e3d6000fd5b505050505b61230161012083016101008401614d66565b606e80546001600160a01b0319166001600160a01b039290921691909117905561233160c0830160a08401614d66565b606980546001600160a01b0319166001600160a01b039290921691909117905561235e6020840184614f52565b6066805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560c083013560655560408301356067556060830135606855604b6071556123af61034084016103208501614f52565b6069805467ffffffffffffffff9290921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055600061241360c0850160a08601614d66565b6001600160a01b0316036124695760405162461bcd60e51b815260206004820152601060248201527f494e56414c49445f455343524f575f30000000000000000000000000000000006044820152606401610ec0565b61247960c0840160a08501614d66565b606f80546001600160a01b0319166001600160a01b03929092169190911790556124a96040840160208501614d66565b607080546001600160a01b0319166001600160a01b03929092169190911790556124db61030084016102e08501614d66565b607a80546001600160a01b0392909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055600080806125718161253c612537368a90038a016102008b01615427565b6141ca565b604080516020808201949094528082019290925260608083018790528151808403909101815260809092019052805191012090565b90506000606b60009054906101000a90046001600160a01b03166001600160a01b03166284120c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125eb91906152ed565b9050866102c0013581036126075761260460018261548e565b90505b60685460675460695460665460408051602080820196909652808201949094526bffffffffffffffffffffffff19606093841b16928401929092527fffffffffffffffff00000000000000000000000000000000000000000000000060c091821b811660748501529085901b16607c8301528051606481840301815260849092019052805191012060009061269e906001906141fa565b90506126aa8184614232565b6126b2614c59565b6126c5368a90038a016102008b01615427565b60408083019190915260685460675460695460665493518a9489947f901c3aee23cf4478825462caaab375c606ab83516060388344f06503407536309461272a9489948e948d9493926001600160a01b03169167ffffffffffffffff9091169061552f565b60405180910390a37f0000000000000000000000000000000000000000000000000000000000000000156127cb5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127bb91906152ed565b6000858152607b60205260409020555b6040805160608b0135815260c08b013560208201527ffc1b83c11d99d08a938e0b82a0bd45f822f71ff5abf23f999c93c4533d752464910160405180910390a15050505050508015612857576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b607a805460ff1916821515179055604051601e906000805160206157fa83398151915290600090a250565b826128d45760405162461bcd60e51b815260206004820152600b60248201527f454d5054595f41525241590000000000000000000000000000000000000000006044820152606401610ec0565b8281146129235760405162461bcd60e51b815260206004820152600c60248201527f57524f4e475f4c454e47544800000000000000000000000000000000000000006044820152606401610ec0565b60005b838110156129ba57828282818110612940576129406151ef565b90506020020160208101906129559190615128565b6072600087878581811061296b5761296b6151ef565b90506020020160208101906129809190614d66565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806129b28161521b565b915050612926565b506040516006906000805160206157fa83398151915290600090a250505050565b606980546001600160a01b0319166001600160a01b0383161790556040516020906000805160206157fa83398151915290600090a250565b60008167ffffffffffffffff1611612a6d5760405162461bcd60e51b815260206004820152601660248201527f494e56414c49445f434f4e4649524d5f504552494f44000000000000000000006044820152606401610ec0565b6066805467ffffffffffffffff191667ffffffffffffffff83161790556040516009906000805160206157fa83398151915290600090a250565b612ac082612aba36869003860186615427565b8361321a565b8414612b0e5760405162461bcd60e51b815260206004820152601660248201527f494e56414c49445f415353455254494f4e5f48415348000000000000000000006044820152606401610ec0565b50505050565b60006001612b2183612e28565b54600160c81b900460ff166002811115612b3d57612b3d614ffb565b1492915050565b606b54604080517fee35f32700000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163ee35f3279160048083019260209291908290030181865afa158015612ba7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bcb919061560e565b905090565b6001600160a01b038116612c265760405162461bcd60e51b815260206004820152601060248201527f494e56414c49445f455343524f575f30000000000000000000000000000000006044820152606401610ec0565b606f80546001600160a01b0319166001600160a01b0383161790556040516019906000805160206157fa83398151915290600090a250565b606c80546001600160a01b0319166001600160a01b03838116918217909255606b546040517fcee3d7280000000000000000000000000000000000000000000000000000000081526004810192909252600160248301529091169063cee3d72890604401600060405180830381600087803b158015612cdc57600080fd5b505af1158015612cf0573d6000803e3d6000fd5b5050604051600092506000805160206157fa83398151915291508290a250565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491612d7c919061564f565b600060405180830381855afa9150503d8060008114612db7576040519150601f19603f3d011682016040523d82523d6000602084013e612dbc565b606091505b5091509150818015612dcf575080516020145b9250505090565b612dde6133d3565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600081612e775760405162461bcd60e51b815260206004820152601b60248201527f415353455254494f4e5f49445f43414e4e4f545f42455f5a45524f00000000006044820152606401610ec0565b50600090815260746020526040902090565b612f4082356020840135612ea36060860160408701614d66565b612eb36080870160608801614f52565b612ec360a0880160808901614f52565b60408051602080820197909752808201959095526bffffffffffffffffffffffff19606094851b16938501939093527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b81166074860152911b16607c8301528051606481840301815260849092019052805191012090565b8114610e115760405162461bcd60e51b815260206004820152601460248201527f434f4e4649475f484153485f4d49534d415443480000000000000000000000006044820152606401610ec0565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b546001600160a01b0316919050565b7f49bd798cd84788856140a4cd5030756b4d08a9e4d55db725ec195f232d262a895460ff1615612ff45761285783614369565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561304e575060408051601f3d908101601f1916820190925261304b918101906152ed565b60015b6130c05760405162461bcd60e51b815260206004820152603860248201527f45524331393637557067726164653a206e6577207365636f6e6461727920696d60448201527f706c656d656e746174696f6e206973206e6f74205555505300000000000000006064820152608401610ec0565b7f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d81146131555760405162461bcd60e51b815260206004820152603360248201527f45524331393637557067726164653a20756e737570706f72746564207365636f60448201527f6e646172792070726f786961626c6555554944000000000000000000000000006064820152608401610ec0565b5061285783838361442a565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61318a61444f565b604080516001600160a01b03928316815291841660208301520160405180910390a1610f8281614477565b6000816080015160028111156131cd576131cd614ffb565b03610f825760405162461bcd60e51b815260206004820152601360248201527f415353455254494f4e5f4e4f545f4558495354000000000000000000000000006044820152606401610ec0565b60006132298461253c856141ca565b90505b9392505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615613266576128578361451a565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156132c0575060408051601f3d908101601f191682019092526132bd918101906152ed565b60015b6133325760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610ec0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146133c75760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610ec0565b506128578383836145be565b60335460ff166134255760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610ec0565b565b600061343285612e28565b905060018154600160c81b900460ff16600281111561345357613453614ffb565b146134a05760405162461bcd60e51b815260206004820152600b60248201527f4e4f545f50454e44494e470000000000000000000000000000000000000000006044820152606401610ec0565b6134b9846134b336869003860186615427565b8461321a565b85146135075760405162461bcd60e51b815260206004820152600c60248201527f434f4e4649524d5f4441544100000000000000000000000000000000000000006044820152606401610ec0565b600061352061351b3686900386018661566b565b6145c7565b9050600061353b6135363687900387018761566b565b6145d9565b606c546040517fa04cee6000000000000000000000000000000000000000000000000000000000815260048101839052602481018590529192506001600160a01b03169063a04cee6090604401600060405180830381600087803b1580156135a257600080fd5b505af11580156135b6573d6000803e3d6000fd5b50505060738890555082547fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff167902000000000000000000000000000000000000000000000000001783556040805183815260208101839052815189927ffc42829b29c259a7370ab56c8f69fce23b5f351a9ce151da453281993ec0090c928290030190a250505050505050565b6001600160a01b03811660009081526076602052604090206002015468010000000000000000900460ff166136bb5760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f5354414b4544000000000000000000000000000000000000000000006044820152606401610ec0565b6001600160a01b038116600090815260766020526040812060010154607354909190821490806136ea84612e28565b5467ffffffffffffffff1611905081806137015750805b612b0e5760405162461bcd60e51b815260206004820152600c60248201527f5354414b455f41435449564500000000000000000000000000000000000000006044820152606401610ec0565b6001600160a01b0380831660009081526076602052604081206002810154815492939192690100000000000000000090910490911690808511156137d35760405162461bcd60e51b815260206004820152601060248201527f544f4f5f4c4954544c455f5354414b45000000000000000000000000000000006044820152606401610ec0565b60006137df8683615687565b86855590506137ee83826145e5565b826001600160a01b0316876001600160a01b03167fd957cf2340073335d256f72a9ef89cf1a43c31143341a6a53575ef33e987beb8848960405161383c929190918252602082015260400190565b60405180910390a39695505050505050565b61385661468a565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612e0b3390565b60008061389e60408601610e0886612e28565b60016138b26102408701610220880161569a565b60028111156138c3576138c3614ffb565b14806138f1575060026138de6102408701610220880161569a565b60028111156138ef576138ef614ffb565b145b61393d5760405162461bcd60e51b815260206004820152601060248201527f4241445f41465445525f535441545553000000000000000000000000000000006044820152606401610ec0565b8361395f863561395536899003890160e08a01615427565b602089013561321a565b146139ac5760405162461bcd60e51b815260206004820152601460248201527f494e56414c49445f4245464f52455f53544154450000000000000000000000006044820152606401610ec0565b60016139c06101808701610160880161569a565b60028111156139d1576139d1614ffb565b14613a1e5760405162461bcd60e51b815260206004820152600f60248201527f4241445f505245565f53544154555300000000000000000000000000000000006044820152606401610ec0565b6000613a2985612e28565b90506000806101a0880160e0890182613a4283836146dd565b1215613a905760405162461bcd60e51b815260206004820152600f60248201527f494e424f585f4241434b574152445300000000000000000000000000000000006044820152606401610ec0565b6000613ab6613aa560e08d0160c08e01614f52565b849067ffffffffffffffff166147ea565b90506000811315613b095760405162461bcd60e51b815260206004820152600d60248201527f494e424f585f544f4f5f464152000000000000000000000000000000000000006044820152606401610ec0565b6002613b1d6102408d016102208e0161569a565b6002811115613b2e57613b2e614ffb565b14158015613b3c5750600081125b15613b9e57600196506000613b5184846146dd565b13613b9e5760405162461bcd60e51b815260206004820152601360248201527f4f564552464c4f575f5354414e445354494c4c000000000000000000000000006044820152606401610ec0565b606b54604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa158015613bff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2391906152ed565b90506000613c3185836147ea565b1315613c7f5760405162461bcd60e51b815260206004820152600e60248201527f494e424f585f504153545f454e440000000000000000000000000000000000006044820152606401610ec0565b80613c9060e08e0160c08f01614f52565b67ffffffffffffffff161115613ce85760405162461bcd60e51b815260206004820152601360248201527f494e424f585f4e4f545f504f50554c41544544000000000000000000000000006044820152606401610ec0565b6000613d01613cfc3687900387018761566b565b614872565b67ffffffffffffffff169050818103613d2657613d1f82600161548e565b9650613d2a565b8196505b80600003613d7a5760405162461bcd60e51b815260206004820152601160248201527f454d5054595f494e424f585f434f554e540000000000000000000000000000006044820152606401610ec0565b606b546001600160a01b03166316bf5579613d96600184615687565b6040518263ffffffff1660e01b8152600401613db491815260200190565b602060405180830381865afa158015613dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df591906152ed565b95505050505050613e1587896101a001803603810190612aba9190615427565b945085851480613e23575085155b613e6f5760405162461bcd60e51b815260206004820152601960248201527f554e45585045435445445f415353455254494f4e5f48415348000000000000006044820152606401610ec0565b6000613e7a86612e28565b54600160c81b900460ff166002811115613e9657613e96614ffb565b14613ee35760405162461bcd60e51b815260206004820152600e60248201527f415353455254494f4e5f5345454e0000000000000000000000000000000000006044820152606401610ec0565b825460685460675460695460665460408051602080820196909652808201949094526bffffffffffffffffffffffff19606093841b16928401929092527fffffffffffffffff00000000000000000000000000000000000000000000000060c091821b811660748501529087901b16607c83015280516064818403018152608490920190528051910120600091613f879167ffffffffffffffff90911615906141fa565b9050613f9284614880565b60008681526074602090815260409182902083518154928501519385015160608601511515600160c01b027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff928316600160801b02167fffffffffffffff000000000000000000ffffffffffffffffffffffffffffffff96831668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909616929093169190911793909317939093169290921717808255608083015183929182907fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff16600160c81b83600281111561409f5761409f614ffb565b021790555060a0820151816001015590505087867f901c3aee23cf4478825462caaab375c606ab83516060388344f06503407536308b8587606854606754606960009054906101000a90046001600160a01b0316606660009054906101000a900467ffffffffffffffff1660405161411d979695949392919061571e565b60405180910390a37f0000000000000000000000000000000000000000000000000000000000000000156141be5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561418a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ae91906152ed565b6000878152607b60205260409020555b50505050935093915050565b6000816040516020016141dd91906157b8565b604051602081830303815290604052805190602001209050919050565b614202614c22565b61420a614c22565b67ffffffffffffffff4316604082015292151560608401525060a08201526001608082015290565b61423a61490e565b6002608083018190525060008181526074602090815260409182902084518154928601519386015160608701511515600160c01b027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff928316600160801b02167fffffffffffffff000000000000000000ffffffffffffffffffffffffffffffff96831668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909616929093169190911793909317939093169290921717808255608084015184929182907fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff16600160c81b83600281111561435157614351614ffb565b021790555060a0919091015160019091015560735550565b6001600160a01b0381163b6143e65760405162461bcd60e51b815260206004820152603760248201527f455243313936373a206e6577207365636f6e6461727920696d706c656d656e7460448201527f6174696f6e206973206e6f74206120636f6e74726163740000000000000000006064820152608401610ec0565b807f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d5b80546001600160a01b0319166001600160a01b039290921691909117905550565b61443383614993565b6000825111806144405750805b1561285757612b0e83836149d3565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103612fb2565b6001600160a01b0381166144f35760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610ec0565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103614409565b6001600160a01b0381163b6145975760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610ec0565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc614409565b614433836149f8565b8051600090815b602002015192915050565b805160009060016145ce565b6001600160a01b03821660009081526077602052604081205490614609838361548e565b6001600160a01b038516600090815260776020526040812082905560788054929350859290919061463b90849061548e565b909155505060408051838152602081018390526001600160a01b038616917fa740af14c56e4e04a617b1de1eb20de73270decbaaead14f142aabf3038e5ae2910160405180910390a250505050565b60335460ff16156134255760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610ec0565b6000806146f2613cfc3686900386018661566b565b90506000614708613cfc3686900386018661566b565b90508067ffffffffffffffff168267ffffffffffffffff161015614732576000199250505061109f565b8067ffffffffffffffff168267ffffffffffffffff1611156147595760019250505061109f565b600061477261476d3688900388018861566b565b614a38565b9050600061478861476d3688900388018861566b565b90508067ffffffffffffffff168267ffffffffffffffff1610156147b45760001994505050505061109f565b8067ffffffffffffffff168267ffffffffffffffff1611156147dd57600194505050505061109f565b600094505050505061109f565b6000806147ff613cfc3686900386018661566b565b9050828167ffffffffffffffff16101561481e5760001991505061109f565b828167ffffffffffffffff16111561483a57600191505061109f565b600061484e61476d3687900387018761566b565b67ffffffffffffffff16111561486857600191505061109f565b600091505061109f565b6020810151600090816145ce565b805467ffffffffffffffff166000036148b057805467ffffffffffffffff19164367ffffffffffffffff16179055565b805468010000000000000000900467ffffffffffffffff16600003610f825780547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004367ffffffffffffffff1602179055565b600054610100900460ff1661498b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ec0565b613425614a47565b61499c81614369565b6040516001600160a01b038216907ff7eed2a7fabbf1bec8d55ed5e785cc76622376dde5df4ff15470551e030b813490600090a250565b606061322c838360405180606001604052806027815260200161581a60279139614ad0565b614a018161451a565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b602081015160009060016145ce565b600054610100900460ff16614ac45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ec0565b6033805460ff19169055565b60606001600160a01b0384163b614b4f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610ec0565b600080856001600160a01b031685604051614b6a919061564f565b600060405180830381855af49150503d8060008114614ba5576040519150601f19603f3d011682016040523d82523d6000602084013e614baa565b606091505b5091509150614bba828286614bc4565b9695505050505050565b60608315614bd357508161322c565b825115614be35782518084602001fd5b8160405162461bcd60e51b8152600401610ec091906157c6565b6040518060400160405280614c10614cc3565b8152602001614c1d614cc3565b905290565b6040805160c081018252600080825260208201819052918101829052606081018290529060808201905b8152600060209091015290565b6040518060600160405280614ca9604080516060808201835260008083526020808401829052845160a0810186528281529081018290528085018290529182018190526080820152909182015290565b8152602001614cb6614ce1565b8152602001614c1d614ce1565b60405180604001604052806002906020820280368337509192915050565b6040518060600160405280614cf4614bfd565b81526020016000614c4c565b60008082840360c0811215614d1457600080fd5b8335925060a0601f1982011215614d2a57600080fd5b506020830190509250929050565b600060208284031215614d4a57600080fd5b5035919050565b6001600160a01b0381168114610f8257600080fd5b600060208284031215614d7857600080fd5b813561322c81614d51565b8015158114610f8257600080fd5b60008060408385031215614da457600080fd5b8235614daf81614d51565b91506020830135614dbf81614d83565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614e0357614e03614dca565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614e3257614e32614dca565b604052919050565b60008060408385031215614e4d57600080fd5b8235614e5881614d51565b915060208381013567ffffffffffffffff80821115614e7657600080fd5b818601915086601f830112614e8a57600080fd5b813581811115614e9c57614e9c614dca565b614eae84601f19601f84011601614e09565b91508082528784828501011115614ec457600080fd5b80848401858401376000848284010152508093505050509250929050565b600060c08284031215614ef457600080fd5b50919050565b6000806000806101208587031215614f1157600080fd5b8435935060208501359250614f298660408701614ee2565b939692955092936101000135925050565b803567ffffffffffffffff8116811461116357600080fd5b600060208284031215614f6457600080fd5b61322c82614f3a565b60008083601f840112614f7f57600080fd5b50813567ffffffffffffffff811115614f9757600080fd5b6020830191508360208260051b8501011115614fb257600080fd5b9250929050565b60008060208385031215614fcc57600080fd5b823567ffffffffffffffff811115614fe357600080fd5b614fef85828601614f6d565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110610f8257634e487b7160e01b600052602160045260246000fd5b600060c08201905067ffffffffffffffff80845116835280602085015116602084015280604085015116604084015250606083015115156060830152608083015161507981615011565b8060808401525060a083015160a083015292915050565b60008060008385036102a08112156150a757600080fd5b84359350610260601f19820112156150be57600080fd5b5060208401915061028084013590509250925092565b6000808284036101408112156150e957600080fd5b833567ffffffffffffffff81111561510057600080fd5b84016103a0818703121561511357600080fd5b9250610120601f1982011215614d2a57600080fd5b60006020828403121561513a57600080fd5b813561322c81614d83565b6000806000806040858703121561515b57600080fd5b843567ffffffffffffffff8082111561517357600080fd5b61517f88838901614f6d565b9096509450602087013591508082111561519857600080fd5b506151a587828801614f6d565b95989497509550505050565b60008060008061012085870312156151c857600080fd5b843593506151d98660208701614ee2565b939693955050505060e082013591610100013590565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361522e5761522e615205565b5060010190565b60006020828403121561524757600080fd5b815161322c81614d83565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261528757600080fd5b83018035915067ffffffffffffffff8211156152a257600080fd5b602001915036819003821315614fb257600080fd5b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6000602082840312156152ff57600080fd5b5051919050565b600082601f83011261531757600080fd5b6040516040810181811067ffffffffffffffff8211171561533a5761533a614dca565b806040525080604084018581111561535157600080fd5b845b818110156153725761536481614f3a565b835260209283019201615353565b509195945050505050565b60006080828403121561538f57600080fd5b6040516040810181811067ffffffffffffffff821117156153b2576153b2614dca565b604052905080601f830184136153c757600080fd5b6153cf614de0565b8060408501868111156153e157600080fd5b855b818110156153fb5780358452602093840193016153e3565b508184526154098782615306565b60208501525050505092915050565b80356003811061116357600080fd5b600060c0828403121561543957600080fd5b6040516060810181811067ffffffffffffffff8211171561545c5761545c614dca565b604052615469848461537d565b815261547760808401615418565b602082015260a09290920135604083015250919050565b8082018082111561109f5761109f615205565b6154aa81615011565b9052565b805180518360005b60028110156154d55782518252602092830192909101906001016154b6565b505050602090810151906040840160005b600281101561550d57835167ffffffffffffffff16825292820192908201906001016154e6565b5050820151905061552160808401826154a1565b506040015160a09190910152565b600061032082019050885180518352602081015160208401526040810151905080516040840152602081015160608401526001600160a01b036040820151166080840152606081015167ffffffffffffffff80821660a08601528060808401511660c086015250505060208901516155aa60e08401826154ae565b5060408901516155be6101a08401826154ae565b508761026083015286610280830152856102a0830152846102c08301526155f16102e08301856001600160a01b03169052565b67ffffffffffffffff831661030083015298975050505050505050565b60006020828403121561562057600080fd5b815161322c81614d51565b60005b8381101561564657818101518382015260200161562e565b50506000910152565b6000825161566181846020870161562b565b9190910192915050565b60006080828403121561567d57600080fd5b61322c838361537d565b8181038181111561109f5761109f615205565b6000602082840312156156ac57600080fd5b61322c82615418565b6040818337604082016040820160005b60028110156156f65767ffffffffffffffff6156e083614f3a565b16835260209283019291909101906001016156c5565b50505061570560808201615418565b61570e81615011565b608083015260a090810135910152565b60006103208201905088358252602089013560208301526040890135604083015260608901356060830152608089013561575781614d51565b6001600160a01b0316608083015261577160a08a01614f3a565b67ffffffffffffffff80821660a08501528061578f60c08d01614f3a565b1660c085015250506157a760e0830160e08b016156b5565b6101a06155be818401828c016156b5565b60c0810161109f82846154ae565b60208152600082518060208401526157e581604085016020870161562b565b601f01601f1916919091016040019291505056feea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206234d54d36a042ed4ff054b4dc58bda2a0c560fdc07bfebbba0addc1f2d0cca464736f6c63430008110033", + Bin: "0x60c0604052620000196200003660201b62002d101760201c565b15156080523060a0523480156200002f57600080fd5b5062000104565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b179052905160009182918291606491620000769190620000d3565b600060405180830381855afa9150503d8060008114620000b3576040519150601f19603f3d011682016040523d82523d6000602084013e620000b8565b606091505b5091509150818015620000cc575080516020145b9250505090565b6000825160005b81811015620000f65760208186018101518583015201620000da565b506000920191825250919050565b60805160a0516158766200017e60003960008181610e4101528181610ecb015281816111ca0152818161124f015281816113ae015281816114330152818161157c01528181611a0701528181611a8c01528181611b710152611bf601526000818161101f01528181612734015261412701526158766000f3fe6080604052600436106103de5760003560e01c80636ddd37441161020d578063aa38a6e711610128578063e78cea92116100bb578063f065de3f1161008a578063fb0e722b1161006f578063fb0e722b14610d77578063fc8ffa0314610d97578063ff204f3b14610db757600080fd5b8063f065de3f14610d27578063facd743b14610d4757600080fd5b8063e78cea9214610c0e578063e8bd492214610c2e578063ee35f32714610cdc578063ef40a67014610cf157600080fd5b8063ce66d05c116100f7578063ce66d05c14610b99578063dff6978714610bb9578063e51019a614610bce578063e531d8c714610bee57600080fd5b8063aa38a6e714610b19578063b7626e7314610b39578063bc45e0ae14610b59578063ce11e6ab14610b7957600080fd5b8063948d6588116101a05780639e7e6aa71161016f5780639e7e6aa7146109a1578063a23c44b1146109c1578063a2b4f1d814610ad9578063a3ffb77214610af957600080fd5b8063948d6588146109385780639846129a146109585780639a7b45561461096b5780639a8a05921461098b57600080fd5b80638456cb59116101dc5780638456cb59146108c057806388302884146108d557806389384960146109025780638ee1a1261461092257600080fd5b80636ddd37441461085457806371ef232c1461087457806376e7e23b1461088a5780637c75c298146108a057600080fd5b80633659cfe6116102fd57806353b60c4a116102905780635bf038331161025f5780635bf03833146107bf5780635c975abb146107df5780636177fd18146107f757806365f7f80d1461083f57600080fd5b806353b60c4a1461073a57806355840a581461075a578063567ca41b1461077f57806356bbc9e61461079f57600080fd5b80634f1ef286116102cc5780634f1ef286146106d25780634f61f850146106e557806351ed6a301461070557806352d1902d1461072557600080fd5b80633659cfe6146106435780633be680ea1461066357806345e38b641461069c57806347fb24c5146106b257600080fd5b806313af4035116103755780632e7acfa6116103445780632e7acfa6146105b75780632f30cabd146105d8578063308362281461060e578063353325e01461062e57600080fd5b806313af40351461051a57806313c56ca71461053a5780631b1689e9146105685780632abdd2301461057e57600080fd5b80630d40a0fd116103b15780630d40a0fd146104775780630d561b371461049757806311715585146104b757806312ab3d3b146104f057600080fd5b8063023a96fe146103e3578063046f7da21461042057806304972af91461043757806306ae585114610457575b600080fd5b3480156103ef57600080fd5b50606954610403906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561042c57600080fd5b50610435610dd7565b005b34801561044357600080fd5b50610435610452366004614d00565b610dfb565b34801561046357600080fd5b50610435610472366004614d38565b610e15565b34801561048357600080fd5b50610435610492366004614d66565b610e37565b3480156104a357600080fd5b506104356104b2366004614d66565b610f85565b3480156104c357600080fd5b506104d76104d2366004614d38565b610fd9565b60405167ffffffffffffffff9091168152602001610417565b3480156104fc57600080fd5b50607a5461050a9060ff1681565b6040519015158152602001610417565b34801561052657600080fd5b50610435610535366004614d66565b610ff5565b34801561054657600080fd5b5061055a610555366004614d38565b61101b565b604051908152602001610417565b34801561057457600080fd5b5061055a60795481565b34801561058a57600080fd5b5061055a610599366004614d66565b6001600160a01b031660009081526076602052604090206001015490565b3480156105c357600080fd5b506066546104d79067ffffffffffffffff1681565b3480156105e457600080fd5b5061055a6105f3366004614d66565b6001600160a01b031660009081526077602052604090205490565b34801561061a57600080fd5b5061050a610629366004614d38565b611168565b34801561063a57600080fd5b5061055a611184565b34801561064f57600080fd5b5061043561065e366004614d66565b6111c0565b34801561066f57600080fd5b506069546104d79074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b3480156106a857600080fd5b5061055a60715481565b3480156106be57600080fd5b506104356106cd366004614d91565b611306565b6104356106e0366004614e3a565b6113a4565b3480156106f157600080fd5b50610435610700366004614d66565b6114da565b34801561071157600080fd5b50607054610403906001600160a01b031681565b34801561073157600080fd5b5061055a61156f565b34801561074657600080fd5b50610435610755366004614d66565b611634565b34801561076657600080fd5b50607a546104039061010090046001600160a01b031681565b34801561078b57600080fd5b5061043561079a366004614d66565b61166c565b3480156107ab57600080fd5b506104d76107ba366004614d38565b611766565b3480156107cb57600080fd5b506104356107da366004614efa565b61178e565b3480156107eb57600080fd5b5060335460ff1661050a565b34801561080357600080fd5b5061050a610812366004614d66565b6001600160a01b031660009081526076602052604090206002015468010000000000000000900460ff1690565b34801561084b57600080fd5b5060735461055a565b34801561086057600080fd5b5061040361086f366004614f52565b6117c2565b34801561088057600080fd5b5061055a60785481565b34801561089657600080fd5b5061055a60675481565b3480156108ac57600080fd5b506104356108bb366004614fb9565b6117fc565b3480156108cc57600080fd5b506104356118ee565b3480156108e157600080fd5b506108f56108f0366004614d38565b611912565b604051610417919061502f565b34801561090e57600080fd5b5061043561091d366004614d38565b6119b9565b34801561092e57600080fd5b5061055a60685481565b34801561094457600080fd5b50610435610953366004614d38565b6119db565b610435610966366004614e3a565b6119fd565b34801561097757600080fd5b50610435610986366004615090565b611b33565b34801561099757600080fd5b5061055a60655481565b3480156109ad57600080fd5b506104356109bc3660046150d4565b611b67565b3480156109cd57600080fd5b50610a826109dc366004614d66565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506001600160a01b03908116600090815260766020908152604091829020825160a081018452815481526001820154928101929092526002015467ffffffffffffffff81169282019290925260ff68010000000000000000830416151560608201526901000000000000000000909104909116608082015290565b6040516104179190600060a082019050825182526020830151602083015267ffffffffffffffff60408401511660408301526060830151151560608301526001600160a01b03608084015116608083015292915050565b348015610ae557600080fd5b50610435610af4366004615128565b61285c565b348015610b0557600080fd5b50610435610b14366004615145565b612887565b348015610b2557600080fd5b50606d54610403906001600160a01b031681565b348015610b4557600080fd5b50610435610b54366004614d66565b6129db565b348015610b6557600080fd5b50606e54610403906001600160a01b031681565b348015610b8557600080fd5b50606c54610403906001600160a01b031681565b348015610ba557600080fd5b50610435610bb4366004614f52565b612a13565b348015610bc557600080fd5b506075546104d7565b348015610bda57600080fd5b50610435610be93660046151b1565b612aa7565b348015610bfa57600080fd5b5061050a610c09366004614d38565b612b14565b348015610c1a57600080fd5b50606b54610403906001600160a01b031681565b348015610c3a57600080fd5b50610c9c610c49366004614d66565b60766020526000908152604090208054600182015460029092015490919067ffffffffffffffff81169068010000000000000000810460ff1690690100000000000000000090046001600160a01b031685565b60408051958652602086019490945267ffffffffffffffff9092169284019290925290151560608301526001600160a01b0316608082015260a001610417565b348015610ce857600080fd5b50610403612b44565b348015610cfd57600080fd5b5061055a610d0c366004614d66565b6001600160a01b031660009081526076602052604090205490565b348015610d3357600080fd5b50606f54610403906001600160a01b031681565b348015610d5357600080fd5b5061050a610d62366004614d66565b60726020526000908152604090205460ff1681565b348015610d8357600080fd5b50606a54610403906001600160a01b031681565b348015610da357600080fd5b50610435610db2366004614d66565b612bd0565b348015610dc357600080fd5b50610435610dd2366004614d66565b612c5e565b610ddf612dd6565b6040516004906000805160206157fa83398151915290600090a2565b610e1181610e0884612e28565b60010154612e89565b5050565b6067819055604051600c906000805160206157fa83398151915290600090a250565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ec95760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610efb612f8e565b6001600160a01b031614610f665760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610ec0565b60408051600080825260208201909252610f8291839190612fc1565b50565b607a80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03841602179055604051601f906000805160206157fa83398151915290600090a250565b6000610fe482612e28565b5467ffffffffffffffff1692915050565b610ffe81613161565b6040516007906000805160206157fa83398151915290600090a250565b60007f0000000000000000000000000000000000000000000000000000000000000000156110a5576000828152607b60205260409020548061109f5760405162461bcd60e51b815260206004820152600c60248201527f4e4f5f415353455254494f4e00000000000000000000000000000000000000006044820152606401610ec0565b92915050565b60006110b083612e28565b6040805160c081018252825467ffffffffffffffff808216835268010000000000000000820481166020840152600160801b8204169282019290925260ff600160c01b830481161515606083015292935061114b92909184916080840191600160c81b900416600281111561112757611127614ffb565b600281111561113857611138614ffb565b81526020016001820154815250506131b5565b54600160801b900467ffffffffffffffff1692915050565b919050565b600061117382612e28565b54600160c01b900460ff1692915050565b600061118e614bfd565b6040805160608101825282815260016020820152600091810182905290806111b781848161321a565b94505050505090565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361124d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610ec0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661127f612f8e565b6001600160a01b0316146112ea5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610ec0565b60408051600080825260208201909252610f8291839190613233565b606b546040517f47fb24c50000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152909116906347fb24c590604401600060405180830381600087803b15801561136e57600080fd5b505af1158015611382573d6000803e3d6000fd5b5050604051600292506000805160206157fa8339815191529150600090a25050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036114315760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610ec0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611463612f8e565b6001600160a01b0316146114ce5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610ec0565b610e1182826001613233565b606b546040517f4f61f8500000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015290911690634f61f85090602401600060405180830381600087803b15801561153a57600080fd5b505af115801561154e573d6000803e3d6000fd5b5050604051601b92506000805160206157fa8339815191529150600090a250565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461160f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610ec0565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b606a80546001600160a01b0319166001600160a01b038316179055604051601c906000805160206157fa83398151915290600090a250565b606c546001600160a01b03908116908216036116ca5760405162461bcd60e51b815260206004820152600a60248201527f4355525f4f5554424f58000000000000000000000000000000000000000000006044820152606401610ec0565b606b546040517fcee3d7280000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600060248301529091169063cee3d72890604401600060405180830381600087803b15801561173157600080fd5b505af1158015611745573d6000803e3d6000fd5b5050604051600192506000805160206157fa8339815191529150600090a250565b600061177182612e28565b5468010000000000000000900467ffffffffffffffff1692915050565b6117966133d3565b6117a284848484613427565b6040516018906000805160206157fa83398151915290600090a250505050565b600060758267ffffffffffffffff16815481106117e1576117e16151ef565b6000918252602090912001546001600160a01b031692915050565b6118046133d3565b806118515760405162461bcd60e51b815260206004820152600b60248201527f454d5054595f41525241590000000000000000000000000000000000000000006044820152606401610ec0565b60005b818110156118cf5761188b838383818110611871576118716151ef565b90506020020160208101906118869190614d66565b613644565b6118bc8383838181106118a0576118a06151ef565b90506020020160208101906118b59190614d66565b600061374d565b50806118c78161521b565b915050611854565b506040516016906000805160206157fa83398151915290600090a25050565b6118f661384e565b6040516003906000805160206157fa83398151915290600090a2565b61191a614c22565b61192382612e28565b6040805160c081018252825467ffffffffffffffff808216835268010000000000000000820481166020840152600160801b8204169282019290925260ff600160c01b83048116151560608301529092916080840191600160c81b90910416600281111561199357611993614ffb565b60028111156119a4576119a4614ffb565b81526020016001820154815250509050919050565b6068819055604051601a906000805160206157fa83398151915290600090a250565b60718190556040516008906000805160206157fa83398151915290600090a250565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003611a8a5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610ec0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611abc612f8e565b6001600160a01b031614611b275760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610ec0565b610e1182826001612fc1565b611b3b6133d3565b611b4682848361388b565b50506040516017906000805160206157fa83398151915290600090a2505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003611bf45760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610ec0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611c26612f8e565b6001600160a01b031614611c915760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610ec0565b600054610100900460ff1615808015611cb15750600054600160ff909116105b80611ccb5750303b158015611ccb575060005460ff166001145b611d3d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610ec0565b6000805460ff191660011790558015611d60576000805461ff0019166101001790555b43607955611d716020830183614d66565b606b80546001600160a01b0319166001600160a01b0392909216919091179055611d9e6020830183614d66565b6001600160a01b03166347fb24c5611dbc6060850160408601614d66565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b158015611e1c57600080fd5b505af1158015611e30573d6000803e3d6000fd5b50611e42925050506020830183614d66565b6001600160a01b0316634f61f850611e606040850160208601614d66565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015611eb957600080fd5b505af1158015611ecd573d6000803e3d6000fd5b50611ee2925050506060830160408401614d66565b606a80546001600160a01b0319166001600160a01b0392909216919091179055611f126080830160608401614d66565b606c80546001600160a01b0319166001600160a01b0392909216919091179055611f3f6020830183614d66565b6001600160a01b031663cee3d728611f5d6080850160608601614d66565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b158015611fbd57600080fd5b505af1158015611fd1573d6000803e3d6000fd5b50611fe69250505060a0830160808401614d66565b606d80546001600160a01b0319166001600160a01b03928316179055606b541663ae60bd1361201b60a0850160808601614d66565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209b9190615235565b6121c4576120ac6020830183614d66565b6001600160a01b03166347fb24c56120ca60a0850160808601614d66565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b15801561212a57600080fd5b505af115801561213e573d6000803e3d6000fd5b506121539250505060a0830160808401614d66565b6001600160a01b031663cf8d56d660c085013561217360e0870187615252565b6040518463ffffffff1660e01b8152600401612191939291906152b7565b600060405180830381600087803b1580156121ab57600080fd5b505af11580156121bf573d6000803e3d6000fd5b505050505b6121d46040830160208401614d66565b6001600160a01b0316637fa3a40e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612211573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223591906152ed565b6000036122ef5761224c6040830160208401614d66565b6040517fe0bc972900000000000000000000000000000000000000000000000000000000815260006004820181905260c0602483015260c4820181905260016044830181905260648301829052608483019190915260a48201526001600160a01b03919091169063e0bc97299060e401600060405180830381600087803b1580156122d657600080fd5b505af11580156122ea573d6000803e3d6000fd5b505050505b61230161012083016101008401614d66565b606e80546001600160a01b0319166001600160a01b039290921691909117905561233160c0830160a08401614d66565b606980546001600160a01b0319166001600160a01b039290921691909117905561235e6020840184614f52565b6066805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560c083013560655560408301356067556060830135606855604b6071556123af61034084016103208501614f52565b6069805467ffffffffffffffff9290921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055600061241360c0850160a08601614d66565b6001600160a01b0316036124695760405162461bcd60e51b815260206004820152601060248201527f494e56414c49445f455343524f575f30000000000000000000000000000000006044820152606401610ec0565b61247960c0840160a08501614d66565b606f80546001600160a01b0319166001600160a01b03929092169190911790556124a96040840160208501614d66565b607080546001600160a01b0319166001600160a01b03929092169190911790556124db61030084016102e08501614d66565b607a80546001600160a01b0392909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055600080806125718161253c612537368a90038a016102008b01615427565b6141ca565b604080516020808201949094528082019290925260608083018790528151808403909101815260809092019052805191012090565b90506000606b60009054906101000a90046001600160a01b03166001600160a01b03166284120c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125eb91906152ed565b9050866102c0013581036126075761260460018261548e565b90505b60685460675460695460665460408051602080820196909652808201949094526bffffffffffffffffffffffff19606093841b16928401929092527fffffffffffffffff00000000000000000000000000000000000000000000000060c091821b811660748501529085901b16607c8301528051606481840301815260849092019052805191012060009061269e906001906141fa565b90506126aa8184614232565b6126b2614c59565b6126c5368a90038a016102008b01615427565b60408083019190915260685460675460695460665493518a9489947f901c3aee23cf4478825462caaab375c606ab83516060388344f06503407536309461272a9489948e948d9493926001600160a01b03169167ffffffffffffffff9091169061552f565b60405180910390a37f0000000000000000000000000000000000000000000000000000000000000000156127cb5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127bb91906152ed565b6000858152607b60205260409020555b6040805160608b0135815260c08b013560208201527ffc1b83c11d99d08a938e0b82a0bd45f822f71ff5abf23f999c93c4533d752464910160405180910390a15050505050508015612857576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b607a805460ff1916821515179055604051601e906000805160206157fa83398151915290600090a250565b826128d45760405162461bcd60e51b815260206004820152600b60248201527f454d5054595f41525241590000000000000000000000000000000000000000006044820152606401610ec0565b8281146129235760405162461bcd60e51b815260206004820152600c60248201527f57524f4e475f4c454e47544800000000000000000000000000000000000000006044820152606401610ec0565b60005b838110156129ba57828282818110612940576129406151ef565b90506020020160208101906129559190615128565b6072600087878581811061296b5761296b6151ef565b90506020020160208101906129809190614d66565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806129b28161521b565b915050612926565b506040516006906000805160206157fa83398151915290600090a250505050565b606980546001600160a01b0319166001600160a01b0383161790556040516020906000805160206157fa83398151915290600090a250565b60008167ffffffffffffffff1611612a6d5760405162461bcd60e51b815260206004820152601660248201527f494e56414c49445f434f4e4649524d5f504552494f44000000000000000000006044820152606401610ec0565b6066805467ffffffffffffffff191667ffffffffffffffff83161790556040516009906000805160206157fa83398151915290600090a250565b612ac082612aba36869003860186615427565b8361321a565b8414612b0e5760405162461bcd60e51b815260206004820152601660248201527f494e56414c49445f415353455254494f4e5f48415348000000000000000000006044820152606401610ec0565b50505050565b60006001612b2183612e28565b54600160c81b900460ff166002811115612b3d57612b3d614ffb565b1492915050565b606b54604080517fee35f32700000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163ee35f3279160048083019260209291908290030181865afa158015612ba7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bcb919061560e565b905090565b6001600160a01b038116612c265760405162461bcd60e51b815260206004820152601060248201527f494e56414c49445f455343524f575f30000000000000000000000000000000006044820152606401610ec0565b606f80546001600160a01b0319166001600160a01b0383161790556040516019906000805160206157fa83398151915290600090a250565b606c80546001600160a01b0319166001600160a01b03838116918217909255606b546040517fcee3d7280000000000000000000000000000000000000000000000000000000081526004810192909252600160248301529091169063cee3d72890604401600060405180830381600087803b158015612cdc57600080fd5b505af1158015612cf0573d6000803e3d6000fd5b5050604051600092506000805160206157fa83398151915291508290a250565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491612d7c919061564f565b600060405180830381855afa9150503d8060008114612db7576040519150601f19603f3d011682016040523d82523d6000602084013e612dbc565b606091505b5091509150818015612dcf575080516020145b9250505090565b612dde6133d3565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600081612e775760405162461bcd60e51b815260206004820152601b60248201527f415353455254494f4e5f49445f43414e4e4f545f42455f5a45524f00000000006044820152606401610ec0565b50600090815260746020526040902090565b612f4082356020840135612ea36060860160408701614d66565b612eb36080870160608801614f52565b612ec360a0880160808901614f52565b60408051602080820197909752808201959095526bffffffffffffffffffffffff19606094851b16938501939093527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b81166074860152911b16607c8301528051606481840301815260849092019052805191012090565b8114610e115760405162461bcd60e51b815260206004820152601460248201527f434f4e4649475f484153485f4d49534d415443480000000000000000000000006044820152606401610ec0565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b546001600160a01b0316919050565b7f49bd798cd84788856140a4cd5030756b4d08a9e4d55db725ec195f232d262a895460ff1615612ff45761285783614369565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561304e575060408051601f3d908101601f1916820190925261304b918101906152ed565b60015b6130c05760405162461bcd60e51b815260206004820152603860248201527f45524331393637557067726164653a206e6577207365636f6e6461727920696d60448201527f706c656d656e746174696f6e206973206e6f74205555505300000000000000006064820152608401610ec0565b7f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d81146131555760405162461bcd60e51b815260206004820152603360248201527f45524331393637557067726164653a20756e737570706f72746564207365636f60448201527f6e646172792070726f786961626c6555554944000000000000000000000000006064820152608401610ec0565b5061285783838361442a565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61318a61444f565b604080516001600160a01b03928316815291841660208301520160405180910390a1610f8281614477565b6000816080015160028111156131cd576131cd614ffb565b03610f825760405162461bcd60e51b815260206004820152601360248201527f415353455254494f4e5f4e4f545f4558495354000000000000000000000000006044820152606401610ec0565b60006132298461253c856141ca565b90505b9392505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615613266576128578361451a565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156132c0575060408051601f3d908101601f191682019092526132bd918101906152ed565b60015b6133325760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610ec0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146133c75760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610ec0565b506128578383836145be565b60335460ff166134255760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610ec0565b565b600061343285612e28565b905060018154600160c81b900460ff16600281111561345357613453614ffb565b146134a05760405162461bcd60e51b815260206004820152600b60248201527f4e4f545f50454e44494e470000000000000000000000000000000000000000006044820152606401610ec0565b6134b9846134b336869003860186615427565b8461321a565b85146135075760405162461bcd60e51b815260206004820152600c60248201527f434f4e4649524d5f4441544100000000000000000000000000000000000000006044820152606401610ec0565b600061352061351b3686900386018661566b565b6145c7565b9050600061353b6135363687900387018761566b565b6145d9565b606c546040517fa04cee6000000000000000000000000000000000000000000000000000000000815260048101839052602481018590529192506001600160a01b03169063a04cee6090604401600060405180830381600087803b1580156135a257600080fd5b505af11580156135b6573d6000803e3d6000fd5b50505060738890555082547fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff167902000000000000000000000000000000000000000000000000001783556040805183815260208101839052815189927ffc42829b29c259a7370ab56c8f69fce23b5f351a9ce151da453281993ec0090c928290030190a250505050505050565b6001600160a01b03811660009081526076602052604090206002015468010000000000000000900460ff166136bb5760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f5354414b4544000000000000000000000000000000000000000000006044820152606401610ec0565b6001600160a01b038116600090815260766020526040812060010154607354909190821490806136ea84612e28565b5467ffffffffffffffff1611905081806137015750805b612b0e5760405162461bcd60e51b815260206004820152600c60248201527f5354414b455f41435449564500000000000000000000000000000000000000006044820152606401610ec0565b6001600160a01b0380831660009081526076602052604081206002810154815492939192690100000000000000000090910490911690808511156137d35760405162461bcd60e51b815260206004820152601060248201527f544f4f5f4c4954544c455f5354414b45000000000000000000000000000000006044820152606401610ec0565b60006137df8683615687565b86855590506137ee83826145e5565b826001600160a01b0316876001600160a01b03167fd957cf2340073335d256f72a9ef89cf1a43c31143341a6a53575ef33e987beb8848960405161383c929190918252602082015260400190565b60405180910390a39695505050505050565b61385661468a565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612e0b3390565b60008061389e60408601610e0886612e28565b60016138b26102408701610220880161569a565b60028111156138c3576138c3614ffb565b14806138f1575060026138de6102408701610220880161569a565b60028111156138ef576138ef614ffb565b145b61393d5760405162461bcd60e51b815260206004820152601060248201527f4241445f41465445525f535441545553000000000000000000000000000000006044820152606401610ec0565b8361395f863561395536899003890160e08a01615427565b602089013561321a565b146139ac5760405162461bcd60e51b815260206004820152601460248201527f494e56414c49445f4245464f52455f53544154450000000000000000000000006044820152606401610ec0565b60016139c06101808701610160880161569a565b60028111156139d1576139d1614ffb565b14613a1e5760405162461bcd60e51b815260206004820152600f60248201527f4241445f505245565f53544154555300000000000000000000000000000000006044820152606401610ec0565b6000613a2985612e28565b90506000806101a0880160e0890182613a4283836146dd565b1215613a905760405162461bcd60e51b815260206004820152600f60248201527f494e424f585f4241434b574152445300000000000000000000000000000000006044820152606401610ec0565b6000613ab6613aa560e08d0160c08e01614f52565b849067ffffffffffffffff166147ea565b90506000811315613b095760405162461bcd60e51b815260206004820152600d60248201527f494e424f585f544f4f5f464152000000000000000000000000000000000000006044820152606401610ec0565b6002613b1d6102408d016102208e0161569a565b6002811115613b2e57613b2e614ffb565b14158015613b3c5750600081125b15613b9e57600196506000613b5184846146dd565b13613b9e5760405162461bcd60e51b815260206004820152601360248201527f4f564552464c4f575f5354414e445354494c4c000000000000000000000000006044820152606401610ec0565b606b54604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa158015613bff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2391906152ed565b90506000613c3185836147ea565b1315613c7f5760405162461bcd60e51b815260206004820152600e60248201527f494e424f585f504153545f454e440000000000000000000000000000000000006044820152606401610ec0565b80613c9060e08e0160c08f01614f52565b67ffffffffffffffff161115613ce85760405162461bcd60e51b815260206004820152601360248201527f494e424f585f4e4f545f504f50554c41544544000000000000000000000000006044820152606401610ec0565b6000613d01613cfc3687900387018761566b565b614872565b67ffffffffffffffff169050818103613d2657613d1f82600161548e565b9650613d2a565b8196505b80600003613d7a5760405162461bcd60e51b815260206004820152601160248201527f454d5054595f494e424f585f434f554e540000000000000000000000000000006044820152606401610ec0565b606b546001600160a01b03166316bf5579613d96600184615687565b6040518263ffffffff1660e01b8152600401613db491815260200190565b602060405180830381865afa158015613dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df591906152ed565b95505050505050613e1587896101a001803603810190612aba9190615427565b945085851480613e23575085155b613e6f5760405162461bcd60e51b815260206004820152601960248201527f554e45585045435445445f415353455254494f4e5f48415348000000000000006044820152606401610ec0565b6000613e7a86612e28565b54600160c81b900460ff166002811115613e9657613e96614ffb565b14613ee35760405162461bcd60e51b815260206004820152600e60248201527f415353455254494f4e5f5345454e0000000000000000000000000000000000006044820152606401610ec0565b825460685460675460695460665460408051602080820196909652808201949094526bffffffffffffffffffffffff19606093841b16928401929092527fffffffffffffffff00000000000000000000000000000000000000000000000060c091821b811660748501529087901b16607c83015280516064818403018152608490920190528051910120600091613f879167ffffffffffffffff90911615906141fa565b9050613f9284614880565b60008681526074602090815260409182902083518154928501519385015160608601511515600160c01b027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff928316600160801b02167fffffffffffffff000000000000000000ffffffffffffffffffffffffffffffff96831668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909616929093169190911793909317939093169290921717808255608083015183929182907fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff16600160c81b83600281111561409f5761409f614ffb565b021790555060a0820151816001015590505087867f901c3aee23cf4478825462caaab375c606ab83516060388344f06503407536308b8587606854606754606960009054906101000a90046001600160a01b0316606660009054906101000a900467ffffffffffffffff1660405161411d979695949392919061571e565b60405180910390a37f0000000000000000000000000000000000000000000000000000000000000000156141be5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561418a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ae91906152ed565b6000878152607b60205260409020555b50505050935093915050565b6000816040516020016141dd91906157b8565b604051602081830303815290604052805190602001209050919050565b614202614c22565b61420a614c22565b67ffffffffffffffff4316604082015292151560608401525060a08201526001608082015290565b61423a61490e565b6002608083018190525060008181526074602090815260409182902084518154928601519386015160608701511515600160c01b027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff928316600160801b02167fffffffffffffff000000000000000000ffffffffffffffffffffffffffffffff96831668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909616929093169190911793909317939093169290921717808255608084015184929182907fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff16600160c81b83600281111561435157614351614ffb565b021790555060a0919091015160019091015560735550565b6001600160a01b0381163b6143e65760405162461bcd60e51b815260206004820152603760248201527f455243313936373a206e6577207365636f6e6461727920696d706c656d656e7460448201527f6174696f6e206973206e6f74206120636f6e74726163740000000000000000006064820152608401610ec0565b807f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d5b80546001600160a01b0319166001600160a01b039290921691909117905550565b61443383614993565b6000825111806144405750805b1561285757612b0e83836149d3565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103612fb2565b6001600160a01b0381166144f35760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610ec0565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103614409565b6001600160a01b0381163b6145975760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610ec0565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc614409565b614433836149f8565b8051600090815b602002015192915050565b805160009060016145ce565b6001600160a01b03821660009081526077602052604081205490614609838361548e565b6001600160a01b038516600090815260776020526040812082905560788054929350859290919061463b90849061548e565b909155505060408051838152602081018390526001600160a01b038616917fa740af14c56e4e04a617b1de1eb20de73270decbaaead14f142aabf3038e5ae2910160405180910390a250505050565b60335460ff16156134255760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610ec0565b6000806146f2613cfc3686900386018661566b565b90506000614708613cfc3686900386018661566b565b90508067ffffffffffffffff168267ffffffffffffffff161015614732576000199250505061109f565b8067ffffffffffffffff168267ffffffffffffffff1611156147595760019250505061109f565b600061477261476d3688900388018861566b565b614a38565b9050600061478861476d3688900388018861566b565b90508067ffffffffffffffff168267ffffffffffffffff1610156147b45760001994505050505061109f565b8067ffffffffffffffff168267ffffffffffffffff1611156147dd57600194505050505061109f565b600094505050505061109f565b6000806147ff613cfc3686900386018661566b565b9050828167ffffffffffffffff16101561481e5760001991505061109f565b828167ffffffffffffffff16111561483a57600191505061109f565b600061484e61476d3687900387018761566b565b67ffffffffffffffff16111561486857600191505061109f565b600091505061109f565b6020810151600090816145ce565b805467ffffffffffffffff166000036148b057805467ffffffffffffffff19164367ffffffffffffffff16179055565b805468010000000000000000900467ffffffffffffffff16600003610f825780547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004367ffffffffffffffff1602179055565b600054610100900460ff1661498b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ec0565b613425614a47565b61499c81614369565b6040516001600160a01b038216907ff7eed2a7fabbf1bec8d55ed5e785cc76622376dde5df4ff15470551e030b813490600090a250565b606061322c838360405180606001604052806027815260200161581a60279139614ad0565b614a018161451a565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b602081015160009060016145ce565b600054610100900460ff16614ac45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ec0565b6033805460ff19169055565b60606001600160a01b0384163b614b4f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610ec0565b600080856001600160a01b031685604051614b6a919061564f565b600060405180830381855af49150503d8060008114614ba5576040519150601f19603f3d011682016040523d82523d6000602084013e614baa565b606091505b5091509150614bba828286614bc4565b9695505050505050565b60608315614bd357508161322c565b825115614be35782518084602001fd5b8160405162461bcd60e51b8152600401610ec091906157c6565b6040518060400160405280614c10614cc3565b8152602001614c1d614cc3565b905290565b6040805160c081018252600080825260208201819052918101829052606081018290529060808201905b8152600060209091015290565b6040518060600160405280614ca9604080516060808201835260008083526020808401829052845160a0810186528281529081018290528085018290529182018190526080820152909182015290565b8152602001614cb6614ce1565b8152602001614c1d614ce1565b60405180604001604052806002906020820280368337509192915050565b6040518060600160405280614cf4614bfd565b81526020016000614c4c565b60008082840360c0811215614d1457600080fd5b8335925060a0601f1982011215614d2a57600080fd5b506020830190509250929050565b600060208284031215614d4a57600080fd5b5035919050565b6001600160a01b0381168114610f8257600080fd5b600060208284031215614d7857600080fd5b813561322c81614d51565b8015158114610f8257600080fd5b60008060408385031215614da457600080fd5b8235614daf81614d51565b91506020830135614dbf81614d83565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614e0357614e03614dca565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614e3257614e32614dca565b604052919050565b60008060408385031215614e4d57600080fd5b8235614e5881614d51565b915060208381013567ffffffffffffffff80821115614e7657600080fd5b818601915086601f830112614e8a57600080fd5b813581811115614e9c57614e9c614dca565b614eae84601f19601f84011601614e09565b91508082528784828501011115614ec457600080fd5b80848401858401376000848284010152508093505050509250929050565b600060c08284031215614ef457600080fd5b50919050565b6000806000806101208587031215614f1157600080fd5b8435935060208501359250614f298660408701614ee2565b939692955092936101000135925050565b803567ffffffffffffffff8116811461116357600080fd5b600060208284031215614f6457600080fd5b61322c82614f3a565b60008083601f840112614f7f57600080fd5b50813567ffffffffffffffff811115614f9757600080fd5b6020830191508360208260051b8501011115614fb257600080fd5b9250929050565b60008060208385031215614fcc57600080fd5b823567ffffffffffffffff811115614fe357600080fd5b614fef85828601614f6d565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110610f8257634e487b7160e01b600052602160045260246000fd5b600060c08201905067ffffffffffffffff80845116835280602085015116602084015280604085015116604084015250606083015115156060830152608083015161507981615011565b8060808401525060a083015160a083015292915050565b60008060008385036102a08112156150a757600080fd5b84359350610260601f19820112156150be57600080fd5b5060208401915061028084013590509250925092565b6000808284036101408112156150e957600080fd5b833567ffffffffffffffff81111561510057600080fd5b84016103a0818703121561511357600080fd5b9250610120601f1982011215614d2a57600080fd5b60006020828403121561513a57600080fd5b813561322c81614d83565b6000806000806040858703121561515b57600080fd5b843567ffffffffffffffff8082111561517357600080fd5b61517f88838901614f6d565b9096509450602087013591508082111561519857600080fd5b506151a587828801614f6d565b95989497509550505050565b60008060008061012085870312156151c857600080fd5b843593506151d98660208701614ee2565b939693955050505060e082013591610100013590565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361522e5761522e615205565b5060010190565b60006020828403121561524757600080fd5b815161322c81614d83565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261528757600080fd5b83018035915067ffffffffffffffff8211156152a257600080fd5b602001915036819003821315614fb257600080fd5b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6000602082840312156152ff57600080fd5b5051919050565b600082601f83011261531757600080fd5b6040516040810181811067ffffffffffffffff8211171561533a5761533a614dca565b806040525080604084018581111561535157600080fd5b845b818110156153725761536481614f3a565b835260209283019201615353565b509195945050505050565b60006080828403121561538f57600080fd5b6040516040810181811067ffffffffffffffff821117156153b2576153b2614dca565b604052905080601f830184136153c757600080fd5b6153cf614de0565b8060408501868111156153e157600080fd5b855b818110156153fb5780358452602093840193016153e3565b508184526154098782615306565b60208501525050505092915050565b80356003811061116357600080fd5b600060c0828403121561543957600080fd5b6040516060810181811067ffffffffffffffff8211171561545c5761545c614dca565b604052615469848461537d565b815261547760808401615418565b602082015260a09290920135604083015250919050565b8082018082111561109f5761109f615205565b6154aa81615011565b9052565b805180518360005b60028110156154d55782518252602092830192909101906001016154b6565b505050602090810151906040840160005b600281101561550d57835167ffffffffffffffff16825292820192908201906001016154e6565b5050820151905061552160808401826154a1565b506040015160a09190910152565b600061032082019050885180518352602081015160208401526040810151905080516040840152602081015160608401526001600160a01b036040820151166080840152606081015167ffffffffffffffff80821660a08601528060808401511660c086015250505060208901516155aa60e08401826154ae565b5060408901516155be6101a08401826154ae565b508761026083015286610280830152856102a0830152846102c08301526155f16102e08301856001600160a01b03169052565b67ffffffffffffffff831661030083015298975050505050505050565b60006020828403121561562057600080fd5b815161322c81614d51565b60005b8381101561564657818101518382015260200161562e565b50506000910152565b6000825161566181846020870161562b565b9190910192915050565b60006080828403121561567d57600080fd5b61322c838361537d565b8181038181111561109f5761109f615205565b6000602082840312156156ac57600080fd5b61322c82615418565b6040818337604082016040820160005b60028110156156f65767ffffffffffffffff6156e083614f3a565b16835260209283019291909101906001016156c5565b50505061570560808201615418565b61570e81615011565b608083015260a090810135910152565b60006103208201905088358252602089013560208301526040890135604083015260608901356060830152608089013561575781614d51565b6001600160a01b0316608083015261577160a08a01614f3a565b67ffffffffffffffff80821660a08501528061578f60c08d01614f3a565b1660c085015250506157a760e0830160e08b016156b5565b6101a06155be818401828c016156b5565b60c0810161109f82846154ae565b60208152600082518060208401526157e581604085016020870161562b565b601f01601f1916919091016040019291505056feea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208081a0bad605430f133b790b3b1324485f1d186039dbe6357095dd603baf2c5a64736f6c63430008110033", } // RollupAdminLogicABI is the input ABI used to generate the binding from. @@ -17844,7 +17844,7 @@ func (_RollupCore *RollupCoreFilterer) ParseUserWithdrawableFundsUpdated(log typ // RollupCreatorMetaData contains all meta data concerning the RollupCreator contract. var RollupCreatorMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rollupAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nativeToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inboxAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"outbox\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rollupEventInbox\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"adminProxy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sequencerInbox\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"bridge\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"upgradeExecutor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"validatorWalletCreator\",\"type\":\"address\"}],\"name\":\"RollupCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"TemplatesUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"bridgeCreator\",\"outputs\":[{\"internalType\":\"contractBridgeCreator\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"challengeManagerTemplate\",\"outputs\":[{\"internalType\":\"contractIEdgeChallengeManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"stakeToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"baseStake\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"loserStakeEscrow\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"chainConfig\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"miniStakeValues\",\"type\":\"uint256[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"delayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delaySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureSeconds\",\"type\":\"uint256\"}],\"internalType\":\"structISequencerInbox.MaxTimeVariation\",\"name\":\"sequencerInboxMaxTimeVariation\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroBlockEdgeHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroBigStepEdgeHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroSmallStepEdgeHeight\",\"type\":\"uint256\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"genesisAssertionState\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"genesisInboxCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"anyTrustFastConfirmer\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"numBigStepLevel\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"challengeGracePeriodBlocks\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"replenishRateInBasis\",\"type\":\"uint64\"}],\"internalType\":\"structBufferConfig\",\"name\":\"bufferConfig\",\"type\":\"tuple\"}],\"internalType\":\"structConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"validators\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"maxDataSize\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"nativeToken\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"deployFactoriesToL2\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGasForRetryables\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"batchPosters\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"batchPosterManager\",\"type\":\"address\"}],\"internalType\":\"structRollupCreator.RollupDeploymentParams\",\"name\":\"deployParams\",\"type\":\"tuple\"}],\"name\":\"createRollup\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2FactoriesDeployer\",\"outputs\":[{\"internalType\":\"contractDeployHelper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"osp\",\"outputs\":[{\"internalType\":\"contractIOneStepProofEntry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupAdminLogic\",\"outputs\":[{\"internalType\":\"contractIRollupAdmin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupUserLogic\",\"outputs\":[{\"internalType\":\"contractIRollupUser\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractBridgeCreator\",\"name\":\"_bridgeCreator\",\"type\":\"address\"},{\"internalType\":\"contractIOneStepProofEntry\",\"name\":\"_osp\",\"type\":\"address\"},{\"internalType\":\"contractIEdgeChallengeManager\",\"name\":\"_challengeManagerLogic\",\"type\":\"address\"},{\"internalType\":\"contractIRollupAdmin\",\"name\":\"_rollupAdminLogic\",\"type\":\"address\"},{\"internalType\":\"contractIRollupUser\",\"name\":\"_rollupUserLogic\",\"type\":\"address\"},{\"internalType\":\"contractIUpgradeExecutor\",\"name\":\"_upgradeExecutorLogic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_validatorWalletCreator\",\"type\":\"address\"},{\"internalType\":\"contractDeployHelper\",\"name\":\"_l2FactoriesDeployer\",\"type\":\"address\"}],\"name\":\"setTemplates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"upgradeExecutorLogic\",\"outputs\":[{\"internalType\":\"contractIUpgradeExecutor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorWalletCreator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6155d0806200007f6000396000f3fe608060405260043610620000e75760003560e01c80639dba32411162000089578063f0dae4941162000060578063f0dae494146200022d578063f26a62c61462000252578063f2fde38b1462000274578063f860cefa146200029957600080fd5b80639dba324114620001c7578063ac0425bc14620001e9578063bc45e0ae146200020b57600080fd5b80638da5cb5b11620000be5780638da5cb5b14620001635780639c683d1014620001835780639d4798e314620001a557600080fd5b8063030cb85e14620000f45780635491abea1462000132578063715018a6146200014957600080fd5b36620000ef57005b600080fd5b3480156200010157600080fd5b5060065462000116906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b620001166200014336600462002032565b620002bb565b3480156200015657600080fd5b506200016162000ee7565b005b3480156200017057600080fd5b506000546001600160a01b031662000116565b3480156200019057600080fd5b5060035462000116906001600160a01b031681565b348015620001b257600080fd5b5060055462000116906001600160a01b031681565b348015620001d457600080fd5b5060045462000116906001600160a01b031681565b348015620001f657600080fd5b5060085462000116906001600160a01b031681565b3480156200021857600080fd5b5060075462000116906001600160a01b031681565b3480156200023a57600080fd5b50620001616200024c36600462002143565b62000eff565b3480156200025f57600080fd5b5060025462000116906001600160a01b031681565b3480156200028157600080fd5b506200016162000293366004620021fd565b62000fce565b348015620002a657600080fd5b5060015462000116906001600160a01b031681565b600080600080600160009054906101000a90046001600160a01b03166001600160a01b03166311f022276040518163ffffffff1660e01b815260040160c060405180830381865afa15801562000315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033b91906200221d565b505093509350935050826001600160a01b031663e8eb1dc36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000383573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a99190620022b1565b856040015114620004015760405162461bcd60e51b815260206004820152601960248201527f53495f4d41585f444154415f53495a455f4d49534d415443480000000000000060448201526064015b60405180910390fd5b816001600160a01b031663e8eb1dc36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000440573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004669190620022b1565b856040015114620004ba5760405162461bcd60e51b815260206004820152601960248201527f53495f4d41585f444154415f53495a455f4d49534d41544348000000000000006044820152606401620003f8565b806001600160a01b031663e8eb1dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200051f9190620022b1565b856040015114620005735760405162461bcd60e51b815260206004820152601860248201527f495f4d41585f444154415f53495a455f4d49534d4154434800000000000000006044820152606401620003f8565b6000806000600160009054906101000a90046001600160a01b03166001600160a01b03166376768ab96040518163ffffffff1660e01b815260040160c060405180830381865afa158015620005cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005f291906200221d565b505093509350935050826001600160a01b031663e8eb1dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200063a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006609190620022b1565b886040015114620006b45760405162461bcd60e51b815260206004820152601960248201527f53495f4d41585f444154415f53495a455f4d49534d41544348000000000000006044820152606401620003f8565b816001600160a01b031663e8eb1dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015620006f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007199190620022b1565b8860400151146200076d5760405162461bcd60e51b815260206004820152601960248201527f53495f4d41585f444154415f53495a455f4d49534d41544348000000000000006044820152606401620003f8565b806001600160a01b031663e8eb1dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015620007ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007d29190620022b1565b886040015114620008265760405162461bcd60e51b815260206004820152601860248201527f495f4d41585f444154415f53495a455f4d49534d4154434800000000000000006044820152606401620003f8565b50505050505060006040516200083c90620019ab565b604051809103906000f08015801562000859573d6000803e3d6000fd5b509050600083604051602001620008719190620025ef565b604051602081830303815290604052805190602001206040516200089590620019b9565b8190604051809103906000f5905080158015620008b6573d6000803e3d6000fd5b5060015460608601518651610120810151610240909101516040517f57d3a2000000000000000000000000000000000000000000000000000000000081529495506000946001600160a01b03909416936357d3a200936200091e9389938993600401620026b7565b60a0604051808303816000875af11580156200093e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200096491906200273d565b90506000620009798385886000015162001064565b90506000620009918760000151608001518662001187565b6040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301529192509086169063f2fde38b90602401600060405180830381600087803b158015620009f257600080fd5b505af115801562000a07573d6000803e3d6000fd5b50508851306080918201528951604080516101208101825288516001600160a01b0390811682528983015181166020808401919091528a01518116828401528985015181166060808401919091528a015181169482019490945287841660a082015260048054851660c0830152600554851660e0830152600754851661010083015291517fd384644b000000000000000000000000000000000000000000000000000000008152938a16955063d384644b945062000ac893909101620027e3565b600060405180830381600087803b15801562000ae357600080fd5b505af115801562000af8573d6000803e3d6000fd5b5050505060005b8760c001515181101562000bd45783604001516001600160a01b0316636e7df3e78960c00151838151811062000b395762000b39620028c9565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b15801562000ba557600080fd5b505af115801562000bba573d6000803e3d6000fd5b50505050808062000bcb90620028df565b91505062000aff565b5060e08701516001600160a01b03161562000c6a5760408084015160e089015191517f1ff647900000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152911690631ff6479090602401600060405180830381600087803b15801562000c5057600080fd5b505af115801562000c65573d6000803e3d6000fd5b505050505b6020870151511562000d9757600087602001515167ffffffffffffffff81111562000c995762000c99620019d5565b60405190808252806020026020018201604052801562000cc3578160200160208202803683370190505b50905060005b88602001515181101562000d1357600182828151811062000cee5762000cee620028c9565b911515602092830291909101909101528062000d0a81620028df565b91505062000cc9565b5060208801516040517fa3ffb7720000000000000000000000000000000000000000000000000000000081526001600160a01b0387169163a3ffb7729162000d619190859060040162002926565b600060405180830381600087803b15801562000d7c57600080fd5b505af115801562000d91573d6000803e3d6000fd5b50505050505b6040517f13af40350000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301528516906313af403590602401600060405180830381600087803b15801562000df457600080fd5b505af115801562000e09573d6000803e3d6000fd5b5050505086608001511562000e315762000e31836020015188606001518960a00151620012b6565b606087810151602085810151608080880151888601516040808b01518b5160075483516001600160a01b03988916815295881698860198909852928616848301528a8616988401989098528c85169383019390935295831660a082015294821660c086015285821660e0860152918116610100850152905191811692908716917fd9bfd3bb3012f0caa103d1ba172692464d2de5c7b75877ce255c72147086a79d918190036101200190a3509195945050505050565b62000ef1620015c2565b62000efd60006200161e565b565b62000f09620015c2565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b038b8116919091179092556002805482168a8416179055600380548216898416179055600480548216888416179055600580548216878416179055600680548216868416179055600780548216858416179055600880549091169183169190911790556040517fc9d3947d22fa124aaec4c7e8c919f79016e2d7b48eee10568375d98b86460d1b90600090a15050505050505050565b62000fd8620015c2565b6001600160a01b038116620010565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401620003f8565b62001061816200161e565b50565b60035460405160009182916001600160a01b039091169085906200108890620019c7565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f080158015620010cb573d6000803e3d6000fd5b509050806001600160a01b0316631a72d54c868560000151600260009054906101000a90046001600160a01b03168761014001518861016001518961018001518a602001518b608001518c61020001518d61010001516040518b63ffffffff1660e01b8152600401620011489a9998979695949392919062002983565b600060405180830381600087803b1580156200116357600080fd5b505af115801562001178573d6000803e3d6000fd5b509293505050505b9392505050565b6006546040805160208101825260008082529151919283926001600160a01b03909116918591620011b890620019c7565b620011c69392919062002a00565b604051809103906000f080158015620011e3573d6000803e3d6000fd5b5060408051600180825281830190925291925060009190602080830190803683370190505090508481600081518110620012215762001221620028c9565b6001600160a01b0392831660209182029290920101526040517f946d92040000000000000000000000000000000000000000000000000000000081529083169063946d92049062001279908590859060040162002a37565b600060405180830381600087803b1580156200129457600080fd5b505af1158015620012a9573d6000803e3d6000fd5b5093979650505050505050565b6001600160a01b03821662001487576008546040517facd7d02a0000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015260248201849052600092169063acd7d02a90604401602060405180830381865afa15801562001331573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013579190620022b1565b6008546040517fd7c641e70000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015286811660248301526044820186905292935091169063d7c641e79083906064016000604051808303818588803b158015620013ca57600080fd5b505af1158015620013df573d6000803e3d6000fd5b5050604051600093503392504791508381818185875af1925050503d806000811462001428576040519150601f19603f3d011682016040523d82523d6000602084013e6200142d565b606091505b5050905080620014805760405162461bcd60e51b815260206004820152600d60248201527f526566756e64206661696c6564000000000000000000000000000000000000006044820152606401620003f8565b5050505050565b6008546040517facd7d02a0000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015260248201849052600092169063acd7d02a90604401602060405180830381865afa158015620014f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015199190620022b1565b9050620015326001600160a01b03841633868462001686565b6008546040517fd7c641e70000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301528581166024830152604482018590529091169063d7c641e790606401600060405180830381600087803b158015620015a257600080fd5b505af1158015620015b7573d6000803e3d6000fd5b50505050505b505050565b6000546001600160a01b0316331462000efd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620003f8565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526200171090859062001716565b50505050565b60006200176d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620018029092919063ffffffff16565b805190915015620015bd57808060200190518101906200178e919062002a5b565b620015bd5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401620003f8565b60606200181384846000856200181b565b949350505050565b606082471015620018955760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401620003f8565b6001600160a01b0385163b620018ee5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620003f8565b600080866001600160a01b031685876040516200190c919062002a7b565b60006040518083038185875af1925050503d80600081146200194b576040519150601f19603f3d011682016040523d82523d6000602084013e62001950565b606091505b5091509150620019628282866200196d565b979650505050505050565b606083156200197e57508162001180565b8251156200198f5782518084602001fd5b8160405162461bcd60e51b8152600401620003f8919062002a99565b61080b8062002aaf83390190565b61140e80620032ba83390190565b610ed380620046c883390190565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171562001a115762001a11620019d5565b60405290565b6040805190810167ffffffffffffffff8111828210171562001a115762001a11620019d5565b604051610260810167ffffffffffffffff8111828210171562001a115762001a11620019d5565b604051610100810167ffffffffffffffff8111828210171562001a115762001a11620019d5565b604051601f8201601f1916810167ffffffffffffffff8111828210171562001ab75762001ab7620019d5565b604052919050565b803567ffffffffffffffff8116811462001ad857600080fd5b919050565b6001600160a01b03811681146200106157600080fd5b803562001ad88162001add565b600082601f83011262001b1257600080fd5b813567ffffffffffffffff81111562001b2f5762001b2f620019d5565b62001b446020601f19601f8401160162001a8b565b81815284602083860101111562001b5a57600080fd5b816020850160208301376000918101602001919091529392505050565b600067ffffffffffffffff82111562001b945762001b94620019d5565b5060051b60200190565b600082601f83011262001bb057600080fd5b8135602062001bc962001bc38362001b77565b62001a8b565b82815260059290921b8401810191818101908684111562001be957600080fd5b8286015b8481101562001c06578035835291830191830162001bed565b509695505050505050565b60006080828403121562001c2457600080fd5b6040516080810181811067ffffffffffffffff8211171562001c4a5762001c4a620019d5565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b600082601f83011262001c8d57600080fd5b62001c9762001a17565b80604084018581111562001caa57600080fd5b845b8181101562001ccf5762001cc08162001abf565b84526020938401930162001cac565b509095945050505050565b80356003811062001ad857600080fd5b600081830360c081121562001cfe57600080fd5b62001d08620019eb565b9150608081121562001d1957600080fd5b5062001d2462001a17565b83601f84011262001d3457600080fd5b62001d3e62001a17565b80604085018681111562001d5157600080fd5b855b8181101562001d6d57803584526020938401930162001d53565b5081845262001d7d878262001c7b565b6020850152505050815262001d956080830162001cda565b602082015260a0820135604082015292915050565b803560ff8116811462001ad857600080fd5b60006060828403121562001dcf57600080fd5b62001dd9620019eb565b905062001de68262001abf565b815262001df66020830162001abf565b602082015262001e096040830162001abf565b604082015292915050565b60006103a0828403121562001e2857600080fd5b62001e3262001a3d565b905062001e3f8262001abf565b815262001e4f6020830162001af3565b6020820152604082013560408201526060820135606082015262001e766080830162001af3565b608082015262001e8960a0830162001af3565b60a082015260c082013560c082015260e082013567ffffffffffffffff8082111562001eb457600080fd5b62001ec28583860162001b00565b60e08401526101009150818401358181111562001ede57600080fd5b62001eec8682870162001b9e565b8385015250505061012062001f048482850162001c11565b908201526101a0828101356101408301526101c0808401356101608401526101e08085013561018085015261020062001f408782880162001cea565b848601526102c08601358386015262001f5d6102e0870162001af3565b8286015262001f70610300870162001daa565b818601525050505062001f87610320830162001abf565b61022082015262001f9d83610340840162001dbc565b61024082015292915050565b600082601f83011262001fbb57600080fd5b8135602062001fce62001bc38362001b77565b82815260059290921b8401810191818101908684111562001fee57600080fd5b8286015b8481101562001c06578035620020088162001add565b835291830191830162001ff2565b80151581146200106157600080fd5b803562001ad88162002016565b6000602082840312156200204557600080fd5b813567ffffffffffffffff808211156200205e57600080fd5b9083019061010082860312156200207457600080fd5b6200207e62001a64565b8235828111156200208e57600080fd5b6200209c8782860162001e14565b825250602083013582811115620020b257600080fd5b620020c08782860162001fa9565b60208301525060408301356040820152620020de6060840162001af3565b6060820152620020f16080840162002025565b608082015260a083013560a082015260c0830135828111156200211357600080fd5b620021218782860162001fa9565b60c0830152506200213560e0840162001af3565b60e082015295945050505050565b600080600080600080600080610100898b0312156200216157600080fd5b88356200216e8162001add565b97506020890135620021808162001add565b96506040890135620021928162001add565b95506060890135620021a48162001add565b94506080890135620021b68162001add565b935060a0890135620021c88162001add565b925060c0890135620021da8162001add565b915060e0890135620021ec8162001add565b809150509295985092959890939650565b6000602082840312156200221057600080fd5b8135620011808162001add565b60008060008060008060c087890312156200223757600080fd5b8651620022448162001add565b6020880151909650620022578162001add565b60408801519095506200226a8162001add565b60608801519094506200227d8162001add565b6080880151909350620022908162001add565b60a0880151909250620022a38162001add565b809150509295509295509295565b600060208284031215620022c457600080fd5b5051919050565b60005b83811015620022e8578181015183820152602001620022ce565b50506000910152565b600081518084526200230b816020860160208601620022cb565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b83811015620023515781518752958201959082019060010162002333565b509495945050505050565b600381106200237b57634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b6002811015620023a857825182526020928301929091019060010162002387565b505050602090810151906040840160005b6002811015620023e257835167ffffffffffffffff1682529282019290820190600101620023b9565b50508201519050620023f860808401826200235c565b506040015160a09190910152565b805167ffffffffffffffff16825260006103a060208301516200243460208601826001600160a01b03169052565b50604083015160408501526060830151606085015260808301516200246460808601826001600160a01b03169052565b5060a08301516200248060a08601826001600160a01b03169052565b5060c083015160c085015260e08301518160e0860152620024a482860182620022f1565b9150506101008084015185830382870152620024c183826200231f565b6101208681015180518983015260208101516101408a015260408101516101608a015260608101516101808a01529194509250905050506101408301516101a0818187015261016085015191506101c0828188015261018086015192506101e0838189015282870151935061020092506200253f838901856200237f565b908601516102c08801528501516001600160a01b03166102e087015284015160ff166103008601525061022083015167ffffffffffffffff908116610320860152610240840151805182166103408701526020810151821661036087015260408101519091166103808601525b509392505050565b600081518084526020808501945080840160005b83811015620023515781516001600160a01b031687529582019590820190600101620025c8565b60208152600082516101008060208501526200261061012085018362002406565b91506020850151601f1980868503016040870152620026308483620025b4565b935060408701516060870152606087015191506200265960808701836001600160a01b03169052565b608087015180151560a0880152915060a087015160c087015260c08701519150808685030160e087015250620026908382620025b4565b92505060e0850151620026ad828601826001600160a01b03169052565b5090949350505050565b6001600160a01b0386811682528581166020830152841660408201526101408101620027076060830185805182526020810151602083015260408101516040830152606081015160608301525050565b825167ffffffffffffffff90811660e0840152602084015181166101008401526040840151166101208301529695505050505050565b600060a082840312156200275057600080fd5b60405160a0810181811067ffffffffffffffff82111715620027765762002776620019d5565b6040528251620027868162001add565b81526020830151620027988162001add565b60208201526040830151620027ad8162001add565b60408201526060830151620027c28162001add565b60608201526080830151620027d78162001add565b60808201529392505050565b6000610140808352620027f98184018662002406565b9150506001600160a01b03835116602083015260208301516200282760408401826001600160a01b03169052565b5060408301516001600160a01b03811660608401525060608301516001600160a01b03811660808401525060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100620028ae818501836001600160a01b03169052565b8401516001600160a01b0381166101208501529050620025ac565b634e487b7160e01b600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200291f57634e487b7160e01b600052601160045260246000fd5b5060010190565b6040815260006200293b6040830185620025b4565b82810360208481019190915284518083528582019282019060005b818110156200297657845115158352938301939183019160010162002956565b5090979650505050505050565b60006101406001600160a01b03808e16845267ffffffffffffffff8d166020850152808c1660408501528a60608501528960808501528860a085015280881660c085015280871660e08501525060ff851661010084015280610120840152620029ef818401856200231f565b9d9c50505050505050505050505050565b60006001600160a01b0380861683528085166020840152506060604083015262002a2e6060830184620022f1565b95945050505050565b6001600160a01b0383168152604060208201526000620018136040830184620025b4565b60006020828403121562002a6e57600080fd5b8151620011808162002016565b6000825162002a8f818460208701620022cb565b9190910192915050565b602081526000620011806020830184620022f156fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61078d8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610579565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d161022e565b005b3480156100df57600080fd5b506100d16100ee36600461059d565b610242565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f366004610605565b6102c3565b34801561013057600080fd5b506100d161013f36600461059d565b61034b565b34801561015057600080fd5b506100d161015f366004610579565b61039a565b34801561017057600080fd5b506100a061017f366004610579565b610449565b6000806000836001600160a01b03166040516101c3907f5c60da1b00000000000000000000000000000000000000000000000000000000815260040190565b600060405180830381855afa9150503d80600081146101fe576040519150601f19603f3d011682016040523d82523d6000602084013e610203565b606091505b50915091508161021257600080fd5b8080602001905181019061022691906106db565b949350505050565b610236610488565b61024060006104fc565b565b61024a610488565b6040517f8f2839700000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b1580156102a757600080fd5b505af11580156102bb573d6000803e3d6000fd5b505050505050565b6102cb610488565b6040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03841690634f1ef28690349061031490869086906004016106f8565b6000604051808303818588803b15801561032d57600080fd5b505af1158015610341573d6000803e3d6000fd5b5050505050505050565b610353610488565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152831690633659cfe69060240161028d565b6103a2610488565b6001600160a01b03811661043d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610446816104fc565b50565b6000806000836001600160a01b03166040516101c3907ff851a44000000000000000000000000000000000000000000000000000000000815260040190565b6000546001600160a01b03163314610240576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610434565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461044657600080fd5b60006020828403121561058b57600080fd5b813561059681610564565b9392505050565b600080604083850312156105b057600080fd5b82356105bb81610564565b915060208301356105cb81610564565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561061a57600080fd5b833561062581610564565b9250602084013561063581610564565b9150604084013567ffffffffffffffff8082111561065257600080fd5b818601915086601f83011261066657600080fd5b813581811115610678576106786105d6565b604051601f8201601f19908116603f011681019083821181831017156106a0576106a06105d6565b816040528281528960208487010111156106b957600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156106ed57600080fd5b815161059681610564565b6001600160a01b038316815260006020604081840152835180604085015260005b8181101561073557858101830151858201606001528201610719565b506000606082860101526060601f19601f83011685010192505050939250505056fea2646970667358221220b5f17b9b80290312697ad0c26141bee28c1a1e448364e9044054c3ec2b5708bd64736f6c63430008110033608060405234801561001057600080fd5b506113ee806100206000396000f3fe6080604052600436106100225760003560e01c8063d384644b1461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f610054366004610d95565b61006b565b6100696100646101bd565b6102a1565b565b60006100756102ca565b6001600160a01b031614801561009b575060006100906102fd565b6001600160a01b0316145b80156100b7575060006100ac610325565b6001600160a01b0316145b156101b5576101b18160c0015183836040516024016100d792919061113d565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9e7e6aa70000000000000000000000000000000000000000000000000000000017905260e08601519087015191516001600160a01b0390921660248301529060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052608087015161034d565b5050565b6101b1610059565b600060043610156102155760405162461bcd60e51b815260206004820152600b60248201527f4e4f5f46554e435f53494700000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000336102206102ca565b6001600160a01b03160361023b576102366102fd565b610243565b610243610325565b90506001600160a01b0381163b61029c5760405162461bcd60e51b815260206004820152601360248201527f5441524745545f4e4f545f434f4e545241435400000000000000000000000000604482015260640161020c565b919050565b3660008037600080366000845af43d6000803e8080156102c0573d6000f35b3d6000fd5b505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6102ee565b60007f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6102ee565b61037860017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610461132b565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103146103a6576103a661134c565b6103d160017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61132b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc146103ff576103ff61134c565b61042a60017f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546e61132b565b7f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d146104585761045861134c565b61046181610480565b61046d858560006104d7565b61047983836000610502565b5050505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104a96102ca565b604080516001600160a01b03928316815291841660208301520160405180910390a16104d48161050b565b50565b6104e0836105e3565b6000825111806104ed5750805b156102c5576104fc8383610623565b50505050565b6104e083610651565b6001600160a01b0381166105875760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161020c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6105ec81610691565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610648838360405180606001604052806027815260200161139260279139610735565b90505b92915050565b61065a8161082b565b6040516001600160a01b038216907ff7eed2a7fabbf1bec8d55ed5e785cc76622376dde5df4ff15470551e030b813490600090a250565b6001600160a01b0381163b61070e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161020c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105aa565b60606001600160a01b0384163b6107b45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161020c565b600080856001600160a01b0316856040516107cf9190611362565b600060405180830381855af49150503d806000811461080a576040519150601f19603f3d011682016040523d82523d6000602084013e61080f565b606091505b509150915061081f8282866108cf565b925050505b9392505050565b6001600160a01b0381163b6108a85760405162461bcd60e51b815260206004820152603760248201527f455243313936373a206e6577207365636f6e6461727920696d706c656d656e7460448201527f6174696f6e206973206e6f74206120636f6e7472616374000000000000000000606482015260840161020c565b807f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6105aa565b606083156108de575081610824565b8251156108ee5782518084602001fd5b8160405162461bcd60e51b815260040161020c919061137e565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561094157610941610908565b60405290565b6040805190810167ffffffffffffffff8111828210171561094157610941610908565b604051610120810167ffffffffffffffff8111828210171561094157610941610908565b604051610260810167ffffffffffffffff8111828210171561094157610941610908565b604051601f8201601f1916810167ffffffffffffffff811182821017156109db576109db610908565b604052919050565b803567ffffffffffffffff8116811461029c57600080fd5b80356001600160a01b038116811461029c57600080fd5b600082601f830112610a2357600080fd5b813567ffffffffffffffff811115610a3d57610a3d610908565b610a506020601f19601f840116016109b2565b818152846020838601011115610a6557600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112610a9357600080fd5b8135602067ffffffffffffffff821115610aaf57610aaf610908565b8160051b610abe8282016109b2565b9283528481018201928281019087851115610ad857600080fd5b83870192505b84831015610af757823582529183019190830190610ade565b979650505050505050565b600060808284031215610b1457600080fd5b6040516080810181811067ffffffffffffffff82111715610b3757610b37610908565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b600082601f830112610b7957600080fd5b610b81610947565b806040840185811115610b9357600080fd5b845b81811015610bb457610ba6816109e3565b845260209384019301610b95565b509095945050505050565b80356003811061029c57600080fd5b600081830360c0811215610be157600080fd5b610be961091e565b91506080811215610bf957600080fd5b50610c02610947565b83601f840112610c1157600080fd5b610c19610947565b806040850186811115610c2b57600080fd5b855b81811015610c45578035845260209384019301610c2d565b50818452610c538782610b68565b60208501525050508152610c6960808301610bbf565b602082015260a0820135604082015292915050565b803560ff8116811461029c57600080fd5b600060608284031215610ca157600080fd5b610ca961091e565b9050610cb4826109e3565b8152610cc2602083016109e3565b6020820152610cd3604083016109e3565b604082015292915050565b60006101208284031215610cf157600080fd5b610cf961096a565b9050610d04826109fb565b8152610d12602083016109fb565b6020820152610d23604083016109fb565b6040820152610d34606083016109fb565b6060820152610d45608083016109fb565b6080820152610d5660a083016109fb565b60a0820152610d6760c083016109fb565b60c0820152610d7860e083016109fb565b60e0820152610100610d8b8184016109fb565b9082015292915050565b600080610140808486031215610daa57600080fd5b833567ffffffffffffffff80821115610dc257600080fd5b908501906103a08288031215610dd757600080fd5b610ddf61098e565b610de8836109e3565b8152610df6602084016109fb565b60208201526040830135604082015260608301356060820152610e1b608084016109fb565b6080820152610e2c60a084016109fb565b60a082015260c083013560c082015260e083013582811115610e4d57600080fd5b610e5989828601610a12565b60e0830152506101008084013583811115610e7357600080fd5b610e7f8a828701610a82565b8284015250506101209150610e9688838501610b02565b828201526101a0915081830135848201526101c09350838301356101608201526101e080840135610180830152610200610ed28a828701610bce565b848401526102c085013586840152610eed6102e086016109fb565b82840152610efe6103008601610c7e565b9083015250610f1061032084016109e3565b610220820152610f24886103408501610c8f565b61024082015280955050505050610f3e8460208501610cde565b90509250929050565b60005b83811015610f62578181015183820152602001610f4a565b50506000910152565b60008151808452610f83816020860160208601610f47565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b83811015610fc757815187529582019590820190600101610fab565b509495945050505050565b60038110610ff057634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b600281101561101b578251825260209283019290910190600101610ffc565b505050602090810151906040840160005b600281101561105357835167ffffffffffffffff168252928201929082019060010161102c565b505082015190506110676080840182610fd2565b506040015160a09190910152565b6001600160a01b038082511683528060208301511660208401528060408301511660408401525060608101516110b660608401826001600160a01b03169052565b5060808101516110d160808401826001600160a01b03169052565b5060a08101516110ec60a08401826001600160a01b03169052565b5060c081015161110760c08401826001600160a01b03169052565b5060e081015161112260e08401826001600160a01b03169052565b50610100818101516001600160a01b038116848301526104fc565b600061014080835261115b818401865167ffffffffffffffff169052565b6020850151610160611177818601836001600160a01b03169052565b604087015191506101808281870152606088015192506101a08381880152608089015193506101c06111b3818901866001600160a01b03169052565b60a08a015194506101e06111d1818a01876001600160a01b03169052565b60c08b0151955061020086818b015260e08c015196506102206103a0818c01526111ff6104e08c0189610f6b565b97506101008d01516102407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec08d8b0301818e015261123d8a83610f97565b99506101208f015191506112766102608e0183805182526020810151602083015260408101516040830152606081015160608301525050565b998e01516102e08d0152878e01516103008d0152868e01516103208d0152858e0151996112a76103408e018c610ff4565b948e01516104008d015250918c01516001600160a01b03166104208b01528b015160ff166104408a01528a015167ffffffffffffffff9081166104608a0152908a0151805182166104808a0152602081015182166104a08a015260408101519091166104c0890152945061131a92505050565b915061082490506020830184611075565b8181038181111561064b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60008251611374818460208701610f47565b9190910192915050565b6020815260006106486020830184610f6b56fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220732408815ed3a9eb4bb4849e485231d66bc79a458b945fdcde68c84250df6fa964736f6c63430008110033608060405260405162000ed338038062000ed3833981016040819052620000269162000487565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ba565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b6200023e1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000eac60279139620002f8565b9392505050565b60006200018060008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200026a1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620001fa1760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000567565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f1919062000585565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b50506000910152565b6000806000606084860312156200049d57600080fd5b620004a8846200042e565b9250620004b8602085016200042e565b60408501519092506001600160401b0380821115620004d657600080fd5b818601915086601f830112620004eb57600080fd5b8151818111156200050057620005006200044b565b604051601f8201601f19908116603f011681019083821181831017156200052b576200052b6200044b565b816040528281528960208487010111156200054557600080fd5b6200055883602083016020880162000461565b80955050505050509250925092565b600082516200057b81846020870162000461565b9190910192915050565b6020815260008251806020840152620005a681604085016020870162000461565b601f01601f19169190910160400192915050565b6108c280620005ca6000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100d9578063f851a440146100f95761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61010e565b005b61006b61010e565b34801561008157600080fd5b5061006b610090366004610736565b610128565b61006b6100a3366004610751565b610165565b3480156100b457600080fd5b506100bd6101cc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100e557600080fd5b5061006b6100f4366004610736565b6101fd565b34801561010557600080fd5b506100bd61021d565b610116610279565b610126610121610329565b610333565b565b610130610357565b6001600160a01b0316330361015d5761015a8160405180602001604052806000815250600061038a565b50565b61015a61010e565b61016d610357565b6001600160a01b031633036101c4576101bf8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061038a915050565b505050565b6101bf61010e565b60006101d6610357565b6001600160a01b031633036101f2576101ed610329565b905090565b6101fa61010e565b90565b610205610357565b6001600160a01b0316330361015d5761015a816103b5565b6000610227610357565b6001600160a01b031633036101f2576101ed610357565b6060610263838360405180606001604052806027815260200161086660279139610409565b9392505050565b6001600160a01b03163b151590565b610281610357565b6001600160a01b031633036101265760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006101ed6104fd565b3660008037600080366000845af43d6000803e808015610352573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61039383610525565b6000825111806103a05750805b156101bf576103af838361023e565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103de610357565b604080516001600160a01b03928316815291841660208301520160405180910390a161015a81610565565b60606001600160a01b0384163b6104885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610320565b600080856001600160a01b0316856040516104a391906107f8565b600060405180830381855af49150503d80600081146104de576040519150601f19603f3d011682016040523d82523d6000602084013e6104e3565b606091505b50915091506104f382828661063d565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61037b565b61052e81610676565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105e15760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610320565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6060831561064c575081610263565b82511561065c5782518084602001fd5b8160405162461bcd60e51b81526004016103209190610814565b6001600160a01b0381163b6106f35760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610320565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610604565b80356001600160a01b038116811461073157600080fd5b919050565b60006020828403121561074857600080fd5b6102638261071a565b60008060006040848603121561076657600080fd5b61076f8461071a565b9250602084013567ffffffffffffffff8082111561078c57600080fd5b818601915086601f8301126107a057600080fd5b8135818111156107af57600080fd5b8760208285010111156107c157600080fd5b6020830194508093505050509250925092565b60005b838110156107ef5781810151838201526020016107d7565b50506000910152565b6000825161080a8184602087016107d4565b9190910192915050565b60208152600082518060208401526108338160408501602087016107d4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c1888b421836e473bfc3e72d153dc5c76569ce769e37cfa444506490e142daa564736f6c63430008110033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220926722652caf4926b786e78536c3d2b856584f8cdd35859cb44229c563119bdd64736f6c63430008110033", + Bin: "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6155d0806200007f6000396000f3fe608060405260043610620000e75760003560e01c80639dba32411162000089578063f0dae4941162000060578063f0dae494146200022d578063f26a62c61462000252578063f2fde38b1462000274578063f860cefa146200029957600080fd5b80639dba324114620001c7578063ac0425bc14620001e9578063bc45e0ae146200020b57600080fd5b80638da5cb5b11620000be5780638da5cb5b14620001635780639c683d1014620001835780639d4798e314620001a557600080fd5b8063030cb85e14620000f45780635491abea1462000132578063715018a6146200014957600080fd5b36620000ef57005b600080fd5b3480156200010157600080fd5b5060065462000116906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b620001166200014336600462002032565b620002bb565b3480156200015657600080fd5b506200016162000ee7565b005b3480156200017057600080fd5b506000546001600160a01b031662000116565b3480156200019057600080fd5b5060035462000116906001600160a01b031681565b348015620001b257600080fd5b5060055462000116906001600160a01b031681565b348015620001d457600080fd5b5060045462000116906001600160a01b031681565b348015620001f657600080fd5b5060085462000116906001600160a01b031681565b3480156200021857600080fd5b5060075462000116906001600160a01b031681565b3480156200023a57600080fd5b50620001616200024c36600462002143565b62000eff565b3480156200025f57600080fd5b5060025462000116906001600160a01b031681565b3480156200028157600080fd5b506200016162000293366004620021fd565b62000fce565b348015620002a657600080fd5b5060015462000116906001600160a01b031681565b600080600080600160009054906101000a90046001600160a01b03166001600160a01b03166311f022276040518163ffffffff1660e01b815260040160c060405180830381865afa15801562000315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033b91906200221d565b505093509350935050826001600160a01b031663e8eb1dc36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000383573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a99190620022b1565b856040015114620004015760405162461bcd60e51b815260206004820152601960248201527f53495f4d41585f444154415f53495a455f4d49534d415443480000000000000060448201526064015b60405180910390fd5b816001600160a01b031663e8eb1dc36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000440573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004669190620022b1565b856040015114620004ba5760405162461bcd60e51b815260206004820152601960248201527f53495f4d41585f444154415f53495a455f4d49534d41544348000000000000006044820152606401620003f8565b806001600160a01b031663e8eb1dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200051f9190620022b1565b856040015114620005735760405162461bcd60e51b815260206004820152601860248201527f495f4d41585f444154415f53495a455f4d49534d4154434800000000000000006044820152606401620003f8565b6000806000600160009054906101000a90046001600160a01b03166001600160a01b03166376768ab96040518163ffffffff1660e01b815260040160c060405180830381865afa158015620005cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005f291906200221d565b505093509350935050826001600160a01b031663e8eb1dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200063a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006609190620022b1565b886040015114620006b45760405162461bcd60e51b815260206004820152601960248201527f53495f4d41585f444154415f53495a455f4d49534d41544348000000000000006044820152606401620003f8565b816001600160a01b031663e8eb1dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015620006f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007199190620022b1565b8860400151146200076d5760405162461bcd60e51b815260206004820152601960248201527f53495f4d41585f444154415f53495a455f4d49534d41544348000000000000006044820152606401620003f8565b806001600160a01b031663e8eb1dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015620007ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007d29190620022b1565b886040015114620008265760405162461bcd60e51b815260206004820152601860248201527f495f4d41585f444154415f53495a455f4d49534d4154434800000000000000006044820152606401620003f8565b50505050505060006040516200083c90620019ab565b604051809103906000f08015801562000859573d6000803e3d6000fd5b509050600083604051602001620008719190620025ef565b604051602081830303815290604052805190602001206040516200089590620019b9565b8190604051809103906000f5905080158015620008b6573d6000803e3d6000fd5b5060015460608601518651610120810151610240909101516040517f57d3a2000000000000000000000000000000000000000000000000000000000081529495506000946001600160a01b03909416936357d3a200936200091e9389938993600401620026b7565b60a0604051808303816000875af11580156200093e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200096491906200273d565b90506000620009798385886000015162001064565b90506000620009918760000151608001518662001187565b6040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301529192509086169063f2fde38b90602401600060405180830381600087803b158015620009f257600080fd5b505af115801562000a07573d6000803e3d6000fd5b50508851306080918201528951604080516101208101825288516001600160a01b0390811682528983015181166020808401919091528a01518116828401528985015181166060808401919091528a015181169482019490945287841660a082015260048054851660c0830152600554851660e0830152600754851661010083015291517fd384644b000000000000000000000000000000000000000000000000000000008152938a16955063d384644b945062000ac893909101620027e3565b600060405180830381600087803b15801562000ae357600080fd5b505af115801562000af8573d6000803e3d6000fd5b5050505060005b8760c001515181101562000bd45783604001516001600160a01b0316636e7df3e78960c00151838151811062000b395762000b39620028c9565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b15801562000ba557600080fd5b505af115801562000bba573d6000803e3d6000fd5b50505050808062000bcb90620028df565b91505062000aff565b5060e08701516001600160a01b03161562000c6a5760408084015160e089015191517f1ff647900000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152911690631ff6479090602401600060405180830381600087803b15801562000c5057600080fd5b505af115801562000c65573d6000803e3d6000fd5b505050505b6020870151511562000d9757600087602001515167ffffffffffffffff81111562000c995762000c99620019d5565b60405190808252806020026020018201604052801562000cc3578160200160208202803683370190505b50905060005b88602001515181101562000d1357600182828151811062000cee5762000cee620028c9565b911515602092830291909101909101528062000d0a81620028df565b91505062000cc9565b5060208801516040517fa3ffb7720000000000000000000000000000000000000000000000000000000081526001600160a01b0387169163a3ffb7729162000d619190859060040162002926565b600060405180830381600087803b15801562000d7c57600080fd5b505af115801562000d91573d6000803e3d6000fd5b50505050505b6040517f13af40350000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301528516906313af403590602401600060405180830381600087803b15801562000df457600080fd5b505af115801562000e09573d6000803e3d6000fd5b5050505086608001511562000e315762000e31836020015188606001518960a00151620012b6565b606087810151602085810151608080880151888601516040808b01518b5160075483516001600160a01b03988916815295881698860198909852928616848301528a8616988401989098528c85169383019390935295831660a082015294821660c086015285821660e0860152918116610100850152905191811692908716917fd9bfd3bb3012f0caa103d1ba172692464d2de5c7b75877ce255c72147086a79d918190036101200190a3509195945050505050565b62000ef1620015c2565b62000efd60006200161e565b565b62000f09620015c2565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b038b8116919091179092556002805482168a8416179055600380548216898416179055600480548216888416179055600580548216878416179055600680548216868416179055600780548216858416179055600880549091169183169190911790556040517fc9d3947d22fa124aaec4c7e8c919f79016e2d7b48eee10568375d98b86460d1b90600090a15050505050505050565b62000fd8620015c2565b6001600160a01b038116620010565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401620003f8565b62001061816200161e565b50565b60035460405160009182916001600160a01b039091169085906200108890620019c7565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f080158015620010cb573d6000803e3d6000fd5b509050806001600160a01b0316631a72d54c868560000151600260009054906101000a90046001600160a01b03168761014001518861016001518961018001518a602001518b608001518c61020001518d61010001516040518b63ffffffff1660e01b8152600401620011489a9998979695949392919062002983565b600060405180830381600087803b1580156200116357600080fd5b505af115801562001178573d6000803e3d6000fd5b509293505050505b9392505050565b6006546040805160208101825260008082529151919283926001600160a01b03909116918591620011b890620019c7565b620011c69392919062002a00565b604051809103906000f080158015620011e3573d6000803e3d6000fd5b5060408051600180825281830190925291925060009190602080830190803683370190505090508481600081518110620012215762001221620028c9565b6001600160a01b0392831660209182029290920101526040517f946d92040000000000000000000000000000000000000000000000000000000081529083169063946d92049062001279908590859060040162002a37565b600060405180830381600087803b1580156200129457600080fd5b505af1158015620012a9573d6000803e3d6000fd5b5093979650505050505050565b6001600160a01b03821662001487576008546040517facd7d02a0000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015260248201849052600092169063acd7d02a90604401602060405180830381865afa15801562001331573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013579190620022b1565b6008546040517fd7c641e70000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015286811660248301526044820186905292935091169063d7c641e79083906064016000604051808303818588803b158015620013ca57600080fd5b505af1158015620013df573d6000803e3d6000fd5b5050604051600093503392504791508381818185875af1925050503d806000811462001428576040519150601f19603f3d011682016040523d82523d6000602084013e6200142d565b606091505b5050905080620014805760405162461bcd60e51b815260206004820152600d60248201527f526566756e64206661696c6564000000000000000000000000000000000000006044820152606401620003f8565b5050505050565b6008546040517facd7d02a0000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015260248201849052600092169063acd7d02a90604401602060405180830381865afa158015620014f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015199190620022b1565b9050620015326001600160a01b03841633868462001686565b6008546040517fd7c641e70000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301528581166024830152604482018590529091169063d7c641e790606401600060405180830381600087803b158015620015a257600080fd5b505af1158015620015b7573d6000803e3d6000fd5b50505050505b505050565b6000546001600160a01b0316331462000efd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620003f8565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526200171090859062001716565b50505050565b60006200176d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620018029092919063ffffffff16565b805190915015620015bd57808060200190518101906200178e919062002a5b565b620015bd5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401620003f8565b60606200181384846000856200181b565b949350505050565b606082471015620018955760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401620003f8565b6001600160a01b0385163b620018ee5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620003f8565b600080866001600160a01b031685876040516200190c919062002a7b565b60006040518083038185875af1925050503d80600081146200194b576040519150601f19603f3d011682016040523d82523d6000602084013e62001950565b606091505b5091509150620019628282866200196d565b979650505050505050565b606083156200197e57508162001180565b8251156200198f5782518084602001fd5b8160405162461bcd60e51b8152600401620003f8919062002a99565b61080b8062002aaf83390190565b61140e80620032ba83390190565b610ed380620046c883390190565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171562001a115762001a11620019d5565b60405290565b6040805190810167ffffffffffffffff8111828210171562001a115762001a11620019d5565b604051610260810167ffffffffffffffff8111828210171562001a115762001a11620019d5565b604051610100810167ffffffffffffffff8111828210171562001a115762001a11620019d5565b604051601f8201601f1916810167ffffffffffffffff8111828210171562001ab75762001ab7620019d5565b604052919050565b803567ffffffffffffffff8116811462001ad857600080fd5b919050565b6001600160a01b03811681146200106157600080fd5b803562001ad88162001add565b600082601f83011262001b1257600080fd5b813567ffffffffffffffff81111562001b2f5762001b2f620019d5565b62001b446020601f19601f8401160162001a8b565b81815284602083860101111562001b5a57600080fd5b816020850160208301376000918101602001919091529392505050565b600067ffffffffffffffff82111562001b945762001b94620019d5565b5060051b60200190565b600082601f83011262001bb057600080fd5b8135602062001bc962001bc38362001b77565b62001a8b565b82815260059290921b8401810191818101908684111562001be957600080fd5b8286015b8481101562001c06578035835291830191830162001bed565b509695505050505050565b60006080828403121562001c2457600080fd5b6040516080810181811067ffffffffffffffff8211171562001c4a5762001c4a620019d5565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b600082601f83011262001c8d57600080fd5b62001c9762001a17565b80604084018581111562001caa57600080fd5b845b8181101562001ccf5762001cc08162001abf565b84526020938401930162001cac565b509095945050505050565b80356003811062001ad857600080fd5b600081830360c081121562001cfe57600080fd5b62001d08620019eb565b9150608081121562001d1957600080fd5b5062001d2462001a17565b83601f84011262001d3457600080fd5b62001d3e62001a17565b80604085018681111562001d5157600080fd5b855b8181101562001d6d57803584526020938401930162001d53565b5081845262001d7d878262001c7b565b6020850152505050815262001d956080830162001cda565b602082015260a0820135604082015292915050565b803560ff8116811462001ad857600080fd5b60006060828403121562001dcf57600080fd5b62001dd9620019eb565b905062001de68262001abf565b815262001df66020830162001abf565b602082015262001e096040830162001abf565b604082015292915050565b60006103a0828403121562001e2857600080fd5b62001e3262001a3d565b905062001e3f8262001abf565b815262001e4f6020830162001af3565b6020820152604082013560408201526060820135606082015262001e766080830162001af3565b608082015262001e8960a0830162001af3565b60a082015260c082013560c082015260e082013567ffffffffffffffff8082111562001eb457600080fd5b62001ec28583860162001b00565b60e08401526101009150818401358181111562001ede57600080fd5b62001eec8682870162001b9e565b8385015250505061012062001f048482850162001c11565b908201526101a0828101356101408301526101c0808401356101608401526101e08085013561018085015261020062001f408782880162001cea565b848601526102c08601358386015262001f5d6102e0870162001af3565b8286015262001f70610300870162001daa565b818601525050505062001f87610320830162001abf565b61022082015262001f9d83610340840162001dbc565b61024082015292915050565b600082601f83011262001fbb57600080fd5b8135602062001fce62001bc38362001b77565b82815260059290921b8401810191818101908684111562001fee57600080fd5b8286015b8481101562001c06578035620020088162001add565b835291830191830162001ff2565b80151581146200106157600080fd5b803562001ad88162002016565b6000602082840312156200204557600080fd5b813567ffffffffffffffff808211156200205e57600080fd5b9083019061010082860312156200207457600080fd5b6200207e62001a64565b8235828111156200208e57600080fd5b6200209c8782860162001e14565b825250602083013582811115620020b257600080fd5b620020c08782860162001fa9565b60208301525060408301356040820152620020de6060840162001af3565b6060820152620020f16080840162002025565b608082015260a083013560a082015260c0830135828111156200211357600080fd5b620021218782860162001fa9565b60c0830152506200213560e0840162001af3565b60e082015295945050505050565b600080600080600080600080610100898b0312156200216157600080fd5b88356200216e8162001add565b97506020890135620021808162001add565b96506040890135620021928162001add565b95506060890135620021a48162001add565b94506080890135620021b68162001add565b935060a0890135620021c88162001add565b925060c0890135620021da8162001add565b915060e0890135620021ec8162001add565b809150509295985092959890939650565b6000602082840312156200221057600080fd5b8135620011808162001add565b60008060008060008060c087890312156200223757600080fd5b8651620022448162001add565b6020880151909650620022578162001add565b60408801519095506200226a8162001add565b60608801519094506200227d8162001add565b6080880151909350620022908162001add565b60a0880151909250620022a38162001add565b809150509295509295509295565b600060208284031215620022c457600080fd5b5051919050565b60005b83811015620022e8578181015183820152602001620022ce565b50506000910152565b600081518084526200230b816020860160208601620022cb565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b83811015620023515781518752958201959082019060010162002333565b509495945050505050565b600381106200237b57634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b6002811015620023a857825182526020928301929091019060010162002387565b505050602090810151906040840160005b6002811015620023e257835167ffffffffffffffff1682529282019290820190600101620023b9565b50508201519050620023f860808401826200235c565b506040015160a09190910152565b805167ffffffffffffffff16825260006103a060208301516200243460208601826001600160a01b03169052565b50604083015160408501526060830151606085015260808301516200246460808601826001600160a01b03169052565b5060a08301516200248060a08601826001600160a01b03169052565b5060c083015160c085015260e08301518160e0860152620024a482860182620022f1565b9150506101008084015185830382870152620024c183826200231f565b6101208681015180518983015260208101516101408a015260408101516101608a015260608101516101808a01529194509250905050506101408301516101a0818187015261016085015191506101c0828188015261018086015192506101e0838189015282870151935061020092506200253f838901856200237f565b908601516102c08801528501516001600160a01b03166102e087015284015160ff166103008601525061022083015167ffffffffffffffff908116610320860152610240840151805182166103408701526020810151821661036087015260408101519091166103808601525b509392505050565b600081518084526020808501945080840160005b83811015620023515781516001600160a01b031687529582019590820190600101620025c8565b60208152600082516101008060208501526200261061012085018362002406565b91506020850151601f1980868503016040870152620026308483620025b4565b935060408701516060870152606087015191506200265960808701836001600160a01b03169052565b608087015180151560a0880152915060a087015160c087015260c08701519150808685030160e087015250620026908382620025b4565b92505060e0850151620026ad828601826001600160a01b03169052565b5090949350505050565b6001600160a01b0386811682528581166020830152841660408201526101408101620027076060830185805182526020810151602083015260408101516040830152606081015160608301525050565b825167ffffffffffffffff90811660e0840152602084015181166101008401526040840151166101208301529695505050505050565b600060a082840312156200275057600080fd5b60405160a0810181811067ffffffffffffffff82111715620027765762002776620019d5565b6040528251620027868162001add565b81526020830151620027988162001add565b60208201526040830151620027ad8162001add565b60408201526060830151620027c28162001add565b60608201526080830151620027d78162001add565b60808201529392505050565b6000610140808352620027f98184018662002406565b9150506001600160a01b03835116602083015260208301516200282760408401826001600160a01b03169052565b5060408301516001600160a01b03811660608401525060608301516001600160a01b03811660808401525060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100620028ae818501836001600160a01b03169052565b8401516001600160a01b0381166101208501529050620025ac565b634e487b7160e01b600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200291f57634e487b7160e01b600052601160045260246000fd5b5060010190565b6040815260006200293b6040830185620025b4565b82810360208481019190915284518083528582019282019060005b818110156200297657845115158352938301939183019160010162002956565b5090979650505050505050565b60006101406001600160a01b03808e16845267ffffffffffffffff8d166020850152808c1660408501528a60608501528960808501528860a085015280881660c085015280871660e08501525060ff851661010084015280610120840152620029ef818401856200231f565b9d9c50505050505050505050505050565b60006001600160a01b0380861683528085166020840152506060604083015262002a2e6060830184620022f1565b95945050505050565b6001600160a01b0383168152604060208201526000620018136040830184620025b4565b60006020828403121562002a6e57600080fd5b8151620011808162002016565b6000825162002a8f818460208701620022cb565b9190910192915050565b602081526000620011806020830184620022f156fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61078d8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610579565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d161022e565b005b3480156100df57600080fd5b506100d16100ee36600461059d565b610242565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f366004610605565b6102c3565b34801561013057600080fd5b506100d161013f36600461059d565b61034b565b34801561015057600080fd5b506100d161015f366004610579565b61039a565b34801561017057600080fd5b506100a061017f366004610579565b610449565b6000806000836001600160a01b03166040516101c3907f5c60da1b00000000000000000000000000000000000000000000000000000000815260040190565b600060405180830381855afa9150503d80600081146101fe576040519150601f19603f3d011682016040523d82523d6000602084013e610203565b606091505b50915091508161021257600080fd5b8080602001905181019061022691906106db565b949350505050565b610236610488565b61024060006104fc565b565b61024a610488565b6040517f8f2839700000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b1580156102a757600080fd5b505af11580156102bb573d6000803e3d6000fd5b505050505050565b6102cb610488565b6040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03841690634f1ef28690349061031490869086906004016106f8565b6000604051808303818588803b15801561032d57600080fd5b505af1158015610341573d6000803e3d6000fd5b5050505050505050565b610353610488565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152831690633659cfe69060240161028d565b6103a2610488565b6001600160a01b03811661043d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610446816104fc565b50565b6000806000836001600160a01b03166040516101c3907ff851a44000000000000000000000000000000000000000000000000000000000815260040190565b6000546001600160a01b03163314610240576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610434565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461044657600080fd5b60006020828403121561058b57600080fd5b813561059681610564565b9392505050565b600080604083850312156105b057600080fd5b82356105bb81610564565b915060208301356105cb81610564565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561061a57600080fd5b833561062581610564565b9250602084013561063581610564565b9150604084013567ffffffffffffffff8082111561065257600080fd5b818601915086601f83011261066657600080fd5b813581811115610678576106786105d6565b604051601f8201601f19908116603f011681019083821181831017156106a0576106a06105d6565b816040528281528960208487010111156106b957600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156106ed57600080fd5b815161059681610564565b6001600160a01b038316815260006020604081840152835180604085015260005b8181101561073557858101830151858201606001528201610719565b506000606082860101526060601f19601f83011685010192505050939250505056fea2646970667358221220b5f17b9b80290312697ad0c26141bee28c1a1e448364e9044054c3ec2b5708bd64736f6c63430008110033608060405234801561001057600080fd5b506113ee806100206000396000f3fe6080604052600436106100225760003560e01c8063d384644b1461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f610054366004610d95565b61006b565b6100696100646101bd565b6102a1565b565b60006100756102ca565b6001600160a01b031614801561009b575060006100906102fd565b6001600160a01b0316145b80156100b7575060006100ac610325565b6001600160a01b0316145b156101b5576101b18160c0015183836040516024016100d792919061113d565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9e7e6aa70000000000000000000000000000000000000000000000000000000017905260e08601519087015191516001600160a01b0390921660248301529060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052608087015161034d565b5050565b6101b1610059565b600060043610156102155760405162461bcd60e51b815260206004820152600b60248201527f4e4f5f46554e435f53494700000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000336102206102ca565b6001600160a01b03160361023b576102366102fd565b610243565b610243610325565b90506001600160a01b0381163b61029c5760405162461bcd60e51b815260206004820152601360248201527f5441524745545f4e4f545f434f4e545241435400000000000000000000000000604482015260640161020c565b919050565b3660008037600080366000845af43d6000803e8080156102c0573d6000f35b3d6000fd5b505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6102ee565b60007f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6102ee565b61037860017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610461132b565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103146103a6576103a661134c565b6103d160017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61132b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc146103ff576103ff61134c565b61042a60017f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546e61132b565b7f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d146104585761045861134c565b61046181610480565b61046d858560006104d7565b61047983836000610502565b5050505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104a96102ca565b604080516001600160a01b03928316815291841660208301520160405180910390a16104d48161050b565b50565b6104e0836105e3565b6000825111806104ed5750805b156102c5576104fc8383610623565b50505050565b6104e083610651565b6001600160a01b0381166105875760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161020c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6105ec81610691565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610648838360405180606001604052806027815260200161139260279139610735565b90505b92915050565b61065a8161082b565b6040516001600160a01b038216907ff7eed2a7fabbf1bec8d55ed5e785cc76622376dde5df4ff15470551e030b813490600090a250565b6001600160a01b0381163b61070e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161020c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105aa565b60606001600160a01b0384163b6107b45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161020c565b600080856001600160a01b0316856040516107cf9190611362565b600060405180830381855af49150503d806000811461080a576040519150601f19603f3d011682016040523d82523d6000602084013e61080f565b606091505b509150915061081f8282866108cf565b925050505b9392505050565b6001600160a01b0381163b6108a85760405162461bcd60e51b815260206004820152603760248201527f455243313936373a206e6577207365636f6e6461727920696d706c656d656e7460448201527f6174696f6e206973206e6f74206120636f6e7472616374000000000000000000606482015260840161020c565b807f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6105aa565b606083156108de575081610824565b8251156108ee5782518084602001fd5b8160405162461bcd60e51b815260040161020c919061137e565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561094157610941610908565b60405290565b6040805190810167ffffffffffffffff8111828210171561094157610941610908565b604051610120810167ffffffffffffffff8111828210171561094157610941610908565b604051610260810167ffffffffffffffff8111828210171561094157610941610908565b604051601f8201601f1916810167ffffffffffffffff811182821017156109db576109db610908565b604052919050565b803567ffffffffffffffff8116811461029c57600080fd5b80356001600160a01b038116811461029c57600080fd5b600082601f830112610a2357600080fd5b813567ffffffffffffffff811115610a3d57610a3d610908565b610a506020601f19601f840116016109b2565b818152846020838601011115610a6557600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112610a9357600080fd5b8135602067ffffffffffffffff821115610aaf57610aaf610908565b8160051b610abe8282016109b2565b9283528481018201928281019087851115610ad857600080fd5b83870192505b84831015610af757823582529183019190830190610ade565b979650505050505050565b600060808284031215610b1457600080fd5b6040516080810181811067ffffffffffffffff82111715610b3757610b37610908565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b600082601f830112610b7957600080fd5b610b81610947565b806040840185811115610b9357600080fd5b845b81811015610bb457610ba6816109e3565b845260209384019301610b95565b509095945050505050565b80356003811061029c57600080fd5b600081830360c0811215610be157600080fd5b610be961091e565b91506080811215610bf957600080fd5b50610c02610947565b83601f840112610c1157600080fd5b610c19610947565b806040850186811115610c2b57600080fd5b855b81811015610c45578035845260209384019301610c2d565b50818452610c538782610b68565b60208501525050508152610c6960808301610bbf565b602082015260a0820135604082015292915050565b803560ff8116811461029c57600080fd5b600060608284031215610ca157600080fd5b610ca961091e565b9050610cb4826109e3565b8152610cc2602083016109e3565b6020820152610cd3604083016109e3565b604082015292915050565b60006101208284031215610cf157600080fd5b610cf961096a565b9050610d04826109fb565b8152610d12602083016109fb565b6020820152610d23604083016109fb565b6040820152610d34606083016109fb565b6060820152610d45608083016109fb565b6080820152610d5660a083016109fb565b60a0820152610d6760c083016109fb565b60c0820152610d7860e083016109fb565b60e0820152610100610d8b8184016109fb565b9082015292915050565b600080610140808486031215610daa57600080fd5b833567ffffffffffffffff80821115610dc257600080fd5b908501906103a08288031215610dd757600080fd5b610ddf61098e565b610de8836109e3565b8152610df6602084016109fb565b60208201526040830135604082015260608301356060820152610e1b608084016109fb565b6080820152610e2c60a084016109fb565b60a082015260c083013560c082015260e083013582811115610e4d57600080fd5b610e5989828601610a12565b60e0830152506101008084013583811115610e7357600080fd5b610e7f8a828701610a82565b8284015250506101209150610e9688838501610b02565b828201526101a0915081830135848201526101c09350838301356101608201526101e080840135610180830152610200610ed28a828701610bce565b848401526102c085013586840152610eed6102e086016109fb565b82840152610efe6103008601610c7e565b9083015250610f1061032084016109e3565b610220820152610f24886103408501610c8f565b61024082015280955050505050610f3e8460208501610cde565b90509250929050565b60005b83811015610f62578181015183820152602001610f4a565b50506000910152565b60008151808452610f83816020860160208601610f47565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b83811015610fc757815187529582019590820190600101610fab565b509495945050505050565b60038110610ff057634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b600281101561101b578251825260209283019290910190600101610ffc565b505050602090810151906040840160005b600281101561105357835167ffffffffffffffff168252928201929082019060010161102c565b505082015190506110676080840182610fd2565b506040015160a09190910152565b6001600160a01b038082511683528060208301511660208401528060408301511660408401525060608101516110b660608401826001600160a01b03169052565b5060808101516110d160808401826001600160a01b03169052565b5060a08101516110ec60a08401826001600160a01b03169052565b5060c081015161110760c08401826001600160a01b03169052565b5060e081015161112260e08401826001600160a01b03169052565b50610100818101516001600160a01b038116848301526104fc565b600061014080835261115b818401865167ffffffffffffffff169052565b6020850151610160611177818601836001600160a01b03169052565b604087015191506101808281870152606088015192506101a08381880152608089015193506101c06111b3818901866001600160a01b03169052565b60a08a015194506101e06111d1818a01876001600160a01b03169052565b60c08b0151955061020086818b015260e08c015196506102206103a0818c01526111ff6104e08c0189610f6b565b97506101008d01516102407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec08d8b0301818e015261123d8a83610f97565b99506101208f015191506112766102608e0183805182526020810151602083015260408101516040830152606081015160608301525050565b998e01516102e08d0152878e01516103008d0152868e01516103208d0152858e0151996112a76103408e018c610ff4565b948e01516104008d015250918c01516001600160a01b03166104208b01528b015160ff166104408a01528a015167ffffffffffffffff9081166104608a0152908a0151805182166104808a0152602081015182166104a08a015260408101519091166104c0890152945061131a92505050565b915061082490506020830184611075565b8181038181111561064b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60008251611374818460208701610f47565b9190910192915050565b6020815260006106486020830184610f6b56fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220577ece77367ad682a0e21e0d8e295a83ee6834bb13f8126c050804a725153bab64736f6c63430008110033608060405260405162000ed338038062000ed3833981016040819052620000269162000487565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ba565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b6200023e1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000eac60279139620002f8565b9392505050565b60006200018060008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200026a1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620001fa1760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000567565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f1919062000585565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b50506000910152565b6000806000606084860312156200049d57600080fd5b620004a8846200042e565b9250620004b8602085016200042e565b60408501519092506001600160401b0380821115620004d657600080fd5b818601915086601f830112620004eb57600080fd5b8151818111156200050057620005006200044b565b604051601f8201601f19908116603f011681019083821181831017156200052b576200052b6200044b565b816040528281528960208487010111156200054557600080fd5b6200055883602083016020880162000461565b80955050505050509250925092565b600082516200057b81846020870162000461565b9190910192915050565b6020815260008251806020840152620005a681604085016020870162000461565b601f01601f19169190910160400192915050565b6108c280620005ca6000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100d9578063f851a440146100f95761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61010e565b005b61006b61010e565b34801561008157600080fd5b5061006b610090366004610736565b610128565b61006b6100a3366004610751565b610165565b3480156100b457600080fd5b506100bd6101cc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100e557600080fd5b5061006b6100f4366004610736565b6101fd565b34801561010557600080fd5b506100bd61021d565b610116610279565b610126610121610329565b610333565b565b610130610357565b6001600160a01b0316330361015d5761015a8160405180602001604052806000815250600061038a565b50565b61015a61010e565b61016d610357565b6001600160a01b031633036101c4576101bf8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061038a915050565b505050565b6101bf61010e565b60006101d6610357565b6001600160a01b031633036101f2576101ed610329565b905090565b6101fa61010e565b90565b610205610357565b6001600160a01b0316330361015d5761015a816103b5565b6000610227610357565b6001600160a01b031633036101f2576101ed610357565b6060610263838360405180606001604052806027815260200161086660279139610409565b9392505050565b6001600160a01b03163b151590565b610281610357565b6001600160a01b031633036101265760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006101ed6104fd565b3660008037600080366000845af43d6000803e808015610352573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61039383610525565b6000825111806103a05750805b156101bf576103af838361023e565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103de610357565b604080516001600160a01b03928316815291841660208301520160405180910390a161015a81610565565b60606001600160a01b0384163b6104885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610320565b600080856001600160a01b0316856040516104a391906107f8565b600060405180830381855af49150503d80600081146104de576040519150601f19603f3d011682016040523d82523d6000602084013e6104e3565b606091505b50915091506104f382828661063d565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61037b565b61052e81610676565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105e15760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610320565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6060831561064c575081610263565b82511561065c5782518084602001fd5b8160405162461bcd60e51b81526004016103209190610814565b6001600160a01b0381163b6106f35760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610320565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610604565b80356001600160a01b038116811461073157600080fd5b919050565b60006020828403121561074857600080fd5b6102638261071a565b60008060006040848603121561076657600080fd5b61076f8461071a565b9250602084013567ffffffffffffffff8082111561078c57600080fd5b818601915086601f8301126107a057600080fd5b8135818111156107af57600080fd5b8760208285010111156107c157600080fd5b6020830194508093505050509250925092565b60005b838110156107ef5781810151838201526020016107d7565b50506000910152565b6000825161080a8184602087016107d4565b9190910192915050565b60208152600082518060208401526108338160408501602087016107d4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c1888b421836e473bfc3e72d153dc5c76569ce769e37cfa444506490e142daa564736f6c63430008110033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220287213a6d76e2daa343a74c7a15b362e571091223e904b1a810981c8f978ddc964736f6c63430008110033", } // RollupCreatorABI is the input ABI used to generate the binding from. @@ -19436,7 +19436,7 @@ func (_RollupEventInbox *RollupEventInboxFilterer) ParseInboxMessageDeliveredFro // RollupLibMetaData contains all meta data concerning the RollupLib contract. var RollupLibMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e95db47d5f9d903d8009146e67a06bf1a1c1aa43b4af40330ac198aacd6896d364736f6c63430008110033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204ff5badd5410966e841a491be9e669819dd5cee9190c60ef351e413ef886eebd64736f6c63430008110033", } // RollupLibABI is the input ABI used to generate the binding from. @@ -19609,7 +19609,7 @@ func (_RollupLib *RollupLibTransactorRaw) Transact(opts *bind.TransactOpts, meth // RollupProxyMetaData contains all meta data concerning the RollupProxy contract. var RollupProxyMetaData = &bind.MetaData{ ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"UpgradedSecondary\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"stakeToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"baseStake\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"loserStakeEscrow\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"chainConfig\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"miniStakeValues\",\"type\":\"uint256[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"delayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delaySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureSeconds\",\"type\":\"uint256\"}],\"internalType\":\"structISequencerInbox.MaxTimeVariation\",\"name\":\"sequencerInboxMaxTimeVariation\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroBlockEdgeHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroBigStepEdgeHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroSmallStepEdgeHeight\",\"type\":\"uint256\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"genesisAssertionState\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"genesisInboxCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"anyTrustFastConfirmer\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"numBigStepLevel\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"challengeGracePeriodBlocks\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"replenishRateInBasis\",\"type\":\"uint64\"}],\"internalType\":\"structBufferConfig\",\"name\":\"bufferConfig\",\"type\":\"tuple\"}],\"internalType\":\"structConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"contractIBridge\",\"name\":\"bridge\",\"type\":\"address\"},{\"internalType\":\"contractISequencerInbox\",\"name\":\"sequencerInbox\",\"type\":\"address\"},{\"internalType\":\"contractIInboxBase\",\"name\":\"inbox\",\"type\":\"address\"},{\"internalType\":\"contractIOutbox\",\"name\":\"outbox\",\"type\":\"address\"},{\"internalType\":\"contractIRollupEventInbox\",\"name\":\"rollupEventInbox\",\"type\":\"address\"},{\"internalType\":\"contractIEdgeChallengeManager\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rollupAdminLogic\",\"type\":\"address\"},{\"internalType\":\"contractIRollupUser\",\"name\":\"rollupUserLogic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"validatorWalletCreator\",\"type\":\"address\"}],\"internalType\":\"structContractDependencies\",\"name\":\"connectedContracts\",\"type\":\"tuple\"}],\"name\":\"initializeProxy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x608060405234801561001057600080fd5b506113ee806100206000396000f3fe6080604052600436106100225760003560e01c8063d384644b1461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f610054366004610d95565b61006b565b6100696100646101bd565b6102a1565b565b60006100756102ca565b6001600160a01b031614801561009b575060006100906102fd565b6001600160a01b0316145b80156100b7575060006100ac610325565b6001600160a01b0316145b156101b5576101b18160c0015183836040516024016100d792919061113d565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9e7e6aa70000000000000000000000000000000000000000000000000000000017905260e08601519087015191516001600160a01b0390921660248301529060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052608087015161034d565b5050565b6101b1610059565b600060043610156102155760405162461bcd60e51b815260206004820152600b60248201527f4e4f5f46554e435f53494700000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000336102206102ca565b6001600160a01b03160361023b576102366102fd565b610243565b610243610325565b90506001600160a01b0381163b61029c5760405162461bcd60e51b815260206004820152601360248201527f5441524745545f4e4f545f434f4e545241435400000000000000000000000000604482015260640161020c565b919050565b3660008037600080366000845af43d6000803e8080156102c0573d6000f35b3d6000fd5b505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6102ee565b60007f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6102ee565b61037860017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610461132b565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103146103a6576103a661134c565b6103d160017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61132b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc146103ff576103ff61134c565b61042a60017f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546e61132b565b7f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d146104585761045861134c565b61046181610480565b61046d858560006104d7565b61047983836000610502565b5050505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104a96102ca565b604080516001600160a01b03928316815291841660208301520160405180910390a16104d48161050b565b50565b6104e0836105e3565b6000825111806104ed5750805b156102c5576104fc8383610623565b50505050565b6104e083610651565b6001600160a01b0381166105875760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161020c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6105ec81610691565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610648838360405180606001604052806027815260200161139260279139610735565b90505b92915050565b61065a8161082b565b6040516001600160a01b038216907ff7eed2a7fabbf1bec8d55ed5e785cc76622376dde5df4ff15470551e030b813490600090a250565b6001600160a01b0381163b61070e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161020c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105aa565b60606001600160a01b0384163b6107b45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161020c565b600080856001600160a01b0316856040516107cf9190611362565b600060405180830381855af49150503d806000811461080a576040519150601f19603f3d011682016040523d82523d6000602084013e61080f565b606091505b509150915061081f8282866108cf565b925050505b9392505050565b6001600160a01b0381163b6108a85760405162461bcd60e51b815260206004820152603760248201527f455243313936373a206e6577207365636f6e6461727920696d706c656d656e7460448201527f6174696f6e206973206e6f74206120636f6e7472616374000000000000000000606482015260840161020c565b807f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6105aa565b606083156108de575081610824565b8251156108ee5782518084602001fd5b8160405162461bcd60e51b815260040161020c919061137e565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561094157610941610908565b60405290565b6040805190810167ffffffffffffffff8111828210171561094157610941610908565b604051610120810167ffffffffffffffff8111828210171561094157610941610908565b604051610260810167ffffffffffffffff8111828210171561094157610941610908565b604051601f8201601f1916810167ffffffffffffffff811182821017156109db576109db610908565b604052919050565b803567ffffffffffffffff8116811461029c57600080fd5b80356001600160a01b038116811461029c57600080fd5b600082601f830112610a2357600080fd5b813567ffffffffffffffff811115610a3d57610a3d610908565b610a506020601f19601f840116016109b2565b818152846020838601011115610a6557600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112610a9357600080fd5b8135602067ffffffffffffffff821115610aaf57610aaf610908565b8160051b610abe8282016109b2565b9283528481018201928281019087851115610ad857600080fd5b83870192505b84831015610af757823582529183019190830190610ade565b979650505050505050565b600060808284031215610b1457600080fd5b6040516080810181811067ffffffffffffffff82111715610b3757610b37610908565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b600082601f830112610b7957600080fd5b610b81610947565b806040840185811115610b9357600080fd5b845b81811015610bb457610ba6816109e3565b845260209384019301610b95565b509095945050505050565b80356003811061029c57600080fd5b600081830360c0811215610be157600080fd5b610be961091e565b91506080811215610bf957600080fd5b50610c02610947565b83601f840112610c1157600080fd5b610c19610947565b806040850186811115610c2b57600080fd5b855b81811015610c45578035845260209384019301610c2d565b50818452610c538782610b68565b60208501525050508152610c6960808301610bbf565b602082015260a0820135604082015292915050565b803560ff8116811461029c57600080fd5b600060608284031215610ca157600080fd5b610ca961091e565b9050610cb4826109e3565b8152610cc2602083016109e3565b6020820152610cd3604083016109e3565b604082015292915050565b60006101208284031215610cf157600080fd5b610cf961096a565b9050610d04826109fb565b8152610d12602083016109fb565b6020820152610d23604083016109fb565b6040820152610d34606083016109fb565b6060820152610d45608083016109fb565b6080820152610d5660a083016109fb565b60a0820152610d6760c083016109fb565b60c0820152610d7860e083016109fb565b60e0820152610100610d8b8184016109fb565b9082015292915050565b600080610140808486031215610daa57600080fd5b833567ffffffffffffffff80821115610dc257600080fd5b908501906103a08288031215610dd757600080fd5b610ddf61098e565b610de8836109e3565b8152610df6602084016109fb565b60208201526040830135604082015260608301356060820152610e1b608084016109fb565b6080820152610e2c60a084016109fb565b60a082015260c083013560c082015260e083013582811115610e4d57600080fd5b610e5989828601610a12565b60e0830152506101008084013583811115610e7357600080fd5b610e7f8a828701610a82565b8284015250506101209150610e9688838501610b02565b828201526101a0915081830135848201526101c09350838301356101608201526101e080840135610180830152610200610ed28a828701610bce565b848401526102c085013586840152610eed6102e086016109fb565b82840152610efe6103008601610c7e565b9083015250610f1061032084016109e3565b610220820152610f24886103408501610c8f565b61024082015280955050505050610f3e8460208501610cde565b90509250929050565b60005b83811015610f62578181015183820152602001610f4a565b50506000910152565b60008151808452610f83816020860160208601610f47565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b83811015610fc757815187529582019590820190600101610fab565b509495945050505050565b60038110610ff057634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b600281101561101b578251825260209283019290910190600101610ffc565b505050602090810151906040840160005b600281101561105357835167ffffffffffffffff168252928201929082019060010161102c565b505082015190506110676080840182610fd2565b506040015160a09190910152565b6001600160a01b038082511683528060208301511660208401528060408301511660408401525060608101516110b660608401826001600160a01b03169052565b5060808101516110d160808401826001600160a01b03169052565b5060a08101516110ec60a08401826001600160a01b03169052565b5060c081015161110760c08401826001600160a01b03169052565b5060e081015161112260e08401826001600160a01b03169052565b50610100818101516001600160a01b038116848301526104fc565b600061014080835261115b818401865167ffffffffffffffff169052565b6020850151610160611177818601836001600160a01b03169052565b604087015191506101808281870152606088015192506101a08381880152608089015193506101c06111b3818901866001600160a01b03169052565b60a08a015194506101e06111d1818a01876001600160a01b03169052565b60c08b0151955061020086818b015260e08c015196506102206103a0818c01526111ff6104e08c0189610f6b565b97506101008d01516102407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec08d8b0301818e015261123d8a83610f97565b99506101208f015191506112766102608e0183805182526020810151602083015260408101516040830152606081015160608301525050565b998e01516102e08d0152878e01516103008d0152868e01516103208d0152858e0151996112a76103408e018c610ff4565b948e01516104008d015250918c01516001600160a01b03166104208b01528b015160ff166104408a01528a015167ffffffffffffffff9081166104608a0152908a0151805182166104808a0152602081015182166104a08a015260408101519091166104c0890152945061131a92505050565b915061082490506020830184611075565b8181038181111561064b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60008251611374818460208701610f47565b9190910192915050565b6020815260006106486020830184610f6b56fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220732408815ed3a9eb4bb4849e485231d66bc79a458b945fdcde68c84250df6fa964736f6c63430008110033", + Bin: "0x608060405234801561001057600080fd5b506113ee806100206000396000f3fe6080604052600436106100225760003560e01c8063d384644b1461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f610054366004610d95565b61006b565b6100696100646101bd565b6102a1565b565b60006100756102ca565b6001600160a01b031614801561009b575060006100906102fd565b6001600160a01b0316145b80156100b7575060006100ac610325565b6001600160a01b0316145b156101b5576101b18160c0015183836040516024016100d792919061113d565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9e7e6aa70000000000000000000000000000000000000000000000000000000017905260e08601519087015191516001600160a01b0390921660248301529060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052608087015161034d565b5050565b6101b1610059565b600060043610156102155760405162461bcd60e51b815260206004820152600b60248201527f4e4f5f46554e435f53494700000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000336102206102ca565b6001600160a01b03160361023b576102366102fd565b610243565b610243610325565b90506001600160a01b0381163b61029c5760405162461bcd60e51b815260206004820152601360248201527f5441524745545f4e4f545f434f4e545241435400000000000000000000000000604482015260640161020c565b919050565b3660008037600080366000845af43d6000803e8080156102c0573d6000f35b3d6000fd5b505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6102ee565b60007f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6102ee565b61037860017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610461132b565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103146103a6576103a661134c565b6103d160017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61132b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc146103ff576103ff61134c565b61042a60017f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546e61132b565b7f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d146104585761045861134c565b61046181610480565b61046d858560006104d7565b61047983836000610502565b5050505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104a96102ca565b604080516001600160a01b03928316815291841660208301520160405180910390a16104d48161050b565b50565b6104e0836105e3565b6000825111806104ed5750805b156102c5576104fc8383610623565b50505050565b6104e083610651565b6001600160a01b0381166105875760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161020c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6105ec81610691565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610648838360405180606001604052806027815260200161139260279139610735565b90505b92915050565b61065a8161082b565b6040516001600160a01b038216907ff7eed2a7fabbf1bec8d55ed5e785cc76622376dde5df4ff15470551e030b813490600090a250565b6001600160a01b0381163b61070e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161020c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105aa565b60606001600160a01b0384163b6107b45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161020c565b600080856001600160a01b0316856040516107cf9190611362565b600060405180830381855af49150503d806000811461080a576040519150601f19603f3d011682016040523d82523d6000602084013e61080f565b606091505b509150915061081f8282866108cf565b925050505b9392505050565b6001600160a01b0381163b6108a85760405162461bcd60e51b815260206004820152603760248201527f455243313936373a206e6577207365636f6e6461727920696d706c656d656e7460448201527f6174696f6e206973206e6f74206120636f6e7472616374000000000000000000606482015260840161020c565b807f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6105aa565b606083156108de575081610824565b8251156108ee5782518084602001fd5b8160405162461bcd60e51b815260040161020c919061137e565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561094157610941610908565b60405290565b6040805190810167ffffffffffffffff8111828210171561094157610941610908565b604051610120810167ffffffffffffffff8111828210171561094157610941610908565b604051610260810167ffffffffffffffff8111828210171561094157610941610908565b604051601f8201601f1916810167ffffffffffffffff811182821017156109db576109db610908565b604052919050565b803567ffffffffffffffff8116811461029c57600080fd5b80356001600160a01b038116811461029c57600080fd5b600082601f830112610a2357600080fd5b813567ffffffffffffffff811115610a3d57610a3d610908565b610a506020601f19601f840116016109b2565b818152846020838601011115610a6557600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112610a9357600080fd5b8135602067ffffffffffffffff821115610aaf57610aaf610908565b8160051b610abe8282016109b2565b9283528481018201928281019087851115610ad857600080fd5b83870192505b84831015610af757823582529183019190830190610ade565b979650505050505050565b600060808284031215610b1457600080fd5b6040516080810181811067ffffffffffffffff82111715610b3757610b37610908565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b600082601f830112610b7957600080fd5b610b81610947565b806040840185811115610b9357600080fd5b845b81811015610bb457610ba6816109e3565b845260209384019301610b95565b509095945050505050565b80356003811061029c57600080fd5b600081830360c0811215610be157600080fd5b610be961091e565b91506080811215610bf957600080fd5b50610c02610947565b83601f840112610c1157600080fd5b610c19610947565b806040850186811115610c2b57600080fd5b855b81811015610c45578035845260209384019301610c2d565b50818452610c538782610b68565b60208501525050508152610c6960808301610bbf565b602082015260a0820135604082015292915050565b803560ff8116811461029c57600080fd5b600060608284031215610ca157600080fd5b610ca961091e565b9050610cb4826109e3565b8152610cc2602083016109e3565b6020820152610cd3604083016109e3565b604082015292915050565b60006101208284031215610cf157600080fd5b610cf961096a565b9050610d04826109fb565b8152610d12602083016109fb565b6020820152610d23604083016109fb565b6040820152610d34606083016109fb565b6060820152610d45608083016109fb565b6080820152610d5660a083016109fb565b60a0820152610d6760c083016109fb565b60c0820152610d7860e083016109fb565b60e0820152610100610d8b8184016109fb565b9082015292915050565b600080610140808486031215610daa57600080fd5b833567ffffffffffffffff80821115610dc257600080fd5b908501906103a08288031215610dd757600080fd5b610ddf61098e565b610de8836109e3565b8152610df6602084016109fb565b60208201526040830135604082015260608301356060820152610e1b608084016109fb565b6080820152610e2c60a084016109fb565b60a082015260c083013560c082015260e083013582811115610e4d57600080fd5b610e5989828601610a12565b60e0830152506101008084013583811115610e7357600080fd5b610e7f8a828701610a82565b8284015250506101209150610e9688838501610b02565b828201526101a0915081830135848201526101c09350838301356101608201526101e080840135610180830152610200610ed28a828701610bce565b848401526102c085013586840152610eed6102e086016109fb565b82840152610efe6103008601610c7e565b9083015250610f1061032084016109e3565b610220820152610f24886103408501610c8f565b61024082015280955050505050610f3e8460208501610cde565b90509250929050565b60005b83811015610f62578181015183820152602001610f4a565b50506000910152565b60008151808452610f83816020860160208601610f47565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b83811015610fc757815187529582019590820190600101610fab565b509495945050505050565b60038110610ff057634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b600281101561101b578251825260209283019290910190600101610ffc565b505050602090810151906040840160005b600281101561105357835167ffffffffffffffff168252928201929082019060010161102c565b505082015190506110676080840182610fd2565b506040015160a09190910152565b6001600160a01b038082511683528060208301511660208401528060408301511660408401525060608101516110b660608401826001600160a01b03169052565b5060808101516110d160808401826001600160a01b03169052565b5060a08101516110ec60a08401826001600160a01b03169052565b5060c081015161110760c08401826001600160a01b03169052565b5060e081015161112260e08401826001600160a01b03169052565b50610100818101516001600160a01b038116848301526104fc565b600061014080835261115b818401865167ffffffffffffffff169052565b6020850151610160611177818601836001600160a01b03169052565b604087015191506101808281870152606088015192506101a08381880152608089015193506101c06111b3818901866001600160a01b03169052565b60a08a015194506101e06111d1818a01876001600160a01b03169052565b60c08b0151955061020086818b015260e08c015196506102206103a0818c01526111ff6104e08c0189610f6b565b97506101008d01516102407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec08d8b0301818e015261123d8a83610f97565b99506101208f015191506112766102608e0183805182526020810151602083015260408101516040830152606081015160608301525050565b998e01516102e08d0152878e01516103008d0152868e01516103208d0152858e0151996112a76103408e018c610ff4565b948e01516104008d015250918c01516001600160a01b03166104208b01528b015160ff166104408a01528a015167ffffffffffffffff9081166104608a0152908a0151805182166104808a0152602081015182166104a08a015260408101519091166104c0890152945061131a92505050565b915061082490506020830184611075565b8181038181111561064b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60008251611374818460208701610f47565b9190910192915050565b6020815260006106486020830184610f6b56fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220577ece77367ad682a0e21e0d8e295a83ee6834bb13f8126c050804a725153bab64736f6c63430008110033", } // RollupProxyABI is the input ABI used to generate the binding from. @@ -20412,7 +20412,7 @@ func (_RollupProxy *RollupProxyFilterer) ParseUpgradedSecondary(log types.Log) ( // RollupReaderMetaData contains all meta data concerning the RollupReader contract. var RollupReaderMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"contractIOldRollup\",\"name\":\"_rollup\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nodeNum\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"parentNodeHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"nodeHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"executionHash\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"beforeState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"afterState\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structIOldRollup.Assertion\",\"name\":\"assertion\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"afterInboxBatchAcc\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inboxMaxCount\",\"type\":\"uint256\"}],\"name\":\"NodeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nodeNum\",\"type\":\"uint64\"}],\"name\":\"getNode\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"challengeHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"confirmData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"prevNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"deadlineBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"noChildConfirmedBeforeBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"stakerCount\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"childStakerCount\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"firstChildBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"latestChildNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"createdAtBlock\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"nodeHash\",\"type\":\"bytes32\"}],\"internalType\":\"structNode\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"getStaker\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountStaked\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"latestStakedNode\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"currentChallenge\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isStaked\",\"type\":\"bool\"}],\"internalType\":\"structOldStaker\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"stakerNum\",\"type\":\"uint64\"}],\"name\":\"getStakerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"isValidator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestConfirmed\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollup\",\"outputs\":[{\"internalType\":\"contractIOldRollup\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakerCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorWalletCreator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wasmModuleRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a060405234801561001057600080fd5b50604051610be3380380610be383398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610b206100c3600039600081816101a5015281816101f6015281816102b601528181610333015281816104500152818161051b0152818161058a0152818161060e01526106a50152610b206000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063a23c44b111610076578063cb23bcb51161005b578063cb23bcb5146101a0578063dff69787146101c7578063facd743b146101cf57600080fd5b8063a23c44b11461012f578063bc45e0ae1461019857600080fd5b806365f7f80d146100a85780636ddd3744146100ce5780638ee1a126146100f957806392c8134c1461010f575b600080fd5b6100b06101f2565b60405167ffffffffffffffff90911681526020015b60405180910390f35b6100e16100dc36600461072b565b61027b565b6040516001600160a01b0390911681526020016100c5565b61010161032f565b6040519081526020016100c5565b61012261011d36600461072b565b6103b3565b6040516100c5919061074f565b61014261013d366004610868565b6104bc565b6040516100c59190600060a08201905082518252602083015167ffffffffffffffff8082166020850152806040860151166040850152806060860151166060850152505060808301511515608083015292915050565b6100e1610586565b6100e17f000000000000000000000000000000000000000000000000000000000000000081565b6100b061060a565b6101e26101dd366004610868565b61066a565b60405190151581526020016100c5565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166365f7f80d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610252573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102769190610895565b905090565b6040517f6ddd374400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636ddd374490602401602060405180830381865afa158015610305573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032991906108b2565b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638ee1a1266040518163ffffffff1660e01b8152600401602060405180830381865afa15801561038f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027691906108cf565b6040805161018081018252600080825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e0820181905261010082018190526101208201819052610140820181905261016082015290517f92c8134c00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906392c8134c9060240161018060405180830381865afa158015610498573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610939565b6040805160a08101825260008082526020820181905281830181905260608201819052608082015290517fa23c44b10000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a23c44b19060240160a060405180830381865afa158015610562573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610a1b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bc45e0ae6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027691906108b2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff697876040518163ffffffff1660e01b8152600401602060405180830381865afa158015610252573d6000803e3d6000fd5b6040517ffacd743b0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063facd743b90602401602060405180830381865afa1580156106ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610acf565b67ffffffffffffffff8116811461072857600080fd5b50565b60006020828403121561073d57600080fd5b813561074881610712565b9392505050565b600061018082019050825182526020830151602083015260408301516040830152606083015161078b606084018267ffffffffffffffff169052565b5060808301516107a7608084018267ffffffffffffffff169052565b5060a08301516107c360a084018267ffffffffffffffff169052565b5060c08301516107df60c084018267ffffffffffffffff169052565b5060e08301516107fb60e084018267ffffffffffffffff169052565b506101008381015167ffffffffffffffff81168483015250506101208381015167ffffffffffffffff81168483015250506101408381015167ffffffffffffffff811684830152505061016092830151919092015290565b6001600160a01b038116811461072857600080fd5b60006020828403121561087a57600080fd5b813561074881610853565b805161089081610712565b919050565b6000602082840312156108a757600080fd5b815161074881610712565b6000602082840312156108c457600080fd5b815161074881610853565b6000602082840312156108e157600080fd5b5051919050565b604051610180810167ffffffffffffffff81118282101715610933577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610180828403121561094c57600080fd5b6109546108e8565b82518152602083015160208201526040830151604082015261097860608401610885565b606082015261098960808401610885565b608082015261099a60a08401610885565b60a08201526109ab60c08401610885565b60c08201526109bc60e08401610885565b60e08201526101006109cf818501610885565b908201526101206109e1848201610885565b908201526101406109f3848201610885565b90820152610160928301519281019290925250919050565b8051801515811461089057600080fd5b600060a08284031215610a2d57600080fd5b60405160a0810181811067ffffffffffffffff82111715610a77577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825181526020830151610a8c81610712565b60208201526040830151610a9f81610712565b60408201526060830151610ab281610712565b6060820152610ac360808401610a0b565b60808201529392505050565b600060208284031215610ae157600080fd5b61074882610a0b56fea26469706673582212203c3480b4b424cedcf330b2d11dd5f962c39c04fab5203cf33888313dc4bda1b564736f6c63430008110033", + Bin: "0x60a060405234801561001057600080fd5b50604051610be3380380610be383398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610b206100c3600039600081816101a5015281816101f6015281816102b601528181610333015281816104500152818161051b0152818161058a0152818161060e01526106a50152610b206000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063a23c44b111610076578063cb23bcb51161005b578063cb23bcb5146101a0578063dff69787146101c7578063facd743b146101cf57600080fd5b8063a23c44b11461012f578063bc45e0ae1461019857600080fd5b806365f7f80d146100a85780636ddd3744146100ce5780638ee1a126146100f957806392c8134c1461010f575b600080fd5b6100b06101f2565b60405167ffffffffffffffff90911681526020015b60405180910390f35b6100e16100dc36600461072b565b61027b565b6040516001600160a01b0390911681526020016100c5565b61010161032f565b6040519081526020016100c5565b61012261011d36600461072b565b6103b3565b6040516100c5919061074f565b61014261013d366004610868565b6104bc565b6040516100c59190600060a08201905082518252602083015167ffffffffffffffff8082166020850152806040860151166040850152806060860151166060850152505060808301511515608083015292915050565b6100e1610586565b6100e17f000000000000000000000000000000000000000000000000000000000000000081565b6100b061060a565b6101e26101dd366004610868565b61066a565b60405190151581526020016100c5565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166365f7f80d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610252573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102769190610895565b905090565b6040517f6ddd374400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636ddd374490602401602060405180830381865afa158015610305573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032991906108b2565b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638ee1a1266040518163ffffffff1660e01b8152600401602060405180830381865afa15801561038f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027691906108cf565b6040805161018081018252600080825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e0820181905261010082018190526101208201819052610140820181905261016082015290517f92c8134c00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906392c8134c9060240161018060405180830381865afa158015610498573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610939565b6040805160a08101825260008082526020820181905281830181905260608201819052608082015290517fa23c44b10000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a23c44b19060240160a060405180830381865afa158015610562573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610a1b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bc45e0ae6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027691906108b2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff697876040518163ffffffff1660e01b8152600401602060405180830381865afa158015610252573d6000803e3d6000fd5b6040517ffacd743b0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063facd743b90602401602060405180830381865afa1580156106ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610acf565b67ffffffffffffffff8116811461072857600080fd5b50565b60006020828403121561073d57600080fd5b813561074881610712565b9392505050565b600061018082019050825182526020830151602083015260408301516040830152606083015161078b606084018267ffffffffffffffff169052565b5060808301516107a7608084018267ffffffffffffffff169052565b5060a08301516107c360a084018267ffffffffffffffff169052565b5060c08301516107df60c084018267ffffffffffffffff169052565b5060e08301516107fb60e084018267ffffffffffffffff169052565b506101008381015167ffffffffffffffff81168483015250506101208381015167ffffffffffffffff81168483015250506101408381015167ffffffffffffffff811684830152505061016092830151919092015290565b6001600160a01b038116811461072857600080fd5b60006020828403121561087a57600080fd5b813561074881610853565b805161089081610712565b919050565b6000602082840312156108a757600080fd5b815161074881610712565b6000602082840312156108c457600080fd5b815161074881610853565b6000602082840312156108e157600080fd5b5051919050565b604051610180810167ffffffffffffffff81118282101715610933577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610180828403121561094c57600080fd5b6109546108e8565b82518152602083015160208201526040830151604082015261097860608401610885565b606082015261098960808401610885565b608082015261099a60a08401610885565b60a08201526109ab60c08401610885565b60c08201526109bc60e08401610885565b60e08201526101006109cf818501610885565b908201526101206109e1848201610885565b908201526101406109f3848201610885565b90820152610160928301519281019290925250919050565b8051801515811461089057600080fd5b600060a08284031215610a2d57600080fd5b60405160a0810181811067ffffffffffffffff82111715610a77577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825181526020830151610a8c81610712565b60208201526040830151610a9f81610712565b60408201526060830151610ab281610712565b6060820152610ac360808401610a0b565b60808201529392505050565b600060208284031215610ae157600080fd5b61074882610a0b56fea2646970667358221220e7d173d7427911ae1261bfcb8df4436ba036e779c448fabcffea3e87feb3abf864736f6c63430008110033", } // RollupReaderABI is the input ABI used to generate the binding from. @@ -21031,7 +21031,7 @@ func (_RollupReader *RollupReaderFilterer) ParseNodeCreated(log types.Log) (*Rol // RollupUserLogicMetaData contains all meta data concerning the RollupUserLogic contract. var RollupUserLogicMetaData = &bind.MetaData{ ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sendRoot\",\"type\":\"bytes32\"}],\"name\":\"AssertionConfirmed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"parentAssertionHash\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"prevPrevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sequencerBatchAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"internalType\":\"structBeforeStateData\",\"name\":\"beforeStateData\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"beforeState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"afterState\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"structAssertionInputs\",\"name\":\"assertion\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"afterInboxBatchAcc\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inboxMaxCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"}],\"name\":\"AssertionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"challengeIndex\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asserter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"challengedAssertion\",\"type\":\"uint64\"}],\"name\":\"RollupChallengeStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"machineHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"RollupInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"UpgradedSecondary\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"withdrawalAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"initialBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"finalBalance\",\"type\":\"uint256\"}],\"name\":\"UserStakeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"initialBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"finalBalance\",\"type\":\"uint256\"}],\"name\":\"UserWithdrawableFundsUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VALIDATOR_AFK_BLOCKS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_stakerMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountStaked\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"latestStakedAssertion\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isStaked\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"withdrawalAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakerAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"addToDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"amountStaked\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"anyTrustFastConfirmer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"chainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"challengeGracePeriodBlocks\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"challengeManager\",\"outputs\":[{\"internalType\":\"contractIEdgeChallengeManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"prevAssertionHash\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"state\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"inboxAcc\",\"type\":\"bytes32\"}],\"name\":\"computeAssertionHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"prevAssertionHash\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"confirmState\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"winningEdgeId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"prevConfig\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"inboxAcc\",\"type\":\"bytes32\"}],\"name\":\"confirmAssertion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"confirmPeriodBlocks\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"parentAssertionHash\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"confirmState\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"inboxAcc\",\"type\":\"bytes32\"}],\"name\":\"fastConfirmAssertion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"prevPrevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sequencerBatchAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"internalType\":\"structBeforeStateData\",\"name\":\"beforeStateData\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"beforeState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"afterState\",\"type\":\"tuple\"}],\"internalType\":\"structAssertionInputs\",\"name\":\"assertion\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"expectedAssertionHash\",\"type\":\"bytes32\"}],\"name\":\"fastConfirmNewAssertion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisAssertionHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"getAssertion\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"firstChildBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"secondChildBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"createdAtBlock\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isFirstChild\",\"type\":\"bool\"},{\"internalType\":\"enumAssertionStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"configHash\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionNode\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"getAssertionCreationBlockForLogLookup\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"getFirstChildCreationBlock\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"getSecondChildCreationBlock\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"getStaker\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountStaked\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"latestStakedAssertion\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isStaked\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"withdrawalAddress\",\"type\":\"address\"}],\"internalType\":\"structIRollupCore.Staker\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"stakerNum\",\"type\":\"uint64\"}],\"name\":\"getStakerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inbox\",\"outputs\":[{\"internalType\":\"contractIInboxBase\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakeToken\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"isFirstChild\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"isPending\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"isStaked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isValidator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestConfirmed\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"latestStakedAssertion\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loserStakeEscrow\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumAssertionPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"prevPrevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sequencerBatchAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"internalType\":\"structBeforeStateData\",\"name\":\"beforeStateData\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"beforeState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"afterState\",\"type\":\"tuple\"}],\"internalType\":\"structAssertionInputs\",\"name\":\"assertion\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"expectedAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"withdrawalAddress\",\"type\":\"address\"}],\"name\":\"newStakeOnNewAssertion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"prevPrevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sequencerBatchAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"internalType\":\"structBeforeStateData\",\"name\":\"beforeStateData\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"beforeState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"afterState\",\"type\":\"tuple\"}],\"internalType\":\"structAssertionInputs\",\"name\":\"assertion\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"expectedAssertionHash\",\"type\":\"bytes32\"}],\"name\":\"newStakeOnNewAssertion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"outbox\",\"outputs\":[{\"internalType\":\"contractIOutbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"target\",\"type\":\"uint256\"}],\"name\":\"reduceDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeWhitelistAfterFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeWhitelistAfterValidatorAfk\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"returnOldDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupDeploymentBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupEventInbox\",\"outputs\":[{\"internalType\":\"contractIRollupEventInbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sequencerInbox\",\"outputs\":[{\"internalType\":\"contractISequencerInbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"prevPrevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sequencerBatchAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"internalType\":\"structBeforeStateData\",\"name\":\"beforeStateData\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"beforeState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"afterState\",\"type\":\"tuple\"}],\"internalType\":\"structAssertionInputs\",\"name\":\"assertion\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"expectedAssertionHash\",\"type\":\"bytes32\"}],\"name\":\"stakeOnNewAssertion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakeToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakerCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalWithdrawableFunds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionState\",\"name\":\"state\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"prevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inboxAcc\",\"type\":\"bytes32\"}],\"name\":\"validateAssertionHash\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"name\":\"validateConfig\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorWalletCreator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorWhitelistDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wasmModuleRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawStakerFunds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"withdrawableFunds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60e0604052620000196200003a60201b62001dd91760201c565b15156080523060a0524660c0523480156200003357600080fd5b5062000108565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b1790529051600091829182916064916200007a9190620000d7565b600060405180830381855afa9150503d8060008114620000b7576040519150601f19603f3d011682016040523d82523d6000602084013e620000bc565b606091505b5091509150818015620000d0575080516020145b9250505090565b6000825160005b81811015620000fa5760208186018101518583015201620000de565b506000920191825250919050565b60805160a05160c0516147846200014d6000396000611a330152600081816114ae01528181611aa90152611b3f015260008181610d7b0152612efb01526147846000f3fe608060405234801561001057600080fd5b50600436106103785760003560e01c80636177fd18116101d3578063c2c2e68e11610104578063e8bd4922116100a2578063f065de3f1161007c578063f065de3f146108fe578063f3f0a03e14610911578063facd743b14610924578063fb0e722b1461094757600080fd5b8063e8bd492214610831578063ee35f327146108cd578063ef40a670146108d557600080fd5b8063dff69787116100de578063dff69787146107f0578063e51019a6146107f8578063e531d8c71461080b578063e78cea921461081e57600080fd5b8063c2c2e68e146107c2578063c4d66de8146107ca578063ce11e6ab146107dd57600080fd5b806388302884116101715780639a8a05921161014b5780639a8a05921461068d578063a23c44b114610696578063aa38a6e71461079c578063bc45e0ae146107af57600080fd5b8063883028841461065c5780638da5cb5b1461067c5780638ee1a1261461068457600080fd5b80636ddd3744116101ad5780636ddd37441461062457806371ef232c146106375780637300201c1461064057806376e7e23b1461065357600080fd5b80636177fd18146105d35780636420fb9f1461060957806365f7f80d1461061c57600080fd5b8063353325e0116102ad57806352d1902d1161024b57806357ef4ab91161022557806357ef4ab9146105a55780635c975abb146105ad5780636096686d146105b857806361373919146105cb57600080fd5b806352d1902d1461057257806355840a581461057a57806356bbc9e61461059257600080fd5b806345e38b641161028757806345e38b64146105395780634ceccfe51461054257806350f32f681461054c57806351ed6a301461055f57600080fd5b8063353325e0146104f25780633b86de19146104fa5780633be680ea1461050d57600080fd5b80631b1689e91161031a5780632e7acfa6116102f45780632e7acfa61461048f5780632f30cabd146104a357806330836228146104cc57806333635fc2146104df57600080fd5b80631b1689e9146104475780631e83d30f146104505780632abdd2301461046357600080fd5b8063117155851161035657806311715585146103d557806312ab3d3b1461040157806313c56ca71461041e57806318baaab91461043f57600080fd5b8063023a96fe1461037d57806304972af9146103ad57806310b98a35146103c2575b600080fd5b606954610390906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6103c06103bb366004613d49565b61095a565b005b6103c06103d0366004613d88565b610974565b6103e86103e3366004613de6565b610d5b565b60405167ffffffffffffffff90911681526020016103a4565b607a5461040e9060ff1681565b60405190151581526020016103a4565b61043161042c366004613de6565b610d77565b6040519081526020016103a4565b6103c0610ebf565b61043160795481565b6103c061045e366004613de6565b610f93565b610431610471366004613e14565b6001600160a01b031660009081526076602052604090206001015490565b6066546103e89067ffffffffffffffff1681565b6104316104b1366004613e14565b6001600160a01b031660009081526077602052604090205490565b61040e6104da366004613de6565b61100a565b6104316104ed366004613e31565b611026565b61043161104b565b6103c0610508366004613e7b565b611087565b6069546103e89074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b61043160715481565b6104316203138081565b6103c061055a366004613ea8565b611428565b607054610390906001600160a01b031681565b6104316114a1565b607a546103909061010090046001600160a01b031681565b6103e86105a0366004613de6565b611566565b6103c0611589565b60335460ff1661040e565b6103c06105c6366004613ef4565b611601565b610431611674565b61040e6105e1366004613e14565b6001600160a01b0316600090815260766020526040902060020154600160401b900460ff1690565b6103c0610617366004613e7b565b6116f7565b607354610431565b610390610632366004613f4a565b6118bc565b61043160785481565b6103c061064e366004613f67565b6118f6565b61043160675481565b61066f61066a366004613de6565b611907565b6040516103a49190613fd3565b6103906119d3565b61043160685481565b61043160655481565b6107456106a4366004613e14565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506001600160a01b03908116600090815260766020908152604091829020825160a081018452815481526001820154928101929092526002015467ffffffffffffffff81169282019290925260ff600160401b830416151560608201526901000000000000000000909104909116608082015290565b6040516103a49190600060a082019050825182526020830151602083015267ffffffffffffffff60408401511660408301526060830151151560608301526001600160a01b03608084015116608083015292915050565b606d54610390906001600160a01b031681565b606e54610390906001600160a01b031681565b6103c06119dd565b6103c06107d8366004613e14565b611a9f565b606c54610390906001600160a01b031681565b6075546103e8565b6103c0610806366004614034565b611c44565b61040e610819366004613de6565b611cab565b606b54610390906001600160a01b031681565b61088d61083f366004613e14565b60766020526000908152604090208054600182015460029092015490919067ffffffffffffffff811690600160401b810460ff1690690100000000000000000090046001600160a01b031685565b60408051958652602086019490945267ffffffffffffffff9092169284019290925290151560608301526001600160a01b0316608082015260a0016103a4565b610390611cdb565b6104316108e3366004613e14565b6001600160a01b031660009081526076602052604090205490565b606f54610390906001600160a01b031681565b6103c061091f366004614072565b611d62565b61040e610932366004613e14565b60726020526000908152604090205460ff1681565b606a54610390906001600160a01b031681565b6109708161096784611e9f565b60010154611f00565b5050565b3360009081526072602052604090205460ff16806109945750607a5460ff165b6109d55760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b60448201526064015b60405180910390fd5b6109dd612005565b60006109e887611e9f565b905060006109f587611e9f565b9050610a05848260010154611f00565b610a156080850160608601613f4a565b8254610a329190600160801b900467ffffffffffffffff166140b4565b67ffffffffffffffff16431015610a8b5760405162461bcd60e51b815260206004820152600f60248201527f4245464f52455f444541444c494e45000000000000000000000000000000000060448201526064016109cc565b6073548714610adc5760405162461bcd60e51b815260206004820152601960248201527f505245565f4e4f545f4c41544553545f434f4e4649524d45440000000000000060448201526064016109cc565b8054600160401b900467ffffffffffffffff1615610d45576000610b066060860160408701613e14565b6001600160a01b031663fda2892e876040518263ffffffff1660e01b8152600401610b3391815260200190565b6101e060405180830381865afa158015610b51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b75919061417e565b9050888160e0015114610bca5760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f57494e4e45520000000000000000000000000000000000000000000060448201526064016109cc565b60018161016001516001811115610be357610be3613f9f565b14610c305760405162461bcd60e51b815260206004820152601260248201527f454447455f4e4f545f434f4e4649524d4544000000000000000000000000000060448201526064016109cc565b80610140015167ffffffffffffffff16600003610c8f5760405162461bcd60e51b815260206004820152601760248201527f5a45524f5f434f4e4649524d45445f41545f424c4f434b00000000000000000060448201526064016109cc565b606954610140820151610cc49174010000000000000000000000000000000000000000900467ffffffffffffffff16906140b4565b67ffffffffffffffff16431015610d435760405162461bcd60e51b815260206004820152602160248201527f4348414c4c454e47455f47524143455f504552494f445f4e4f545f504153534560448201527f440000000000000000000000000000000000000000000000000000000000000060648201526084016109cc565b505b610d5188888886612058565b5050505050505050565b6000610d6682611e9f565b5467ffffffffffffffff1692915050565b60007f000000000000000000000000000000000000000000000000000000000000000015610e01576000828152607b602052604090205480610dfb5760405162461bcd60e51b815260206004820152600c60248201527f4e4f5f415353455254494f4e000000000000000000000000000000000000000060448201526064016109cc565b92915050565b6000610e0c83611e9f565b6040805160c081018252825467ffffffffffffffff8082168352600160401b820481166020840152600160801b8204169282019290925260ff600160c01b8304811615156060830152929350610ea292909184916080840191600160c81b9004166002811115610e7e57610e7e613f9f565b6002811115610e8f57610e8f613f9f565b815260200160018201548152505061226f565b54600160801b900467ffffffffffffffff1692915050565b919050565b607a5460ff1615610f125760405162461bcd60e51b815260206004820152601260248201527f57484954454c4953545f44495341424c4544000000000000000000000000000060448201526064016109cc565b610f1a6122d4565b610f665760405162461bcd60e51b815260206004820152601160248201527f56414c494441544f525f4e4f545f41464b00000000000000000000000000000060448201526064016109cc565b607a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b3360009081526072602052604090205460ff1680610fb35750607a5460ff165b610fef5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b60448201526064016109cc565b610ff7612005565b611000336123e4565b61097033826124d5565b600061101582611e9f565b54600160c01b900460ff1692915050565b60006110418461103b3686900386018661438b565b846125d6565b90505b9392505050565b6000611055613cee565b60408051606081018252828152600160208201526000918101829052908061107e8184816125d6565b94505050505090565b3360009081526072602052604090205460ff16806110a75750607a5460ff165b6110e35760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b60448201526064016109cc565b6110eb612005565b80158061111c575060006110fe82611e9f565b54600160c81b900460ff16600281111561111a5761111a613f9f565b145b6111685760405162461bcd60e51b815260206004820152601760248201527f45585045435445445f415353455254494f4e5f5345454e00000000000000000060448201526064016109cc565b33600090815260766020526040902060020154600160401b900460ff166111be5760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b60448201526064016109cc565b33600090815260766020526040902054606083013511156112215760405162461bcd60e51b815260206004820152601260248201527f494e53554646494349454e545f5354414b45000000000000000000000000000060448201526064016109cc565b6000611244833561123a36869003860160e0870161438b565b60208601356125d6565b90506112bd61125282611e9f565b6040805160c081018252825467ffffffffffffffff8082168352600160401b820481166020840152600160801b8204169282019290925260ff600160c01b83048116151560608301529092916080840191600160c81b909104166002811115610e7e57610e7e613f9f565b33600090815260766020526040902060010154818114806112f1575060006112e482611e9f565b5467ffffffffffffffff16115b61133d5760405162461bcd60e51b815260206004820152601860248201527f5354414b45445f4f4e5f414e4f544845525f4252414e4348000000000000000060448201526064016109cc565b60008061134b86858761261a565b3360009081526076602052604090206001018290559092509050806113e757600061137585611e9f565b5461139190600160801b900467ffffffffffffffff16436143f2565b90506071548110156113e55760405162461bcd60e51b815260206004820152600a60248201527f54494d455f44454c54410000000000000000000000000000000000000000000060448201526064016109cc565b505b6113f082611e9f565b54600160c01b900460ff1661142057606f54607054611420916001600160a01b0391821691166060890135612f9e565b505050505050565b6001600160a01b03811661147e5760405162461bcd60e51b815260206004820152601860248201527f454d5054595f5749544844524157414c5f41444452455353000000000000000060448201526064016109cc565b6114888482613047565b6114928383611087565b61149b84613120565b50505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115415760405162461bcd60e51b815260206004820152603b60248201527f555550534e6f745570677261646561626c653a206d757374206e6f742062652060448201527f63616c6c6564207468726f7567682064656c656761746563616c6c000000000060648201526084016109cc565b507f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d90565b600061157182611e9f565b54600160401b900467ffffffffffffffff1692915050565b3360009081526072602052604090205460ff16806115a95750607a5460ff165b6115e55760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b60448201526064016109cc565b6115ed612005565b6115f6336123e4565b6115ff33613138565b565b611609612005565b607a5461010090046001600160a01b031633146116685760405162461bcd60e51b815260206004820152601260248201527f4e4f545f464153545f434f4e4649524d4552000000000000000000000000000060448201526064016109cc565b61149b84848484612058565b600061167e612005565b6000611689336131cd565b9050600081116116db5760405162461bcd60e51b815260206004820152601460248201527f4e4f5f46554e44535f544f5f574954484452415700000000000000000000000060448201526064016109cc565b6070546116f2906001600160a01b03163383612f9e565b905090565b6116ff612005565b8061174c5760405162461bcd60e51b815260206004820152601760248201527f45585045435445445f415353455254494f4e5f4841534800000000000000000060448201526064016109cc565b600061175782611e9f565b54600160c81b900460ff1690506000611787843561177d36879003870160e0880161438b565b60208701356125d6565b905061179561125282611e9f565b60008260028111156117a9576117a9613f9f565b036117f95760006117bb85838661261a565b5090506117c781611e9f565b54600160c01b900460ff166117f757606f546070546117f7916001600160a01b0391821691166060880135612f9e565b505b606b5461149b90849083906101a08801906001600160a01b03166316bf5579600161183161182c368d90038d0186614405565b61324e565b61183b9190614421565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401602060405180830381865afa158015611898573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c69190614442565b600060758267ffffffffffffffff16815481106118db576118db61445b565b6000918252602090912001546001600160a01b031692915050565b61190283838333611428565b505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915261194282611e9f565b6040805160c081018252825467ffffffffffffffff8082168352600160401b820481166020840152600160801b8204169282019290925260ff600160c01b83048116151560608301529092916080840191600160c81b9091041660028111156119ad576119ad613f9f565b60028111156119be576119be613f9f565b81526020016001820154815250509050919050565b60006116f2613263565b607a5460ff1615611a305760405162461bcd60e51b815260206004820152601260248201527f57484954454c4953545f44495341424c4544000000000000000000000000000060448201526064016109cc565b467f000000000000000000000000000000000000000000000000000000000000000003610f665760405162461bcd60e51b815260206004820152601460248201527f434841494e5f49445f4e4f545f4348414e47454400000000000000000000000060448201526064016109cc565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003611b3d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084016109cc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b6f613296565b6001600160a01b031614611beb5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f7879000000000000000000000000000000000000000060648201526084016109cc565b6001600160a01b038116611c415760405162461bcd60e51b815260206004820152601060248201527f4e4545445f5354414b455f544f4b454e0000000000000000000000000000000060448201526064016109cc565b50565b611c5d82611c573686900386018661438b565b836125d6565b841461149b5760405162461bcd60e51b815260206004820152601660248201527f494e56414c49445f415353455254494f4e5f484153480000000000000000000060448201526064016109cc565b60006001611cb883611e9f565b54600160c81b900460ff166002811115611cd457611cd4613f9f565b1492915050565b606b54604080517fee35f32700000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163ee35f3279160048083019260209291908290030181865afa158015611d3e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f29190614471565b3360009081526072602052604090205460ff1680611d825750607a5460ff165b611dbe5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b60448201526064016109cc565b611dc6612005565b611dd082826132be565b61097081613120565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491611e4591906144b2565b600060405180830381855afa9150503d8060008114611e80576040519150601f19603f3d011682016040523d82523d6000602084013e611e85565b606091505b5091509150818015611e98575080516020145b9250505090565b600081611eee5760405162461bcd60e51b815260206004820152601b60248201527f415353455254494f4e5f49445f43414e4e4f545f42455f5a45524f000000000060448201526064016109cc565b50600090815260746020526040902090565b611fb782356020840135611f1a6060860160408701613e14565b611f2a6080870160608801613f4a565b611f3a60a0880160808901613f4a565b60408051602080820197909752808201959095526bffffffffffffffffffffffff19606094851b16938501939093527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b81166074860152911b16607c8301528051606481840301815260849092019052805191012090565b81146109705760405162461bcd60e51b815260206004820152601460248201527f434f4e4649475f484153485f4d49534d4154434800000000000000000000000060448201526064016109cc565b60335460ff16156115ff5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016109cc565b600061206385611e9f565b905060018154600160c81b900460ff16600281111561208457612084613f9f565b146120d15760405162461bcd60e51b815260206004820152600b60248201527f4e4f545f50454e44494e4700000000000000000000000000000000000000000060448201526064016109cc565b6120e48461103b3686900386018661438b565b85146121325760405162461bcd60e51b815260206004820152600c60248201527f434f4e4649524d5f44415441000000000000000000000000000000000000000060448201526064016109cc565b600061214b61214636869003860186614405565b61338b565b9050600061216661216136879003870187614405565b613396565b606c546040517fa04cee6000000000000000000000000000000000000000000000000000000000815260048101839052602481018590529192506001600160a01b03169063a04cee6090604401600060405180830381600087803b1580156121cd57600080fd5b505af11580156121e1573d6000803e3d6000fd5b50505060738890555082547fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff167902000000000000000000000000000000000000000000000000001783556040805183815260208101839052815189927ffc42829b29c259a7370ab56c8f69fce23b5f351a9ce151da453281993ec0090c928290030190a250505050505050565b60008160800151600281111561228757612287613f9f565b03611c415760405162461bcd60e51b815260206004820152601360248201527f415353455254494f4e5f4e4f545f45584953540000000000000000000000000060448201526064016109cc565b6000806122e86122e360735490565b611e9f565b6040805160c081018252825467ffffffffffffffff8082168352600160401b820481166020840152600160801b8204169282019290925260ff600160c01b83048116151560608301529092916080840191600160c81b90910416600281111561235357612353613f9f565b600281111561236457612364613f9f565b81526020016001820154815250509050806040015167ffffffffffffffff1660000361239257600091505090565b805167ffffffffffffffff16156123c657805143906123bf90620313809067ffffffffffffffff166144ce565b1091505090565b4362031380826040015167ffffffffffffffff166123bf91906144ce565b6001600160a01b038116600090815260766020526040902060020154600160401b900460ff166124435760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b60448201526064016109cc565b6001600160a01b0381166000908152607660205260408120600101546073549091908214908061247284611e9f565b5467ffffffffffffffff1611905081806124895750805b61149b5760405162461bcd60e51b815260206004820152600c60248201527f5354414b455f414354495645000000000000000000000000000000000000000060448201526064016109cc565b6001600160a01b03808316600090815260766020526040812060028101548154929391926901000000000000000000909104909116908085111561255b5760405162461bcd60e51b815260206004820152601060248201527f544f4f5f4c4954544c455f5354414b450000000000000000000000000000000060448201526064016109cc565b600061256786836143f2565b868555905061257683826133a2565b826001600160a01b0316876001600160a01b03167fd957cf2340073335d256f72a9ef89cf1a43c31143341a6a53575ef33e987beb884896040516125c4929190918252602082015260400190565b60405180910390a39695505050505050565b6000611041846125e585613447565b604080516020808201949094528082019290925260608083018790528151808403909101815260809092019052805191012090565b60008061262d6040860161096786611e9f565b6001612641610240870161022088016144e1565b600281111561265257612652613f9f565b14806126805750600261266d610240870161022088016144e1565b600281111561267e5761267e613f9f565b145b6126cc5760405162461bcd60e51b815260206004820152601060248201527f4241445f41465445525f5354415455530000000000000000000000000000000060448201526064016109cc565b836126ee86356126e436899003890160e08a0161438b565b60208901356125d6565b1461273b5760405162461bcd60e51b815260206004820152601460248201527f494e56414c49445f4245464f52455f535441544500000000000000000000000060448201526064016109cc565b600161274f610180870161016088016144e1565b600281111561276057612760613f9f565b146127ad5760405162461bcd60e51b815260206004820152600f60248201527f4241445f505245565f535441545553000000000000000000000000000000000060448201526064016109cc565b60006127b885611e9f565b90506000806101a0880160e08901826127d18383613477565b121561281f5760405162461bcd60e51b815260206004820152600f60248201527f494e424f585f4241434b5741524453000000000000000000000000000000000060448201526064016109cc565b600061284561283460e08d0160c08e01613f4a565b849067ffffffffffffffff16613584565b905060008113156128985760405162461bcd60e51b815260206004820152600d60248201527f494e424f585f544f4f5f4641520000000000000000000000000000000000000060448201526064016109cc565b60026128ac6102408d016102208e016144e1565b60028111156128bd576128bd613f9f565b141580156128cb5750600081125b1561292d576001965060006128e08484613477565b1361292d5760405162461bcd60e51b815260206004820152601360248201527f4f564552464c4f575f5354414e445354494c4c0000000000000000000000000060448201526064016109cc565b606b54604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa15801561298e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b29190614442565b905060006129c08583613584565b1315612a0e5760405162461bcd60e51b815260206004820152600e60248201527f494e424f585f504153545f454e4400000000000000000000000000000000000060448201526064016109cc565b80612a1f60e08e0160c08f01613f4a565b67ffffffffffffffff161115612a775760405162461bcd60e51b815260206004820152601360248201527f494e424f585f4e4f545f504f50554c415445440000000000000000000000000060448201526064016109cc565b6000612a8b61182c36879003870187614405565b67ffffffffffffffff169050818103612ab057612aa98260016144ce565b9650612ab4565b8196505b80600003612b045760405162461bcd60e51b815260206004820152601160248201527f454d5054595f494e424f585f434f554e5400000000000000000000000000000060448201526064016109cc565b606b546001600160a01b03166316bf5579612b206001846143f2565b6040518263ffffffff1660e01b8152600401612b3e91815260200190565b602060405180830381865afa158015612b5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7f9190614442565b95505050505050612b9f87896101a001803603810190611c57919061438b565b945085851480612bad575085155b612bf95760405162461bcd60e51b815260206004820152601960248201527f554e45585045435445445f415353455254494f4e5f484153480000000000000060448201526064016109cc565b6000612c0486611e9f565b54600160c81b900460ff166002811115612c2057612c20613f9f565b14612c6d5760405162461bcd60e51b815260206004820152600e60248201527f415353455254494f4e5f5345454e00000000000000000000000000000000000060448201526064016109cc565b825460685460675460695460665460408051602080820196909652808201949094526bffffffffffffffffffffffff19606093841b16838501527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116607486015288831b16607c85015280516064818603018152608485018083528151918701919091206101448601835260009182905260a4860182905260c4860182905260e4860182905261010486018290526101249095018190528151928301825280835294820185905267ffffffffffffffff43811691830191909152909416159084015260a08301526001608083015250612d6b84613613565b60008681526074602090815260409182902083518154928501519385015160608601511515600160c01b027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff928316600160801b02167fffffffffffffff000000000000000000ffffffffffffffffffffffffffffffff968316600160401b027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909616929093169190911793909317939093169290921717808255608083015183929182907fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff16600160c81b836002811115612e7357612e73613f9f565b021790555060a0820151816001015590505087867f901c3aee23cf4478825462caaab375c606ab83516060388344f06503407536308b8587606854606754606960009054906101000a90046001600160a01b0316606660009054906101000a900467ffffffffffffffff16604051612ef19796959493929190614574565b60405180910390a37f000000000000000000000000000000000000000000000000000000000000000015612f925760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f829190614442565b6000878152607b60205260409020555b50505050935093915050565b6040516001600160a01b0383166024820152604481018290526119029084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613697565b3360009081526072602052604090205460ff16806130675750607a5460ff165b6130a35760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b60448201526064016109cc565b6130ab612005565b33600090815260766020526040902060020154600160401b900460ff16156131155760405162461bcd60e51b815260206004820152600e60248201527f414c52454144595f5354414b454400000000000000000000000000000000000060448201526064016109cc565b61097033838361377c565b607054611c41906001600160a01b03163330846138ee565b6001600160a01b0380821660009081526076602052604090206002810154815491926901000000000000000000909104169061317482826133a2565b61317d8461393f565b60408051828152600060208201526001600160a01b0380851692908716917fd957cf2340073335d256f72a9ef89cf1a43c31143341a6a53575ef33e987beb891015b60405180910390a350505050565b6001600160a01b03811660009081526077602052604081208054908290556078805482919084906131ff9084906143f2565b909155505060408051828152600060208201526001600160a01b038516917fa740af14c56e4e04a617b1de1eb20de73270decbaaead14f142aabf3038e5ae2910160405180910390a292915050565b6020810151600090815b602002015192915050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60007f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d613287565b3360009081526072602052604090205460ff16806132de5750607a5460ff165b61331a5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b60448201526064016109cc565b613322612005565b6001600160a01b038216600090815260766020526040902060020154600160401b900460ff166133815760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b60448201526064016109cc565b6109708282613b3d565b805160009081613258565b80516000906001613258565b6001600160a01b038216600090815260776020526040812054906133c683836144ce565b6001600160a01b03851660009081526077602052604081208290556078805492935085929091906133f89084906144ce565b909155505060408051838152602081018390526001600160a01b038616917fa740af14c56e4e04a617b1de1eb20de73270decbaaead14f142aabf3038e5ae2910160405180910390a250505050565b60008160405160200161345a9190614660565b604051602081830303815290604052805190602001209050919050565b60008061348c61182c36869003860186614405565b905060006134a261182c36869003860186614405565b90508067ffffffffffffffff168267ffffffffffffffff1610156134cc5760001992505050610dfb565b8067ffffffffffffffff168267ffffffffffffffff1611156134f357600192505050610dfb565b600061350c61350736889003880188614405565b613bcb565b9050600061352261350736889003880188614405565b90508067ffffffffffffffff168267ffffffffffffffff16101561354e57600019945050505050610dfb565b8067ffffffffffffffff168267ffffffffffffffff161115613577576001945050505050610dfb565b6000945050505050610dfb565b60008061359961182c36869003860186614405565b9050828167ffffffffffffffff1610156135b857600019915050610dfb565b828167ffffffffffffffff1611156135d4576001915050610dfb565b60006135e861350736879003870187614405565b67ffffffffffffffff161115613602576001915050610dfb565b6000915050610dfb565b5092915050565b805467ffffffffffffffff1660000361364357805467ffffffffffffffff19164367ffffffffffffffff16179055565b8054600160401b900467ffffffffffffffff16600003611c415780547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16600160401b4367ffffffffffffffff1602179055565b60006136ec826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613bda9092919063ffffffff16565b805190915015611902578080602001905181019061370a91906146ea565b6119025760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016109cc565b6075805460018082019092557f9a8d93986a7b9e6294572ea6736696119c195c1a9f5eae642d3c5fcd44e49dea810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038781169182179092556040805160a081018252878152607354602080830191825267ffffffffffffffff808816848601908152606085018a81528b89166080870181815260008a8152607687528981209851895596519c88019c909c5591516002909601805491519b51969093167fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000090911617600160401b9a15159a909a02999099177fffffff0000000000000000000000000000000000000000ffffffffffffffffff166901000000000000000000949097169390930295909517909155815190815292830187905292939290917fd957cf2340073335d256f72a9ef89cf1a43c31143341a6a53575ef33e987beb891016131bf565b6040516001600160a01b038085166024830152831660448201526064810182905261149b9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612fe3565b6001600160a01b03811660009081526076602052604090206002810154600160401b900460ff1661399f5760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b60448201526064016109cc565b60028101546075805467ffffffffffffffff909216916139c1906001906143f2565b815481106139d1576139d161445b565b600091825260209091200154607580546001600160a01b039092169167ffffffffffffffff8416908110613a0757613a0761445b565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806076600060758467ffffffffffffffff1681548110613a5757613a5761445b565b6000918252602080832091909101546001600160a01b031683528201929092526040019020600201805467ffffffffffffffff191667ffffffffffffffff929092169190911790556075805480613ab057613ab0614705565b60008281526020808220830160001990810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559092019092556001600160a01b039490941681526076909352505060408120818155600181019190915560020180547fffffff0000000000000000000000000000000000000000000000000000000000169055565b6001600160a01b038216600090815260766020526040812080549091613b6384836144ce565b808455600284015460408051858152602081018490529293506001600160a01b036901000000000000000000909204821692918816917fd957cf2340073335d256f72a9ef89cf1a43c31143341a6a53575ef33e987beb8910160405180910390a35050505050565b60208101516000906001613258565b60606110418484600085856001600160a01b0385163b613c3c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109cc565b600080866001600160a01b03168587604051613c5891906144b2565b60006040518083038185875af1925050503d8060008114613c95576040519150601f19603f3d011682016040523d82523d6000602084013e613c9a565b606091505b5091509150613caa828286613cb5565b979650505050505050565b60608315613cc4575081611044565b825115613cd45782518084602001fd5b8160405162461bcd60e51b81526004016109cc919061471b565b6040518060400160405280613d01613d13565b8152602001613d0e613d13565b905290565b60405180604001604052806002906020820280368337509192915050565b600060a08284031215613d4357600080fd5b50919050565b60008060c08385031215613d5c57600080fd5b82359150613d6d8460208501613d31565b90509250929050565b600060c08284031215613d4357600080fd5b6000806000806000806101e08789031215613da257600080fd5b8635955060208701359450613dba8860408901613d76565b93506101008701359250613dd2886101208901613d31565b91506101c087013590509295509295509295565b600060208284031215613df857600080fd5b5035919050565b6001600160a01b0381168114611c4157600080fd5b600060208284031215613e2657600080fd5b813561104481613dff565b60008060006101008486031215613e4757600080fd5b83359250613e588560208601613d76565b915060e084013590509250925092565b60006102608284031215613d4357600080fd5b6000806102808385031215613e8f57600080fd5b613e998484613e68565b94610260939093013593505050565b6000806000806102c08587031215613ebf57600080fd5b84359350613ed08660208701613e68565b925061028085013591506102a0850135613ee981613dff565b939692955090935050565b6000806000806101208587031215613f0b57600080fd5b8435935060208501359250613f238660408701613d76565b939692955092936101000135925050565b67ffffffffffffffff81168114611c4157600080fd5b600060208284031215613f5c57600080fd5b813561104481613f34565b60008060006102a08486031215613f7d57600080fd5b83359250613f8e8560208601613e68565b915061028084013590509250925092565b634e487b7160e01b600052602160045260246000fd5b60038110611c4157634e487b7160e01b600052602160045260246000fd5b600060c08201905067ffffffffffffffff80845116835280602085015116602084015280604085015116604084015250606083015115156060830152608083015161401d81613fb5565b8060808401525060a083015160a083015292915050565b600080600080610120858703121561404b57600080fd5b8435935061405c8660208701613d76565b939693955050505060e082013591610100013590565b6000806040838503121561408557600080fd5b823561409081613dff565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b67ffffffffffffffff81811683821601908082111561360c5761360c61409e565b634e487b7160e01b600052604160045260246000fd5b6040516101e0810167ffffffffffffffff8111828210171561410f5761410f6140d5565b60405290565b6040805190810167ffffffffffffffff8111828210171561410f5761410f6140d5565b8051610eba81613dff565b8051610eba81613f34565b805160028110610eba57600080fd5b805160ff81168114610eba57600080fd5b80518015158114610eba57600080fd5b60006101e0828403121561419157600080fd5b6141996140eb565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101006141f1818501614138565b90820152610120614203848201614143565b90820152610140614215848201614143565b9082015261016061422784820161414e565b9082015261018061423984820161415d565b908201526101a061424b84820161416e565b908201526101c061425d848201614143565b908201529392505050565b600082601f83011261427957600080fd5b6040516040810181811067ffffffffffffffff8211171561429c5761429c6140d5565b80604052508060408401858111156142b357600080fd5b845b818110156142d65780356142c881613f34565b8352602092830192016142b5565b509195945050505050565b6000608082840312156142f357600080fd5b6040516040810181811067ffffffffffffffff82111715614316576143166140d5565b604052905080601f8301841361432b57600080fd5b614333614115565b80604085018681111561434557600080fd5b855b8181101561435f578035845260209384019301614347565b5081845261436d8782614268565b60208501525050505092915050565b803560038110610eba57600080fd5b600060c0828403121561439d57600080fd5b6040516060810181811067ffffffffffffffff821117156143c0576143c06140d5565b6040526143cd84846142e1565b81526143db6080840161437c565b602082015260a09290920135604083015250919050565b81810381811115610dfb57610dfb61409e565b60006080828403121561441757600080fd5b61104483836142e1565b67ffffffffffffffff82811682821603908082111561360c5761360c61409e565b60006020828403121561445457600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561448357600080fd5b815161104481613dff565b60005b838110156144a9578181015183820152602001614491565b50506000910152565b600082516144c481846020870161448e565b9190910192915050565b80820180821115610dfb57610dfb61409e565b6000602082840312156144f357600080fd5b6110448261437c565b61450581613fb5565b9052565b6040818337604082016040820160005b600281101561454c57813561452d81613f34565b67ffffffffffffffff1683526020928301929190910190600101614519565b50505061455b6080820161437c565b61456481613fb5565b608083015260a090810135910152565b6000610320820190508835825260208901356020830152604089013560408301526060890135606083015260808901356145ad81613dff565b6001600160a01b0316608083015260a08901356145c981613f34565b67ffffffffffffffff90811660a084015260c08a0135906145e982613f34565b1660c08301526145ff60e0808401908b01614509565b6101a0614610818401828c01614509565b508761026083015286610280830152856102a0830152846102c08301526146436102e08301856001600160a01b03169052565b67ffffffffffffffff831661030083015298975050505050505050565b8151805160c0830191908360005b600281101561468d57825182526020928301929091019060010161466e565b505050602090810151906040840160005b60028110156146c557835167ffffffffffffffff168252928201929082019060010161469e565b505084015190506146d960808401826144fc565b50604083015160a083015292915050565b6000602082840312156146fc57600080fd5b6110448261416e565b634e487b7160e01b600052603160045260246000fd5b602081526000825180602084015261473a81604085016020870161448e565b601f01601f1916919091016040019291505056fea264697066735822122084189eb98531b9148d42085e9b98cb43495ebebc500c2634255008ef18cc331264736f6c63430008110033", + Bin: "0x60e0604052620000196200003a60201b62001dd91760201c565b15156080523060a0524660c0523480156200003357600080fd5b5062000108565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b1790529051600091829182916064916200007a9190620000d7565b600060405180830381855afa9150503d8060008114620000b7576040519150601f19603f3d011682016040523d82523d6000602084013e620000bc565b606091505b5091509150818015620000d0575080516020145b9250505090565b6000825160005b81811015620000fa5760208186018101518583015201620000de565b506000920191825250919050565b60805160a05160c0516147846200014d6000396000611a330152600081816114ae01528181611aa90152611b3f015260008181610d7b0152612efb01526147846000f3fe608060405234801561001057600080fd5b50600436106103785760003560e01c80636177fd18116101d3578063c2c2e68e11610104578063e8bd4922116100a2578063f065de3f1161007c578063f065de3f146108fe578063f3f0a03e14610911578063facd743b14610924578063fb0e722b1461094757600080fd5b8063e8bd492214610831578063ee35f327146108cd578063ef40a670146108d557600080fd5b8063dff69787116100de578063dff69787146107f0578063e51019a6146107f8578063e531d8c71461080b578063e78cea921461081e57600080fd5b8063c2c2e68e146107c2578063c4d66de8146107ca578063ce11e6ab146107dd57600080fd5b806388302884116101715780639a8a05921161014b5780639a8a05921461068d578063a23c44b114610696578063aa38a6e71461079c578063bc45e0ae146107af57600080fd5b8063883028841461065c5780638da5cb5b1461067c5780638ee1a1261461068457600080fd5b80636ddd3744116101ad5780636ddd37441461062457806371ef232c146106375780637300201c1461064057806376e7e23b1461065357600080fd5b80636177fd18146105d35780636420fb9f1461060957806365f7f80d1461061c57600080fd5b8063353325e0116102ad57806352d1902d1161024b57806357ef4ab91161022557806357ef4ab9146105a55780635c975abb146105ad5780636096686d146105b857806361373919146105cb57600080fd5b806352d1902d1461057257806355840a581461057a57806356bbc9e61461059257600080fd5b806345e38b641161028757806345e38b64146105395780634ceccfe51461054257806350f32f681461054c57806351ed6a301461055f57600080fd5b8063353325e0146104f25780633b86de19146104fa5780633be680ea1461050d57600080fd5b80631b1689e91161031a5780632e7acfa6116102f45780632e7acfa61461048f5780632f30cabd146104a357806330836228146104cc57806333635fc2146104df57600080fd5b80631b1689e9146104475780631e83d30f146104505780632abdd2301461046357600080fd5b8063117155851161035657806311715585146103d557806312ab3d3b1461040157806313c56ca71461041e57806318baaab91461043f57600080fd5b8063023a96fe1461037d57806304972af9146103ad57806310b98a35146103c2575b600080fd5b606954610390906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6103c06103bb366004613d49565b61095a565b005b6103c06103d0366004613d88565b610974565b6103e86103e3366004613de6565b610d5b565b60405167ffffffffffffffff90911681526020016103a4565b607a5461040e9060ff1681565b60405190151581526020016103a4565b61043161042c366004613de6565b610d77565b6040519081526020016103a4565b6103c0610ebf565b61043160795481565b6103c061045e366004613de6565b610f93565b610431610471366004613e14565b6001600160a01b031660009081526076602052604090206001015490565b6066546103e89067ffffffffffffffff1681565b6104316104b1366004613e14565b6001600160a01b031660009081526077602052604090205490565b61040e6104da366004613de6565b61100a565b6104316104ed366004613e31565b611026565b61043161104b565b6103c0610508366004613e7b565b611087565b6069546103e89074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b61043160715481565b6104316203138081565b6103c061055a366004613ea8565b611428565b607054610390906001600160a01b031681565b6104316114a1565b607a546103909061010090046001600160a01b031681565b6103e86105a0366004613de6565b611566565b6103c0611589565b60335460ff1661040e565b6103c06105c6366004613ef4565b611601565b610431611674565b61040e6105e1366004613e14565b6001600160a01b0316600090815260766020526040902060020154600160401b900460ff1690565b6103c0610617366004613e7b565b6116f7565b607354610431565b610390610632366004613f4a565b6118bc565b61043160785481565b6103c061064e366004613f67565b6118f6565b61043160675481565b61066f61066a366004613de6565b611907565b6040516103a49190613fd3565b6103906119d3565b61043160685481565b61043160655481565b6107456106a4366004613e14565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506001600160a01b03908116600090815260766020908152604091829020825160a081018452815481526001820154928101929092526002015467ffffffffffffffff81169282019290925260ff600160401b830416151560608201526901000000000000000000909104909116608082015290565b6040516103a49190600060a082019050825182526020830151602083015267ffffffffffffffff60408401511660408301526060830151151560608301526001600160a01b03608084015116608083015292915050565b606d54610390906001600160a01b031681565b606e54610390906001600160a01b031681565b6103c06119dd565b6103c06107d8366004613e14565b611a9f565b606c54610390906001600160a01b031681565b6075546103e8565b6103c0610806366004614034565b611c44565b61040e610819366004613de6565b611cab565b606b54610390906001600160a01b031681565b61088d61083f366004613e14565b60766020526000908152604090208054600182015460029092015490919067ffffffffffffffff811690600160401b810460ff1690690100000000000000000090046001600160a01b031685565b60408051958652602086019490945267ffffffffffffffff9092169284019290925290151560608301526001600160a01b0316608082015260a0016103a4565b610390611cdb565b6104316108e3366004613e14565b6001600160a01b031660009081526076602052604090205490565b606f54610390906001600160a01b031681565b6103c061091f366004614072565b611d62565b61040e610932366004613e14565b60726020526000908152604090205460ff1681565b606a54610390906001600160a01b031681565b6109708161096784611e9f565b60010154611f00565b5050565b3360009081526072602052604090205460ff16806109945750607a5460ff165b6109d55760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b60448201526064015b60405180910390fd5b6109dd612005565b60006109e887611e9f565b905060006109f587611e9f565b9050610a05848260010154611f00565b610a156080850160608601613f4a565b8254610a329190600160801b900467ffffffffffffffff166140b4565b67ffffffffffffffff16431015610a8b5760405162461bcd60e51b815260206004820152600f60248201527f4245464f52455f444541444c494e45000000000000000000000000000000000060448201526064016109cc565b6073548714610adc5760405162461bcd60e51b815260206004820152601960248201527f505245565f4e4f545f4c41544553545f434f4e4649524d45440000000000000060448201526064016109cc565b8054600160401b900467ffffffffffffffff1615610d45576000610b066060860160408701613e14565b6001600160a01b031663fda2892e876040518263ffffffff1660e01b8152600401610b3391815260200190565b6101e060405180830381865afa158015610b51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b75919061417e565b9050888160e0015114610bca5760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f57494e4e45520000000000000000000000000000000000000000000060448201526064016109cc565b60018161016001516001811115610be357610be3613f9f565b14610c305760405162461bcd60e51b815260206004820152601260248201527f454447455f4e4f545f434f4e4649524d4544000000000000000000000000000060448201526064016109cc565b80610140015167ffffffffffffffff16600003610c8f5760405162461bcd60e51b815260206004820152601760248201527f5a45524f5f434f4e4649524d45445f41545f424c4f434b00000000000000000060448201526064016109cc565b606954610140820151610cc49174010000000000000000000000000000000000000000900467ffffffffffffffff16906140b4565b67ffffffffffffffff16431015610d435760405162461bcd60e51b815260206004820152602160248201527f4348414c4c454e47455f47524143455f504552494f445f4e4f545f504153534560448201527f440000000000000000000000000000000000000000000000000000000000000060648201526084016109cc565b505b610d5188888886612058565b5050505050505050565b6000610d6682611e9f565b5467ffffffffffffffff1692915050565b60007f000000000000000000000000000000000000000000000000000000000000000015610e01576000828152607b602052604090205480610dfb5760405162461bcd60e51b815260206004820152600c60248201527f4e4f5f415353455254494f4e000000000000000000000000000000000000000060448201526064016109cc565b92915050565b6000610e0c83611e9f565b6040805160c081018252825467ffffffffffffffff8082168352600160401b820481166020840152600160801b8204169282019290925260ff600160c01b8304811615156060830152929350610ea292909184916080840191600160c81b9004166002811115610e7e57610e7e613f9f565b6002811115610e8f57610e8f613f9f565b815260200160018201548152505061226f565b54600160801b900467ffffffffffffffff1692915050565b919050565b607a5460ff1615610f125760405162461bcd60e51b815260206004820152601260248201527f57484954454c4953545f44495341424c4544000000000000000000000000000060448201526064016109cc565b610f1a6122d4565b610f665760405162461bcd60e51b815260206004820152601160248201527f56414c494441544f525f4e4f545f41464b00000000000000000000000000000060448201526064016109cc565b607a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b3360009081526072602052604090205460ff1680610fb35750607a5460ff165b610fef5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b60448201526064016109cc565b610ff7612005565b611000336123e4565b61097033826124d5565b600061101582611e9f565b54600160c01b900460ff1692915050565b60006110418461103b3686900386018661438b565b846125d6565b90505b9392505050565b6000611055613cee565b60408051606081018252828152600160208201526000918101829052908061107e8184816125d6565b94505050505090565b3360009081526072602052604090205460ff16806110a75750607a5460ff165b6110e35760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b60448201526064016109cc565b6110eb612005565b80158061111c575060006110fe82611e9f565b54600160c81b900460ff16600281111561111a5761111a613f9f565b145b6111685760405162461bcd60e51b815260206004820152601760248201527f45585045435445445f415353455254494f4e5f5345454e00000000000000000060448201526064016109cc565b33600090815260766020526040902060020154600160401b900460ff166111be5760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b60448201526064016109cc565b33600090815260766020526040902054606083013511156112215760405162461bcd60e51b815260206004820152601260248201527f494e53554646494349454e545f5354414b45000000000000000000000000000060448201526064016109cc565b6000611244833561123a36869003860160e0870161438b565b60208601356125d6565b90506112bd61125282611e9f565b6040805160c081018252825467ffffffffffffffff8082168352600160401b820481166020840152600160801b8204169282019290925260ff600160c01b83048116151560608301529092916080840191600160c81b909104166002811115610e7e57610e7e613f9f565b33600090815260766020526040902060010154818114806112f1575060006112e482611e9f565b5467ffffffffffffffff16115b61133d5760405162461bcd60e51b815260206004820152601860248201527f5354414b45445f4f4e5f414e4f544845525f4252414e4348000000000000000060448201526064016109cc565b60008061134b86858761261a565b3360009081526076602052604090206001018290559092509050806113e757600061137585611e9f565b5461139190600160801b900467ffffffffffffffff16436143f2565b90506071548110156113e55760405162461bcd60e51b815260206004820152600a60248201527f54494d455f44454c54410000000000000000000000000000000000000000000060448201526064016109cc565b505b6113f082611e9f565b54600160c01b900460ff1661142057606f54607054611420916001600160a01b0391821691166060890135612f9e565b505050505050565b6001600160a01b03811661147e5760405162461bcd60e51b815260206004820152601860248201527f454d5054595f5749544844524157414c5f41444452455353000000000000000060448201526064016109cc565b6114888482613047565b6114928383611087565b61149b84613120565b50505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115415760405162461bcd60e51b815260206004820152603b60248201527f555550534e6f745570677261646561626c653a206d757374206e6f742062652060448201527f63616c6c6564207468726f7567682064656c656761746563616c6c000000000060648201526084016109cc565b507f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d90565b600061157182611e9f565b54600160401b900467ffffffffffffffff1692915050565b3360009081526072602052604090205460ff16806115a95750607a5460ff165b6115e55760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b60448201526064016109cc565b6115ed612005565b6115f6336123e4565b6115ff33613138565b565b611609612005565b607a5461010090046001600160a01b031633146116685760405162461bcd60e51b815260206004820152601260248201527f4e4f545f464153545f434f4e4649524d4552000000000000000000000000000060448201526064016109cc565b61149b84848484612058565b600061167e612005565b6000611689336131cd565b9050600081116116db5760405162461bcd60e51b815260206004820152601460248201527f4e4f5f46554e44535f544f5f574954484452415700000000000000000000000060448201526064016109cc565b6070546116f2906001600160a01b03163383612f9e565b905090565b6116ff612005565b8061174c5760405162461bcd60e51b815260206004820152601760248201527f45585045435445445f415353455254494f4e5f4841534800000000000000000060448201526064016109cc565b600061175782611e9f565b54600160c81b900460ff1690506000611787843561177d36879003870160e0880161438b565b60208701356125d6565b905061179561125282611e9f565b60008260028111156117a9576117a9613f9f565b036117f95760006117bb85838661261a565b5090506117c781611e9f565b54600160c01b900460ff166117f757606f546070546117f7916001600160a01b0391821691166060880135612f9e565b505b606b5461149b90849083906101a08801906001600160a01b03166316bf5579600161183161182c368d90038d0186614405565b61324e565b61183b9190614421565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401602060405180830381865afa158015611898573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c69190614442565b600060758267ffffffffffffffff16815481106118db576118db61445b565b6000918252602090912001546001600160a01b031692915050565b61190283838333611428565b505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915261194282611e9f565b6040805160c081018252825467ffffffffffffffff8082168352600160401b820481166020840152600160801b8204169282019290925260ff600160c01b83048116151560608301529092916080840191600160c81b9091041660028111156119ad576119ad613f9f565b60028111156119be576119be613f9f565b81526020016001820154815250509050919050565b60006116f2613263565b607a5460ff1615611a305760405162461bcd60e51b815260206004820152601260248201527f57484954454c4953545f44495341424c4544000000000000000000000000000060448201526064016109cc565b467f000000000000000000000000000000000000000000000000000000000000000003610f665760405162461bcd60e51b815260206004820152601460248201527f434841494e5f49445f4e4f545f4348414e47454400000000000000000000000060448201526064016109cc565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003611b3d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084016109cc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b6f613296565b6001600160a01b031614611beb5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f7879000000000000000000000000000000000000000060648201526084016109cc565b6001600160a01b038116611c415760405162461bcd60e51b815260206004820152601060248201527f4e4545445f5354414b455f544f4b454e0000000000000000000000000000000060448201526064016109cc565b50565b611c5d82611c573686900386018661438b565b836125d6565b841461149b5760405162461bcd60e51b815260206004820152601660248201527f494e56414c49445f415353455254494f4e5f484153480000000000000000000060448201526064016109cc565b60006001611cb883611e9f565b54600160c81b900460ff166002811115611cd457611cd4613f9f565b1492915050565b606b54604080517fee35f32700000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163ee35f3279160048083019260209291908290030181865afa158015611d3e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f29190614471565b3360009081526072602052604090205460ff1680611d825750607a5460ff165b611dbe5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b60448201526064016109cc565b611dc6612005565b611dd082826132be565b61097081613120565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491611e4591906144b2565b600060405180830381855afa9150503d8060008114611e80576040519150601f19603f3d011682016040523d82523d6000602084013e611e85565b606091505b5091509150818015611e98575080516020145b9250505090565b600081611eee5760405162461bcd60e51b815260206004820152601b60248201527f415353455254494f4e5f49445f43414e4e4f545f42455f5a45524f000000000060448201526064016109cc565b50600090815260746020526040902090565b611fb782356020840135611f1a6060860160408701613e14565b611f2a6080870160608801613f4a565b611f3a60a0880160808901613f4a565b60408051602080820197909752808201959095526bffffffffffffffffffffffff19606094851b16938501939093527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b81166074860152911b16607c8301528051606481840301815260849092019052805191012090565b81146109705760405162461bcd60e51b815260206004820152601460248201527f434f4e4649475f484153485f4d49534d4154434800000000000000000000000060448201526064016109cc565b60335460ff16156115ff5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016109cc565b600061206385611e9f565b905060018154600160c81b900460ff16600281111561208457612084613f9f565b146120d15760405162461bcd60e51b815260206004820152600b60248201527f4e4f545f50454e44494e4700000000000000000000000000000000000000000060448201526064016109cc565b6120e48461103b3686900386018661438b565b85146121325760405162461bcd60e51b815260206004820152600c60248201527f434f4e4649524d5f44415441000000000000000000000000000000000000000060448201526064016109cc565b600061214b61214636869003860186614405565b61338b565b9050600061216661216136879003870187614405565b613396565b606c546040517fa04cee6000000000000000000000000000000000000000000000000000000000815260048101839052602481018590529192506001600160a01b03169063a04cee6090604401600060405180830381600087803b1580156121cd57600080fd5b505af11580156121e1573d6000803e3d6000fd5b50505060738890555082547fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff167902000000000000000000000000000000000000000000000000001783556040805183815260208101839052815189927ffc42829b29c259a7370ab56c8f69fce23b5f351a9ce151da453281993ec0090c928290030190a250505050505050565b60008160800151600281111561228757612287613f9f565b03611c415760405162461bcd60e51b815260206004820152601360248201527f415353455254494f4e5f4e4f545f45584953540000000000000000000000000060448201526064016109cc565b6000806122e86122e360735490565b611e9f565b6040805160c081018252825467ffffffffffffffff8082168352600160401b820481166020840152600160801b8204169282019290925260ff600160c01b83048116151560608301529092916080840191600160c81b90910416600281111561235357612353613f9f565b600281111561236457612364613f9f565b81526020016001820154815250509050806040015167ffffffffffffffff1660000361239257600091505090565b805167ffffffffffffffff16156123c657805143906123bf90620313809067ffffffffffffffff166144ce565b1091505090565b4362031380826040015167ffffffffffffffff166123bf91906144ce565b6001600160a01b038116600090815260766020526040902060020154600160401b900460ff166124435760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b60448201526064016109cc565b6001600160a01b0381166000908152607660205260408120600101546073549091908214908061247284611e9f565b5467ffffffffffffffff1611905081806124895750805b61149b5760405162461bcd60e51b815260206004820152600c60248201527f5354414b455f414354495645000000000000000000000000000000000000000060448201526064016109cc565b6001600160a01b03808316600090815260766020526040812060028101548154929391926901000000000000000000909104909116908085111561255b5760405162461bcd60e51b815260206004820152601060248201527f544f4f5f4c4954544c455f5354414b450000000000000000000000000000000060448201526064016109cc565b600061256786836143f2565b868555905061257683826133a2565b826001600160a01b0316876001600160a01b03167fd957cf2340073335d256f72a9ef89cf1a43c31143341a6a53575ef33e987beb884896040516125c4929190918252602082015260400190565b60405180910390a39695505050505050565b6000611041846125e585613447565b604080516020808201949094528082019290925260608083018790528151808403909101815260809092019052805191012090565b60008061262d6040860161096786611e9f565b6001612641610240870161022088016144e1565b600281111561265257612652613f9f565b14806126805750600261266d610240870161022088016144e1565b600281111561267e5761267e613f9f565b145b6126cc5760405162461bcd60e51b815260206004820152601060248201527f4241445f41465445525f5354415455530000000000000000000000000000000060448201526064016109cc565b836126ee86356126e436899003890160e08a0161438b565b60208901356125d6565b1461273b5760405162461bcd60e51b815260206004820152601460248201527f494e56414c49445f4245464f52455f535441544500000000000000000000000060448201526064016109cc565b600161274f610180870161016088016144e1565b600281111561276057612760613f9f565b146127ad5760405162461bcd60e51b815260206004820152600f60248201527f4241445f505245565f535441545553000000000000000000000000000000000060448201526064016109cc565b60006127b885611e9f565b90506000806101a0880160e08901826127d18383613477565b121561281f5760405162461bcd60e51b815260206004820152600f60248201527f494e424f585f4241434b5741524453000000000000000000000000000000000060448201526064016109cc565b600061284561283460e08d0160c08e01613f4a565b849067ffffffffffffffff16613584565b905060008113156128985760405162461bcd60e51b815260206004820152600d60248201527f494e424f585f544f4f5f4641520000000000000000000000000000000000000060448201526064016109cc565b60026128ac6102408d016102208e016144e1565b60028111156128bd576128bd613f9f565b141580156128cb5750600081125b1561292d576001965060006128e08484613477565b1361292d5760405162461bcd60e51b815260206004820152601360248201527f4f564552464c4f575f5354414e445354494c4c0000000000000000000000000060448201526064016109cc565b606b54604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa15801561298e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b29190614442565b905060006129c08583613584565b1315612a0e5760405162461bcd60e51b815260206004820152600e60248201527f494e424f585f504153545f454e4400000000000000000000000000000000000060448201526064016109cc565b80612a1f60e08e0160c08f01613f4a565b67ffffffffffffffff161115612a775760405162461bcd60e51b815260206004820152601360248201527f494e424f585f4e4f545f504f50554c415445440000000000000000000000000060448201526064016109cc565b6000612a8b61182c36879003870187614405565b67ffffffffffffffff169050818103612ab057612aa98260016144ce565b9650612ab4565b8196505b80600003612b045760405162461bcd60e51b815260206004820152601160248201527f454d5054595f494e424f585f434f554e5400000000000000000000000000000060448201526064016109cc565b606b546001600160a01b03166316bf5579612b206001846143f2565b6040518263ffffffff1660e01b8152600401612b3e91815260200190565b602060405180830381865afa158015612b5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7f9190614442565b95505050505050612b9f87896101a001803603810190611c57919061438b565b945085851480612bad575085155b612bf95760405162461bcd60e51b815260206004820152601960248201527f554e45585045435445445f415353455254494f4e5f484153480000000000000060448201526064016109cc565b6000612c0486611e9f565b54600160c81b900460ff166002811115612c2057612c20613f9f565b14612c6d5760405162461bcd60e51b815260206004820152600e60248201527f415353455254494f4e5f5345454e00000000000000000000000000000000000060448201526064016109cc565b825460685460675460695460665460408051602080820196909652808201949094526bffffffffffffffffffffffff19606093841b16838501527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116607486015288831b16607c85015280516064818603018152608485018083528151918701919091206101448601835260009182905260a4860182905260c4860182905260e4860182905261010486018290526101249095018190528151928301825280835294820185905267ffffffffffffffff43811691830191909152909416159084015260a08301526001608083015250612d6b84613613565b60008681526074602090815260409182902083518154928501519385015160608601511515600160c01b027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff928316600160801b02167fffffffffffffff000000000000000000ffffffffffffffffffffffffffffffff968316600160401b027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909616929093169190911793909317939093169290921717808255608083015183929182907fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff16600160c81b836002811115612e7357612e73613f9f565b021790555060a0820151816001015590505087867f901c3aee23cf4478825462caaab375c606ab83516060388344f06503407536308b8587606854606754606960009054906101000a90046001600160a01b0316606660009054906101000a900467ffffffffffffffff16604051612ef19796959493929190614574565b60405180910390a37f000000000000000000000000000000000000000000000000000000000000000015612f925760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f829190614442565b6000878152607b60205260409020555b50505050935093915050565b6040516001600160a01b0383166024820152604481018290526119029084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613697565b3360009081526072602052604090205460ff16806130675750607a5460ff165b6130a35760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b60448201526064016109cc565b6130ab612005565b33600090815260766020526040902060020154600160401b900460ff16156131155760405162461bcd60e51b815260206004820152600e60248201527f414c52454144595f5354414b454400000000000000000000000000000000000060448201526064016109cc565b61097033838361377c565b607054611c41906001600160a01b03163330846138ee565b6001600160a01b0380821660009081526076602052604090206002810154815491926901000000000000000000909104169061317482826133a2565b61317d8461393f565b60408051828152600060208201526001600160a01b0380851692908716917fd957cf2340073335d256f72a9ef89cf1a43c31143341a6a53575ef33e987beb891015b60405180910390a350505050565b6001600160a01b03811660009081526077602052604081208054908290556078805482919084906131ff9084906143f2565b909155505060408051828152600060208201526001600160a01b038516917fa740af14c56e4e04a617b1de1eb20de73270decbaaead14f142aabf3038e5ae2910160405180910390a292915050565b6020810151600090815b602002015192915050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60007f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d613287565b3360009081526072602052604090205460ff16806132de5750607a5460ff165b61331a5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b60448201526064016109cc565b613322612005565b6001600160a01b038216600090815260766020526040902060020154600160401b900460ff166133815760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b60448201526064016109cc565b6109708282613b3d565b805160009081613258565b80516000906001613258565b6001600160a01b038216600090815260776020526040812054906133c683836144ce565b6001600160a01b03851660009081526077602052604081208290556078805492935085929091906133f89084906144ce565b909155505060408051838152602081018390526001600160a01b038616917fa740af14c56e4e04a617b1de1eb20de73270decbaaead14f142aabf3038e5ae2910160405180910390a250505050565b60008160405160200161345a9190614660565b604051602081830303815290604052805190602001209050919050565b60008061348c61182c36869003860186614405565b905060006134a261182c36869003860186614405565b90508067ffffffffffffffff168267ffffffffffffffff1610156134cc5760001992505050610dfb565b8067ffffffffffffffff168267ffffffffffffffff1611156134f357600192505050610dfb565b600061350c61350736889003880188614405565b613bcb565b9050600061352261350736889003880188614405565b90508067ffffffffffffffff168267ffffffffffffffff16101561354e57600019945050505050610dfb565b8067ffffffffffffffff168267ffffffffffffffff161115613577576001945050505050610dfb565b6000945050505050610dfb565b60008061359961182c36869003860186614405565b9050828167ffffffffffffffff1610156135b857600019915050610dfb565b828167ffffffffffffffff1611156135d4576001915050610dfb565b60006135e861350736879003870187614405565b67ffffffffffffffff161115613602576001915050610dfb565b6000915050610dfb565b5092915050565b805467ffffffffffffffff1660000361364357805467ffffffffffffffff19164367ffffffffffffffff16179055565b8054600160401b900467ffffffffffffffff16600003611c415780547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16600160401b4367ffffffffffffffff1602179055565b60006136ec826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613bda9092919063ffffffff16565b805190915015611902578080602001905181019061370a91906146ea565b6119025760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016109cc565b6075805460018082019092557f9a8d93986a7b9e6294572ea6736696119c195c1a9f5eae642d3c5fcd44e49dea810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038781169182179092556040805160a081018252878152607354602080830191825267ffffffffffffffff808816848601908152606085018a81528b89166080870181815260008a8152607687528981209851895596519c88019c909c5591516002909601805491519b51969093167fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000090911617600160401b9a15159a909a02999099177fffffff0000000000000000000000000000000000000000ffffffffffffffffff166901000000000000000000949097169390930295909517909155815190815292830187905292939290917fd957cf2340073335d256f72a9ef89cf1a43c31143341a6a53575ef33e987beb891016131bf565b6040516001600160a01b038085166024830152831660448201526064810182905261149b9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612fe3565b6001600160a01b03811660009081526076602052604090206002810154600160401b900460ff1661399f5760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b60448201526064016109cc565b60028101546075805467ffffffffffffffff909216916139c1906001906143f2565b815481106139d1576139d161445b565b600091825260209091200154607580546001600160a01b039092169167ffffffffffffffff8416908110613a0757613a0761445b565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806076600060758467ffffffffffffffff1681548110613a5757613a5761445b565b6000918252602080832091909101546001600160a01b031683528201929092526040019020600201805467ffffffffffffffff191667ffffffffffffffff929092169190911790556075805480613ab057613ab0614705565b60008281526020808220830160001990810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559092019092556001600160a01b039490941681526076909352505060408120818155600181019190915560020180547fffffff0000000000000000000000000000000000000000000000000000000000169055565b6001600160a01b038216600090815260766020526040812080549091613b6384836144ce565b808455600284015460408051858152602081018490529293506001600160a01b036901000000000000000000909204821692918816917fd957cf2340073335d256f72a9ef89cf1a43c31143341a6a53575ef33e987beb8910160405180910390a35050505050565b60208101516000906001613258565b60606110418484600085856001600160a01b0385163b613c3c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109cc565b600080866001600160a01b03168587604051613c5891906144b2565b60006040518083038185875af1925050503d8060008114613c95576040519150601f19603f3d011682016040523d82523d6000602084013e613c9a565b606091505b5091509150613caa828286613cb5565b979650505050505050565b60608315613cc4575081611044565b825115613cd45782518084602001fd5b8160405162461bcd60e51b81526004016109cc919061471b565b6040518060400160405280613d01613d13565b8152602001613d0e613d13565b905290565b60405180604001604052806002906020820280368337509192915050565b600060a08284031215613d4357600080fd5b50919050565b60008060c08385031215613d5c57600080fd5b82359150613d6d8460208501613d31565b90509250929050565b600060c08284031215613d4357600080fd5b6000806000806000806101e08789031215613da257600080fd5b8635955060208701359450613dba8860408901613d76565b93506101008701359250613dd2886101208901613d31565b91506101c087013590509295509295509295565b600060208284031215613df857600080fd5b5035919050565b6001600160a01b0381168114611c4157600080fd5b600060208284031215613e2657600080fd5b813561104481613dff565b60008060006101008486031215613e4757600080fd5b83359250613e588560208601613d76565b915060e084013590509250925092565b60006102608284031215613d4357600080fd5b6000806102808385031215613e8f57600080fd5b613e998484613e68565b94610260939093013593505050565b6000806000806102c08587031215613ebf57600080fd5b84359350613ed08660208701613e68565b925061028085013591506102a0850135613ee981613dff565b939692955090935050565b6000806000806101208587031215613f0b57600080fd5b8435935060208501359250613f238660408701613d76565b939692955092936101000135925050565b67ffffffffffffffff81168114611c4157600080fd5b600060208284031215613f5c57600080fd5b813561104481613f34565b60008060006102a08486031215613f7d57600080fd5b83359250613f8e8560208601613e68565b915061028084013590509250925092565b634e487b7160e01b600052602160045260246000fd5b60038110611c4157634e487b7160e01b600052602160045260246000fd5b600060c08201905067ffffffffffffffff80845116835280602085015116602084015280604085015116604084015250606083015115156060830152608083015161401d81613fb5565b8060808401525060a083015160a083015292915050565b600080600080610120858703121561404b57600080fd5b8435935061405c8660208701613d76565b939693955050505060e082013591610100013590565b6000806040838503121561408557600080fd5b823561409081613dff565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b67ffffffffffffffff81811683821601908082111561360c5761360c61409e565b634e487b7160e01b600052604160045260246000fd5b6040516101e0810167ffffffffffffffff8111828210171561410f5761410f6140d5565b60405290565b6040805190810167ffffffffffffffff8111828210171561410f5761410f6140d5565b8051610eba81613dff565b8051610eba81613f34565b805160028110610eba57600080fd5b805160ff81168114610eba57600080fd5b80518015158114610eba57600080fd5b60006101e0828403121561419157600080fd5b6141996140eb565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101006141f1818501614138565b90820152610120614203848201614143565b90820152610140614215848201614143565b9082015261016061422784820161414e565b9082015261018061423984820161415d565b908201526101a061424b84820161416e565b908201526101c061425d848201614143565b908201529392505050565b600082601f83011261427957600080fd5b6040516040810181811067ffffffffffffffff8211171561429c5761429c6140d5565b80604052508060408401858111156142b357600080fd5b845b818110156142d65780356142c881613f34565b8352602092830192016142b5565b509195945050505050565b6000608082840312156142f357600080fd5b6040516040810181811067ffffffffffffffff82111715614316576143166140d5565b604052905080601f8301841361432b57600080fd5b614333614115565b80604085018681111561434557600080fd5b855b8181101561435f578035845260209384019301614347565b5081845261436d8782614268565b60208501525050505092915050565b803560038110610eba57600080fd5b600060c0828403121561439d57600080fd5b6040516060810181811067ffffffffffffffff821117156143c0576143c06140d5565b6040526143cd84846142e1565b81526143db6080840161437c565b602082015260a09290920135604083015250919050565b81810381811115610dfb57610dfb61409e565b60006080828403121561441757600080fd5b61104483836142e1565b67ffffffffffffffff82811682821603908082111561360c5761360c61409e565b60006020828403121561445457600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561448357600080fd5b815161104481613dff565b60005b838110156144a9578181015183820152602001614491565b50506000910152565b600082516144c481846020870161448e565b9190910192915050565b80820180821115610dfb57610dfb61409e565b6000602082840312156144f357600080fd5b6110448261437c565b61450581613fb5565b9052565b6040818337604082016040820160005b600281101561454c57813561452d81613f34565b67ffffffffffffffff1683526020928301929190910190600101614519565b50505061455b6080820161437c565b61456481613fb5565b608083015260a090810135910152565b6000610320820190508835825260208901356020830152604089013560408301526060890135606083015260808901356145ad81613dff565b6001600160a01b0316608083015260a08901356145c981613f34565b67ffffffffffffffff90811660a084015260c08a0135906145e982613f34565b1660c08301526145ff60e0808401908b01614509565b6101a0614610818401828c01614509565b508761026083015286610280830152856102a0830152846102c08301526146436102e08301856001600160a01b03169052565b67ffffffffffffffff831661030083015298975050505050505050565b8151805160c0830191908360005b600281101561468d57825182526020928301929091019060010161466e565b505050602090810151906040840160005b60028110156146c557835167ffffffffffffffff168252928201929082019060010161469e565b505084015190506146d960808401826144fc565b50604083015160a083015292915050565b6000602082840312156146fc57600080fd5b6110448261416e565b634e487b7160e01b600052603160045260246000fd5b602081526000825180602084015261473a81604085016020870161448e565b601f01601f1916919091016040019291505056fea264697066735822122093e7b3e33da96eda59099f24a32c892bf9bd62ea5cad77b54e6435aeb3dd1f8e64736f6c63430008110033", } // RollupUserLogicABI is the input ABI used to generate the binding from. @@ -24701,7 +24701,7 @@ func (_RollupUserLogic *RollupUserLogicFilterer) ParseUserWithdrawableFundsUpdat // StateHashPreImageLookupMetaData contains all meta data concerning the StateHashPreImageLookup contract. var StateHashPreImageLookupMetaData = &bind.MetaData{ ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"h\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"indexed\":false,\"internalType\":\"structExecutionState\",\"name\":\"executionState\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inboxMaxCount\",\"type\":\"uint256\"}],\"name\":\"HashSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"h\",\"type\":\"bytes32\"}],\"name\":\"get\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"executionState\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"inboxMaxCount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"h\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"executionState\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"inboxMaxCount\",\"type\":\"uint256\"}],\"name\":\"set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"executionState\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"inboxMaxCount\",\"type\":\"uint256\"}],\"name\":\"stateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50610a0d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806331644130146100465780638eaa6ac01461006c578063945c94941461008d575b600080fd5b61005961005436600461041d565b6100a2565b6040519081526020015b60405180910390f35b61007f61007a366004610448565b610193565b604051610063929190610483565b6100a061009b36600461050a565b6102bf565b005b60006101526100b636859003850185610598565b8051805160209182015192820151805190830151604080517f476c6f62616c2073746174653a0000000000000000000000000000000000000081870152602d810194909452604d8401959095527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116606d850152911b1660758201528251808203605d018152607d909101909252815191012090565b8261016360a0860160808701610667565b6040516020016101759392919061068b565b60405160208183030381529060405280519060200120905092915050565b61019b6103ab565b600082815260208190526040812080546101b4906106c9565b80601f01602080910402602001604051908101604052809291908181526020018280546101e0906106c9565b801561022d5780601f106102025761010080835404028352916020019161022d565b820191906000526020600020905b81548152906001019060200180831161021057829003601f168201915b50505050508060200190518101906102459190610766565b909250905060008190036102ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f48617368206e6f7420796574207365740000000000000000000000000000000060448201526064015b60405180910390fd5b915091565b6102c982826100a2565b8314610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f496e76616c69642068617368000000000000000000000000000000000000000060448201526064016102b1565b818160405160200161034492919061088c565b60408051601f1981840301815291815260008581526020819052209061036a90826108f5565b507f14c0a6b8d81f5915dacfd85e41ae4798343ec29de408ac4c13360c7238ae0ad983838360405161039e939291906109b5565b60405180910390a1505050565b60405180604001604052806103be6103cb565b815260200160005b905290565b60405180604001604052806103de6103e7565b81526020016103c65b60405180604001604052806002906020820280368337509192915050565b600060a0828403121561041757600080fd5b50919050565b60008060c0838503121561043057600080fd5b61043a8484610405565b9460a0939093013593505050565b60006020828403121561045a57600080fd5b5035919050565b6003811061047f57634e487b7160e01b600052602160045260246000fd5b9052565b8251805160c0830191908360005b60028110156104b0578251825260209283019290910190600101610491565b505050602090810151906040840160005b60028110156104e857835167ffffffffffffffff16825292820192908201906001016104c1565b505085015190506104fc6080840182610461565b508260a08301529392505050565b600080600060e0848603121561051f57600080fd5b833592506105308560208601610405565b915060c084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561057957610579610540565b60405290565b67ffffffffffffffff8116811461059557600080fd5b50565b6000608082840312156105aa57600080fd5b6105b2610556565b83601f8401126105c157600080fd5b6105c9610556565b8060408501868111156105db57600080fd5b855b818110156105f55780358452602093840193016105dd565b5081845286605f87011261060857600080fd5b610610610556565b9250829150608086018781111561062657600080fd5b8082101561064b5781356106398161057f565b84526020938401939190910190610626565b50506020830152509392505050565b6003811061059557600080fd5b60006020828403121561067957600080fd5b81356106848161065a565b9392505050565b8381528260208201526000600383106106b457634e487b7160e01b600052602160045260246000fd5b5060f89190911b604082015260410192915050565b600181811c908216806106dd57607f821691505b60208210810361041757634e487b7160e01b600052602260045260246000fd5b600082601f83011261070e57600080fd5b610716610556565b80604084018581111561072857600080fd5b845b8181101561074b57805161073d8161057f565b84526020938401930161072a565b509095945050505050565b80516107618161065a565b919050565b60008082840360c081121561077a57600080fd5b60a081121561078857600080fd5b610790610556565b608082121561079e57600080fd5b6107a6610556565b915085601f8601126107b757600080fd5b6107bf610556565b8060408701888111156107d157600080fd5b875b818110156107eb5780518452602093840193016107d3565b508185526107f989826106fd565b602086015250505081815261081060808601610756565b602082015260a094909401519395939450505050565b6040818337604082016040820160005b600281101561086957813561084a8161057f565b67ffffffffffffffff1683526020928301929190910190600101610836565b505050608081013561087a8161065a565b6108876080840182610461565b505050565b60c0810161089a8285610826565b8260a08301529392505050565b601f82111561088757600081815260208120601f850160051c810160208610156108ce5750805b601f850160051c820191505b818110156108ed578281556001016108da565b505050505050565b815167ffffffffffffffff81111561090f5761090f610540565b6109238161091d84546106c9565b846108a7565b602080601f83116001811461095857600084156109405750858301515b600019600386901b1c1916600185901b1785556108ed565b600085815260208120601f198616915b8281101561098757888601518255948401946001909101908401610968565b50858210156109a55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b83815260e081016109c96020830185610826565b8260c083015294935050505056fea2646970667358221220d0ed545f8625d4422cd4a6306c6e46af920c1e32ce4225ffb24ad77981a2c49364736f6c63430008110033", + Bin: "0x608060405234801561001057600080fd5b50610a0d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806331644130146100465780638eaa6ac01461006c578063945c94941461008d575b600080fd5b61005961005436600461041d565b6100a2565b6040519081526020015b60405180910390f35b61007f61007a366004610448565b610193565b604051610063929190610483565b6100a061009b36600461050a565b6102bf565b005b60006101526100b636859003850185610598565b8051805160209182015192820151805190830151604080517f476c6f62616c2073746174653a0000000000000000000000000000000000000081870152602d810194909452604d8401959095527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116606d850152911b1660758201528251808203605d018152607d909101909252815191012090565b8261016360a0860160808701610667565b6040516020016101759392919061068b565b60405160208183030381529060405280519060200120905092915050565b61019b6103ab565b600082815260208190526040812080546101b4906106c9565b80601f01602080910402602001604051908101604052809291908181526020018280546101e0906106c9565b801561022d5780601f106102025761010080835404028352916020019161022d565b820191906000526020600020905b81548152906001019060200180831161021057829003601f168201915b50505050508060200190518101906102459190610766565b909250905060008190036102ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f48617368206e6f7420796574207365740000000000000000000000000000000060448201526064015b60405180910390fd5b915091565b6102c982826100a2565b8314610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f496e76616c69642068617368000000000000000000000000000000000000000060448201526064016102b1565b818160405160200161034492919061088c565b60408051601f1981840301815291815260008581526020819052209061036a90826108f5565b507f14c0a6b8d81f5915dacfd85e41ae4798343ec29de408ac4c13360c7238ae0ad983838360405161039e939291906109b5565b60405180910390a1505050565b60405180604001604052806103be6103cb565b815260200160005b905290565b60405180604001604052806103de6103e7565b81526020016103c65b60405180604001604052806002906020820280368337509192915050565b600060a0828403121561041757600080fd5b50919050565b60008060c0838503121561043057600080fd5b61043a8484610405565b9460a0939093013593505050565b60006020828403121561045a57600080fd5b5035919050565b6003811061047f57634e487b7160e01b600052602160045260246000fd5b9052565b8251805160c0830191908360005b60028110156104b0578251825260209283019290910190600101610491565b505050602090810151906040840160005b60028110156104e857835167ffffffffffffffff16825292820192908201906001016104c1565b505085015190506104fc6080840182610461565b508260a08301529392505050565b600080600060e0848603121561051f57600080fd5b833592506105308560208601610405565b915060c084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561057957610579610540565b60405290565b67ffffffffffffffff8116811461059557600080fd5b50565b6000608082840312156105aa57600080fd5b6105b2610556565b83601f8401126105c157600080fd5b6105c9610556565b8060408501868111156105db57600080fd5b855b818110156105f55780358452602093840193016105dd565b5081845286605f87011261060857600080fd5b610610610556565b9250829150608086018781111561062657600080fd5b8082101561064b5781356106398161057f565b84526020938401939190910190610626565b50506020830152509392505050565b6003811061059557600080fd5b60006020828403121561067957600080fd5b81356106848161065a565b9392505050565b8381528260208201526000600383106106b457634e487b7160e01b600052602160045260246000fd5b5060f89190911b604082015260410192915050565b600181811c908216806106dd57607f821691505b60208210810361041757634e487b7160e01b600052602260045260246000fd5b600082601f83011261070e57600080fd5b610716610556565b80604084018581111561072857600080fd5b845b8181101561074b57805161073d8161057f565b84526020938401930161072a565b509095945050505050565b80516107618161065a565b919050565b60008082840360c081121561077a57600080fd5b60a081121561078857600080fd5b610790610556565b608082121561079e57600080fd5b6107a6610556565b915085601f8601126107b757600080fd5b6107bf610556565b8060408701888111156107d157600080fd5b875b818110156107eb5780518452602093840193016107d3565b508185526107f989826106fd565b602086015250505081815261081060808601610756565b602082015260a094909401519395939450505050565b6040818337604082016040820160005b600281101561086957813561084a8161057f565b67ffffffffffffffff1683526020928301929190910190600101610836565b505050608081013561087a8161065a565b6108876080840182610461565b505050565b60c0810161089a8285610826565b8260a08301529392505050565b601f82111561088757600081815260208120601f850160051c810160208610156108ce5750805b601f850160051c820191505b818110156108ed578281556001016108da565b505050505050565b815167ffffffffffffffff81111561090f5761090f610540565b6109238161091d84546106c9565b846108a7565b602080601f83116001811461095857600084156109405750858301515b600019600386901b1c1916600185901b1785556108ed565b600085815260208120601f198616915b8281101561098757888601518255948401946001909101908401610968565b50858210156109a55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b83815260e081016109c96020830185610826565b8260c083015294935050505056fea26469706673582212201810aafa2710cf085af645b315f1aaef8f94d38c67e5d40ba1c50a9af3f75ff164736f6c63430008110033", } // StateHashPreImageLookupABI is the input ABI used to generate the binding from. From 1b39678bfb204c3e29f7d2e24b37f6c41d5cd48c Mon Sep 17 00:00:00 2001 From: Raul Jordan Date: Fri, 24 May 2024 15:28:23 -0500 Subject: [PATCH 2/4] deposit into pool, wait, then trigger confirmation --- assertions/pool.go | 57 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 40 insertions(+), 17 deletions(-) diff --git a/assertions/pool.go b/assertions/pool.go index 885f8f161..bea97fbb9 100644 --- a/assertions/pool.go +++ b/assertions/pool.go @@ -18,28 +18,19 @@ type useAssertionPoolArgs struct { func (m *Manager) useAssertionPool( ctx context.Context, args useAssertionPoolArgs, -) { +) protocol.Assertion { assertionPool, err := m.getOrCreateAssertionPool(ctx, args) if err != nil { panic(err) } -} + // Max parameter as a config into how much to deposit into the pool. + assertionPool.depositIntoPool(ctx, args) -type assertionStakingPool struct{} + // After this, we monitor the pool until it is ready to be posted. + assertionPool.waitUntilFunded(ctx, monitorPoolCreatorArgs{}) -// Get an assertion staking pool for the assertion we wish to post. -func (m *Manager) getOrCreateAssertionPool( - ctx context.Context, - args useAssertionPoolArgs, -) (*assertionStakingPool, error) { - var poolAddr common.Address - poolAddrOpt := m.checkAssertionPoolCreated(ctx, args) - if poolAddrOpt.IsSome() { - poolAddr = poolAddrOpt.Unwrap() - } else { - m.createAssertionStakingPool(ctx, args) - } - return nil, nil + // Then, we can trigger the posting of the assertion. + return assertionPool.postAssertionToPool(ctx, monitorPoolCreatorArgs{}) } func (m *Manager) createAssertionStakingPool(ctx context.Context, args useAssertionPoolArgs) common.Address { @@ -89,16 +80,48 @@ func (m *Manager) checkAssertionPoolCreated( return option.None[common.Address]() } +// Get an assertion staking pool for the assertion we wish to post. +func (m *Manager) getOrCreateAssertionPool( + ctx context.Context, + args useAssertionPoolArgs, +) (*assertionStakingPool, error) { + var poolAddr common.Address + poolAddrOpt := m.checkAssertionPoolCreated(ctx, args) + if poolAddrOpt.IsSome() { + poolAddr = poolAddrOpt.Unwrap() + } else { + poolAddr = m.createAssertionStakingPool(ctx, args) + } + return &assertionStakingPool{addr: poolAddr}, nil +} + +type assertionStakingPool struct { + addr common.Address +} + type monitorPoolCreatorArgs struct { parentAssertion protocol.AssertionHash assertionHash protocol.AssertionHash } +func (p *assertionStakingPool) depositIntoPool( + ctx context.Context, + args useAssertionPoolArgs, +) { +} + // Monitor any staking pools that we care about which reach the threshold. // Should we block until the pool threshold is reached and not post more? // There is only one canonical assertion branch, so yes we likely do have to wait. -func (m *Manager) monitorAssertionPool( +func (p *assertionStakingPool) waitUntilFunded( ctx context.Context, args monitorPoolCreatorArgs, ) { } + +func (p *assertionStakingPool) postAssertionToPool( + ctx context.Context, + args monitorPoolCreatorArgs, +) protocol.Assertion { + return nil +} From 0638a6acb8371dc0709c775fa57ce43987ce078f Mon Sep 17 00:00:00 2001 From: Raul Jordan Date: Tue, 28 May 2024 14:51:48 -0500 Subject: [PATCH 3/4] assertion pool logic --- assertions/manager.go | 28 ++++ assertions/pool.go | 127 --------------- assertions/trustless_bond_pool.go | 212 +++++++++++++++++++++++++ assertions/trustless_bond_pool_test.go | 1 + 4 files changed, 241 insertions(+), 127 deletions(-) delete mode 100644 assertions/pool.go create mode 100644 assertions/trustless_bond_pool.go create mode 100644 assertions/trustless_bond_pool_test.go diff --git a/assertions/manager.go b/assertions/manager.go index 70da79e17..6ffbcd0e8 100644 --- a/assertions/manager.go +++ b/assertions/manager.go @@ -37,6 +37,8 @@ var ( safeBlockDelayCounter = metrics.GetOrRegisterCounter("arb/validator/scanner/safe_block_delay", nil) ) +const defaultAssertionPoolMaxGwei = uint64(1000000000) // 1 ETH. + // The Manager struct is responsible for several tasks related to the assertion chain: // 1. It continuously polls the assertion chain to check for posted, on-chain assertions starting from the latest confirmed assertion up to the newest one. // 2. As the assertion chain advances, the Manager keeps polling to stay updated. @@ -70,6 +72,16 @@ type Manager struct { startPostingSignal chan struct{} layerZeroHeightsCache *protocol.LayerZeroHeights layerZeroHeightsCacheLock sync.RWMutex + poolingConfig *AssertionPoolingConfig +} + +type AssertionPoolingConfig struct { + Enable bool // Whether or not to enable the use of trustless assertion bond pools. + // The max amount of gwei to deposit into an assertion bond pool at a time. If 0, then a warning will be logged + // and no amount will be pooled. + MaxGweiToPool uint64 + AssertionPoolCreatorFactoryAddr common.Address // The address of the assertion bonding pool creator contract. + PoolingTxOpts *bind.TransactOpts } type assertionChainData struct { @@ -92,6 +104,18 @@ func WithDangerousReadyToPost() Opt { } } +func WithAssertionPoolCreatorFactoryAddr(addr common.Address) Opt { + return func(m *Manager) { + m.poolingConfig.AssertionPoolCreatorFactoryAddr = addr + } +} + +func WithPoolingTxOpts(opts *bind.TransactOpts) Opt { + return func(m *Manager) { + m.poolingConfig.PoolingTxOpts = opts + } +} + // NewManager creates a manager from the required dependencies. func NewManager( chain protocol.AssertionChain, @@ -140,6 +164,10 @@ func NewManager( observedCanonicalAssertions: make(chan protocol.AssertionHash, 1000), isReadyToPost: false, startPostingSignal: make(chan struct{}), + poolingConfig: &AssertionPoolingConfig{ + Enable: true, // Enable the use of assertion bonding pools by default. + MaxGweiToPool: defaultAssertionPoolMaxGwei, + }, } for _, o := range opts { o(m) diff --git a/assertions/pool.go b/assertions/pool.go deleted file mode 100644 index bea97fbb9..000000000 --- a/assertions/pool.go +++ /dev/null @@ -1,127 +0,0 @@ -package assertions - -import ( - "context" - - protocol "github.com/OffchainLabs/bold/chain-abstraction" - "github.com/OffchainLabs/bold/containers/option" - pools "github.com/OffchainLabs/bold/solgen/go/assertionStakingPoolgen" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" -) - -type useAssertionPoolArgs struct { - parentAssertion protocol.AssertionHash - assertionHash protocol.AssertionHash -} - -func (m *Manager) useAssertionPool( - ctx context.Context, - args useAssertionPoolArgs, -) protocol.Assertion { - assertionPool, err := m.getOrCreateAssertionPool(ctx, args) - if err != nil { - panic(err) - } - // Max parameter as a config into how much to deposit into the pool. - assertionPool.depositIntoPool(ctx, args) - - // After this, we monitor the pool until it is ready to be posted. - assertionPool.waitUntilFunded(ctx, monitorPoolCreatorArgs{}) - - // Then, we can trigger the posting of the assertion. - return assertionPool.postAssertionToPool(ctx, monitorPoolCreatorArgs{}) -} - -func (m *Manager) createAssertionStakingPool(ctx context.Context, args useAssertionPoolArgs) common.Address { - return common.Address{} -} - -// Scan for any pools created since the latest confirmed assertion -// from the staking pool factory. -func (m *Manager) checkAssertionPoolCreated( - ctx context.Context, - args useAssertionPoolArgs, -) option.Option[common.Address] { - poolFactory, err := pools.NewAssertionStakingPoolCreator(common.Address{}, m.backend) - if err != nil { - panic(err) - } - parent, err := m.chain.ReadAssertionCreationInfo(ctx, args.parentAssertion) - if err != nil { - panic(err) - } - // Keep filtering until we reach the threshold. - filterOpts := &bind.FilterOpts{ - Start: parent.CreationBlock, - End: nil, - } - it, err := poolFactory.FilterNewAssertionPoolCreated( - filterOpts, - []common.Address{m.rollupAddr}, - [][32]byte{ - args.assertionHash.Hash, - }, - ) - if err != nil { - panic(err) - } - defer func() { - if err = it.Close(); err != nil { - panic(err) - } - }() - for it.Next() { - if it.Error() != nil { - panic(err) - } - return option.Some(it.Event.AssertionPool) - } - return option.None[common.Address]() -} - -// Get an assertion staking pool for the assertion we wish to post. -func (m *Manager) getOrCreateAssertionPool( - ctx context.Context, - args useAssertionPoolArgs, -) (*assertionStakingPool, error) { - var poolAddr common.Address - poolAddrOpt := m.checkAssertionPoolCreated(ctx, args) - if poolAddrOpt.IsSome() { - poolAddr = poolAddrOpt.Unwrap() - } else { - poolAddr = m.createAssertionStakingPool(ctx, args) - } - return &assertionStakingPool{addr: poolAddr}, nil -} - -type assertionStakingPool struct { - addr common.Address -} - -type monitorPoolCreatorArgs struct { - parentAssertion protocol.AssertionHash - assertionHash protocol.AssertionHash -} - -func (p *assertionStakingPool) depositIntoPool( - ctx context.Context, - args useAssertionPoolArgs, -) { -} - -// Monitor any staking pools that we care about which reach the threshold. -// Should we block until the pool threshold is reached and not post more? -// There is only one canonical assertion branch, so yes we likely do have to wait. -func (p *assertionStakingPool) waitUntilFunded( - ctx context.Context, - args monitorPoolCreatorArgs, -) { -} - -func (p *assertionStakingPool) postAssertionToPool( - ctx context.Context, - args monitorPoolCreatorArgs, -) protocol.Assertion { - return nil -} diff --git a/assertions/trustless_bond_pool.go b/assertions/trustless_bond_pool.go new file mode 100644 index 000000000..a2ce27450 --- /dev/null +++ b/assertions/trustless_bond_pool.go @@ -0,0 +1,212 @@ +package assertions + +import ( + "context" + "math/big" + "time" + + protocol "github.com/OffchainLabs/bold/chain-abstraction" + "github.com/OffchainLabs/bold/containers/option" + pools "github.com/OffchainLabs/bold/solgen/go/assertionStakingPoolgen" + "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/log" +) + +type useAssertionPoolArgs struct { + parentAssertion protocol.AssertionHash + assertionHash protocol.AssertionHash +} + +func (m *Manager) useAssertionPool( + ctx context.Context, + args useAssertionPoolArgs, +) protocol.Assertion { + poolFactory, err := pools.NewAssertionStakingPoolCreator( + m.poolingConfig.AssertionPoolCreatorFactoryAddr, + m.backend, + ) + if err != nil { + panic(err) + } + assertionPool, err := m.getOrCreateAssertionPool(ctx, poolFactory, args) + if err != nil { + panic(err) + } + // Max parameter as a config into how much to deposit into the pool. + assertionPool.depositIntoPool(ctx, args) + + // After this, we monitor the pool until it is ready to be posted. + assertionPool.waitUntilFunded(ctx, poolFactory, monitorPoolCreatorArgs{}) + + // Then, we can trigger the posting of the assertion. + return assertionPool.postAssertionToPool(ctx, poolFactory, monitorPoolCreatorArgs{}) +} + +// Get an assertion staking pool for the assertion we wish to post. +func (m *Manager) getOrCreateAssertionPool( + ctx context.Context, + factory *pools.AssertionStakingPoolCreator, + args useAssertionPoolArgs, +) (*assertionStakingPool, error) { + var poolCreation createdPool + poolOpt := m.checkAssertionPoolCreated(ctx, factory, args) + if poolOpt.IsSome() { + poolCreation = poolOpt.Unwrap() + } else { + poolCreation = m.createAssertionStakingPool(ctx, factory, args) + } + pool, err := pools.NewAssertionStakingPool(poolCreation.address, m.backend) + if err != nil { + return nil, err + } + return &assertionStakingPool{ + cfg: m.poolingConfig, + addr: poolCreation.address, + assertionHash: poolCreation.assertionHash, + pool: pool, + createdAtBlock: poolCreation.createdAtBlock, + }, nil +} + +type createdPool struct { + assertionHash common.Hash + address common.Address + createdAtBlock uint64 +} + +// Scan for any pools created since the latest confirmed assertion +// from the staking pool factory. +func (m *Manager) checkAssertionPoolCreated( + ctx context.Context, + factory *pools.AssertionStakingPoolCreator, + args useAssertionPoolArgs, +) option.Option[createdPool] { + parent, err := m.chain.ReadAssertionCreationInfo(ctx, args.parentAssertion) + if err != nil { + panic(err) + } + var query = ethereum.FilterQuery{ + FromBlock: new(big.Int).SetUint64(parent.CreationBlock), + ToBlock: nil, + Addresses: []common.Address{m.rollupAddr}, + Topics: [][]common.Hash{ + {args.assertionHash.Hash}, + }, + } + logs, err := m.backend.FilterLogs(ctx, query) + if err != nil { + panic(err) + } + if len(logs) != 1 { + return option.None[createdPool]() + } + poolDetails, err := factory.ParseNewAssertionPoolCreated(logs[0]) + if err != nil { + panic(err) + } + return option.Some(createdPool{ + assertionHash: poolDetails.AssertionHash, + address: poolDetails.AssertionPool, + createdAtBlock: poolDetails.Raw.BlockNumber, + }) +} + +func (m *Manager) createAssertionStakingPool( + ctx context.Context, + factory *pools.AssertionStakingPoolCreator, + args useAssertionPoolArgs, +) createdPool { + // TODO: Do this through the chain abstraction... + // Get the receipt and the address of the new pool. + // factory.CreatePool(m.poolingConfig.PoolingTxOpts, m.rollupAddr, args.assertionHash.Hash) + return createdPool{ + assertionHash: args.assertionHash.Hash, + // address: , + } +} + +type assertionStakingPool struct { + cfg *AssertionPoolingConfig + addr common.Address + assertionHash common.Hash + pool *pools.AssertionStakingPool + createdAtBlock uint64 +} + +type monitorPoolCreatorArgs struct { + parentAssertion protocol.AssertionHash + assertionHash protocol.AssertionHash +} + +func (p *assertionStakingPool) depositIntoPool( + ctx context.Context, + args useAssertionPoolArgs, +) { + gweiToDeposit := new(big.Int).SetUint64(p.cfg.MaxGweiToPool) + gweiToWei := big.NewInt(1e9) // 10^9 + weiToDeposit := new(big.Int).Mul(gweiToDeposit, gweiToWei) + _, _ = p.pool.DepositIntoPool(p.cfg.PoolingTxOpts, weiToDeposit) +} + +// Monitor any staking pools that we care about which reach the threshold. +// Should we block until the pool threshold is reached and not post more? +// There is only one canonical assertion branch, so yes we likely do have to wait. +func (p *assertionStakingPool) waitUntilFunded( + ctx context.Context, + factory *pools.AssertionStakingPoolCreator, + args monitorPoolCreatorArgs, +) { + fromBlock := p.createdAtBlock + // latestBlock, err := p.pool.HeaderByNumber(ctx, w.chain.GetDesiredRpcHeadBlockNumber()) + // if err != nil { + // log.Error("Could not get latest header", "err", err) + // continue + // } + + latestBlock := new(big.Int) + ticker := time.NewTicker(time.Second) + defer ticker.Stop() + for { + select { + case <-ticker.C: + if !latestBlock.Number.IsUint64() { + log.Error("latest block header number is not a uint64") + continue + } + toBlock := latestBlock.Number.Uint64() + if fromBlock == toBlock { + continue + } + // Store the parent assertion details and use that to determine if funded. + // Scan for all deposits into the pool until the base stake threshold is reached. + // Use the base stake from the parent assertion as the factor here. + filterOpts := &bind.FilterOpts{ + Context: ctx, + Start: p.createdAtBlock, + End: nil, + } + it, err := p.pool.FilterStakeDeposited(filterOpts, nil) + for it.Next() { + // Get the balance after the deposit at that block number. + // If balance reached... + if true { + return + } + } + case <-ctx.Done(): + // TODO: Return an error. + return + } + } +} + +func (p *assertionStakingPool) postAssertionToPool( + ctx context.Context, + factory *pools.AssertionStakingPoolCreator, + args monitorPoolCreatorArgs, +) protocol.Assertion { + // p.pool.CreateAssertion(p.cfg.PoolingTxOpts, args.Hash) + return nil +} diff --git a/assertions/trustless_bond_pool_test.go b/assertions/trustless_bond_pool_test.go new file mode 100644 index 000000000..3ad9dd5d4 --- /dev/null +++ b/assertions/trustless_bond_pool_test.go @@ -0,0 +1 @@ +package assertions From 6e965cd60565a0c337d49d426126fd767f077178 Mon Sep 17 00:00:00 2001 From: Raul Jordan Date: Tue, 28 May 2024 14:59:38 -0500 Subject: [PATCH 4/4] trustless pool --- assertions/trustless_bond_pool.go | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/assertions/trustless_bond_pool.go b/assertions/trustless_bond_pool.go index a2ce27450..a4fc328b9 100644 --- a/assertions/trustless_bond_pool.go +++ b/assertions/trustless_bond_pool.go @@ -8,6 +8,7 @@ import ( protocol "github.com/OffchainLabs/bold/chain-abstraction" "github.com/OffchainLabs/bold/containers/option" pools "github.com/OffchainLabs/bold/solgen/go/assertionStakingPoolgen" + "github.com/OffchainLabs/bold/solgen/go/mocksgen" "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" @@ -129,6 +130,7 @@ func (m *Manager) createAssertionStakingPool( type assertionStakingPool struct { cfg *AssertionPoolingConfig + backend protocol.ChainBackend addr common.Address assertionHash common.Hash pool *pools.AssertionStakingPool @@ -159,13 +161,26 @@ func (p *assertionStakingPool) waitUntilFunded( args monitorPoolCreatorArgs, ) { fromBlock := p.createdAtBlock - // latestBlock, err := p.pool.HeaderByNumber(ctx, w.chain.GetDesiredRpcHeadBlockNumber()) - // if err != nil { - // log.Error("Could not get latest header", "err", err) - // continue - // } + latestBlock, err := p.backend.HeaderByNumber(ctx, nil) // TODO: Get desired block number. + if err != nil { + panic(err) + } + tokenAddr, err := p.pool.StakeToken(&bind.CallOpts{Context: ctx}) // TODO: Get desired block number. + if err != nil { + panic(err) + } + stakeToken, err := mocksgen.NewTestWETH9(tokenAddr, p.backend) // TODO: Do not use the mock here, just use an ierc20 binding. + if err != nil { + panic(err) + } + bal, err := stakeToken.BalanceOf(&bind.CallOpts{Context: ctx}, p.addr) // TODO: Get desired block number. + if err != nil { + panic(err) + } + + // If balance is already enough, return. + _ = bal - latestBlock := new(big.Int) ticker := time.NewTicker(time.Second) defer ticker.Stop() for { @@ -188,6 +203,9 @@ func (p *assertionStakingPool) waitUntilFunded( End: nil, } it, err := p.pool.FilterStakeDeposited(filterOpts, nil) + if err != nil { + panic(err) + } for it.Next() { // Get the balance after the deposit at that block number. // If balance reached...