Commit 713ad666 authored by clabby's avatar clabby

Add preimage oracle tests

parent 41dff4ad
......@@ -31,7 +31,7 @@ var (
// FaultDisputeGameMetaData contains all meta data concerning the FaultDisputeGame contract.
var FaultDisputeGameMetaData = &bind.MetaData{
ABI: "[{\"inputs\":[{\"internalType\":\"Claim\",\"name\":\"_absolutePrestate\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_maxGameDepth\",\"type\":\"uint256\"},{\"internalType\":\"Duration\",\"name\":\"_gameDuration\",\"type\":\"uint64\"},{\"internalType\":\"contractIBigStepper\",\"name\":\"_vm\",\"type\":\"address\"},{\"internalType\":\"contractL2OutputOracle\",\"name\":\"_l2oo\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CannotDefendRootClaim\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClaimAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClockNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClockTimeExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GameDepthExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GameNotInProgress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidParent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPrestate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidStep\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"parentIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"Claim\",\"name\":\"claim\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimant\",\"type\":\"address\"}],\"name\":\"Move\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumGameStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"Resolved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ABSOLUTE_PRESTATE\",\"outputs\":[{\"internalType\":\"Claim\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAME_DURATION\",\"outputs\":[{\"internalType\":\"Duration\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_OUTPUT_ORACLE\",\"outputs\":[{\"internalType\":\"contractL2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_GAME_DEPTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VM\",\"outputs\":[{\"internalType\":\"contractIBigStepper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_ident\",\"type\":\"uint256\"}],\"name\":\"addLocalData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_parentIndex\",\"type\":\"uint256\"},{\"internalType\":\"Claim\",\"name\":\"_claim\",\"type\":\"bytes32\"}],\"name\":\"attack\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bondManager\",\"outputs\":[{\"internalType\":\"contractIBondManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"claimData\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"parentIndex\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"countered\",\"type\":\"bool\"},{\"internalType\":\"Claim\",\"name\":\"claim\",\"type\":\"bytes32\"},{\"internalType\":\"Position\",\"name\":\"position\",\"type\":\"uint128\"},{\"internalType\":\"Clock\",\"name\":\"clock\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimDataLen\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"len_\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createdAt\",\"outputs\":[{\"internalType\":\"Timestamp\",\"name\":\"createdAt_\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_parentIndex\",\"type\":\"uint256\"},{\"internalType\":\"Claim\",\"name\":\"_claim\",\"type\":\"bytes32\"}],\"name\":\"defend\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"extraData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"extraData_\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gameData\",\"outputs\":[{\"internalType\":\"GameType\",\"name\":\"gameType_\",\"type\":\"uint8\"},{\"internalType\":\"Claim\",\"name\":\"rootClaim_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"extraData_\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gameStart\",\"outputs\":[{\"internalType\":\"Timestamp\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gameType\",\"outputs\":[{\"internalType\":\"GameType\",\"name\":\"gameType_\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1Head\",\"outputs\":[{\"internalType\":\"Hash\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2BlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"l2BlockNumber_\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_challengeIndex\",\"type\":\"uint256\"},{\"internalType\":\"Claim\",\"name\":\"_claim\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"_isAttack\",\"type\":\"bool\"}],\"name\":\"move\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"enumGameStatus\",\"name\":\"status_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rootClaim\",\"outputs\":[{\"internalType\":\"Claim\",\"name\":\"rootClaim_\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"status\",\"outputs\":[{\"internalType\":\"enumGameStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_claimIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isAttack\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"_stateData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"step\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]",
Bin: "0x6101806040523480156200001257600080fd5b506040516200294638038062002946833981016040819052620000359162000091565b6000608081905260a052600360c05260e094909452610100929092526001600160401b0316610120526001600160a01b0390811661014052166101605262000105565b6001600160a01b03811681146200008e57600080fd5b50565b600080600080600060a08688031215620000aa57600080fd5b85516020870151604088015191965094506001600160401b0381168114620000d157600080fd5b6060870151909350620000e48162000078565b6080870151909250620000f78162000078565b809150509295509295909350565b60805160a05160c05160e0516101005161012051610140516101605161279c620001aa6000396000818161047901526119c50152600081816103ec0152818161153e015261181c0152600081816104ad015281816107db0152610e2c0152600081816102ee015281816106e301528181610c6b01526113420152600081816101e9015261147c01526000610a5301526000610a2a01526000610a01015261279c6000f3fe6080604052600436106101965760003560e01c80638980e0cc116100e1578063c31b29ce1161008a578063cf09e0d011610064578063cf09e0d014610546578063d8cc1a3c14610565578063f05a6c3914610585578063fa24f743146105a557600080fd5b8063c31b29ce1461049b578063c55cd0c7146104cf578063c6f0308c146104e257600080fd5b8063bbdc02db116100bb578063bbdc02db1461040e578063bcef3b551461042a578063c0c3a0921461046757600080fd5b80638980e0cc146103855780638b85902b1461039a57806392931298146103da57600080fd5b80634778efe811610143578063632247ea1161011d578063632247ea146103475780636361506d1461035a5780638129fc1c1461037057600080fd5b80634778efe8146102dc57806354fd4d5014610310578063609d33341461033257600080fd5b80633218b99d116101745780633218b99d1461022e57806335fef56714610268578063363cc4271461027d57600080fd5b8063200d2ed21461019b578063266198f9146101d75780632810e1d614610219575b600080fd5b3480156101a757600080fd5b506000546101c19068010000000000000000900460ff1681565b6040516101ce9190612143565b60405180910390f35b3480156101e357600080fd5b5061020b7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101ce565b34801561022557600080fd5b506101c16105c9565b34801561023a57600080fd5b5060005461024f9067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101ce565b61027b610276366004612184565b6109ea565b005b34801561028957600080fd5b506000546102b7906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ce565b3480156102e857600080fd5b5061020b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561031c57600080fd5b506103256109fa565b6040516101ce9190612220565b34801561033e57600080fd5b50610325610a9d565b61027b61035536600461224f565b610aaf565b34801561036657600080fd5b5061020b60015481565b34801561037c57600080fd5b5061027b6110cb565b34801561039157600080fd5b5060025461020b565b3480156103a657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036020013561020b565b3480156103e657600080fd5b506102b77f000000000000000000000000000000000000000000000000000000000000000081565b34801561041a57600080fd5b50604051600081526020016101ce565b34801561043657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033561020b565b34801561047357600080fd5b506102b77f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a757600080fd5b5061024f7f000000000000000000000000000000000000000000000000000000000000000081565b61027b6104dd366004612184565b61121c565b3480156104ee57600080fd5b506105026104fd366004612284565b611228565b6040805163ffffffff90961686529315156020860152928401919091526fffffffffffffffffffffffffffffffff908116606084015216608082015260a0016101ce565b34801561055257600080fd5b5060005467ffffffffffffffff1661024f565b34801561057157600080fd5b5061027b6105803660046122e6565b611299565b34801561059157600080fd5b5061027b6105a0366004612284565b6117bd565b3480156105b157600080fd5b506105ba611c5e565b6040516101ce93929190612370565b60008060005468010000000000000000900460ff1660028111156105ef576105ef612114565b14610626576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090610638906001906123ca565b90506fffffffffffffffffffffffffffffffff815b67ffffffffffffffff81101561072257600060028281548110610672576106726123e1565b6000918252602090912060039091020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019290915060ff64010000000090910416156106c3575061064d565b6002810154600090610707906fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000611c9c565b90508381101561071b578093508260010194505b505061064d565b50600060028381548110610738576107386123e1565b600091825260208220600390910201805490925063ffffffff908116919082146107a2576002828154811061076f5761076f6123e1565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff166107ce565b600283015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c1661081267ffffffffffffffff8316426123ca565b61082e836fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff166108429190612410565b11610879576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028381015461091b906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b6109259190612457565b67ffffffffffffffff1615801561094c57506fffffffffffffffffffffffffffffffff8414155b1561095a576002955061095f565b600195505b600080548791907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000008360028111156109a4576109a4612114565b0217905560028111156109b9576109b9612114565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a2505050505090565b6109f682826000610aaf565b5050565b6060610a257f0000000000000000000000000000000000000000000000000000000000000000611d51565b610a4e7f0000000000000000000000000000000000000000000000000000000000000000611d51565b610a777f0000000000000000000000000000000000000000000000000000000000000000611d51565b604051602001610a899392919061247e565b604051602081830303815290604052905090565b6060610aaa602080611e8e565b905090565b6000805468010000000000000000900460ff166002811115610ad357610ad3612114565b14610b0a576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015610b16575080155b15610b4d576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028481548110610b6257610b626123e1565b60009182526020918290206040805160a0810182526003909302909101805463ffffffff8116845260ff64010000000090910416151593830193909352600180840154918301919091526002928301546fffffffffffffffffffffffffffffffff80821660608501527001000000000000000000000000000000009091041660808301528254919350919086908110610bfd57610bfd6123e1565b6000918252602082206003909102018054921515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909316929092179091556060820151610c67906fffffffffffffffffffffffffffffffff1684151760011b90565b90507f0000000000000000000000000000000000000000000000000000000000000000610d26826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff161115610d68576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160009063ffffffff90811614610dc8576002836000015163ffffffff1681548110610d9757610d976123e1565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff1690505b608083015160009067ffffffffffffffff1667ffffffffffffffff1642610e01846fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff16610e159190612410565b610e1f91906123ca565b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c1667ffffffffffffffff82161115610e92576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604082901b421790506000610eb3888660009182526020526040902090565b60008181526003602052604090205490915060ff1615610eff576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016003600083815260200190815260200160002060006101000a81548160ff02191690831515021790555060026040518060a001604052808b63ffffffff1681526020016000151581526020018a8152602001876fffffffffffffffffffffffffffffffff168152602001846fffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548160ff0219169083151502179055506040820151816001015560608201518160020160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060808201518160020160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050503373ffffffffffffffffffffffffffffffffffffffff16888a7f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be60405160405180910390a4505050505050505050565b600080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000164267ffffffffffffffff161781556040805160a08101825263ffffffff815260208101929092526002919081016111507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033590565b815260016020820152604001426fffffffffffffffffffffffffffffffff908116909152825460018181018555600094855260209485902084516003909302018054958501511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090961663ffffffff909316929092179490941781556040830151818501556060830151608090930151821670010000000000000000000000000000000002929091169190911760029091015561121690436123ca565b40600155565b6109f682826001610aaf565b6002818154811061123857600080fd5b600091825260209091206003909102018054600182015460029092015463ffffffff8216935064010000000090910460ff1691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041685565b6000805468010000000000000000900460ff1660028111156112bd576112bd612114565b146112f4576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028781548110611309576113096123e1565b6000918252602082206003919091020160028101549092506fffffffffffffffffffffffffffffffff16908715821760011b90506113687f00000000000000000000000000000000000000000000000000000000000000006001612410565b611404826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1614611445576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008089156114cb57611469836fffffffffffffffffffffffffffffffff16611f25565b67ffffffffffffffff166000036114a2577f000000000000000000000000000000000000000000000000000000000000000091506114c4565b6114bd6114b06001866124f4565b865463ffffffff16611fcb565b6001015491505b50836114e5565b846001015491506114e28460016114b09190612525565b90505b8189896040516114f6929190612559565b604051809103902014611535576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600101547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f8e0cb968c8c8c8c6040518563ffffffff1660e01b815260040161159b94939291906125b2565b6020604051808303816000875af11580156115ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115de91906125e4565b600284810154929091149250600091611689906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611725886fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b61172f91906125fd565b6117399190612457565b67ffffffffffffffff161590508115158103611781576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505084547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001790945550505050505050505050565b6000805468010000000000000000900460ff1660028111156117e1576117e1612114565b14611818576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a9919061261e565b90508160010361194a576001546040517fe52f09370000000000000000000000000000000000000000000000000000000081526004810184905260248101919091526020604482015273ffffffffffffffffffffffffffffffffffffffff82169063e52f0937906064015b600060405180830381600087803b15801561192e57600080fd5b505af1158015611942573d6000803e3d6000fd5b505050505050565b81600203611ac9576040517fcf8e5cf0000000000000000000000000000000000000000000000000000000008152367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360200135600482015260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063cf8e5cf090602401606060405180830381865afa158015611a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3091906126a3565b80516040517fe52f09370000000000000000000000000000000000000000000000000000000081526004810186905260248101919091526020604482015290915073ffffffffffffffffffffffffffffffffffffffff83169063e52f093790606401600060405180830381600087803b158015611aac57600080fd5b505af1158015611ac0573d6000803e3d6000fd5b50505050505050565b81600303611b5b576040517fe52f093700000000000000000000000000000000000000000000000000000000815260048101839052367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033560248201526020604482015273ffffffffffffffffffffffffffffffffffffffff82169063e52f093790606401611914565b81600403611bf3576040517fe52f093700000000000000000000000000000000000000000000000000000000815260048101839052367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036020013560c01b60248201526008604482015273ffffffffffffffffffffffffffffffffffffffff82169063e52f093790606401611914565b816005036109f6576040517fe52f0937000000000000000000000000000000000000000000000000000000008152600481018390524660c01b60248201526008604482015273ffffffffffffffffffffffffffffffffffffffff82169063e52f093790606401611914565b6000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003356060611c95610a9d565b9050909192565b600080611d29847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1690508083036001841b600180831b0386831b17039250505092915050565b606081600003611d9457505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611dbe5780611da88161272f565b9150611db79050600a83612767565b9150611d98565b60008167ffffffffffffffff811115611dd957611dd9612654565b6040519080825280601f01601f191660200182016040528015611e03576020820181803683370190505b5090505b8415611e8657611e186001836123ca565b9150611e25600a8661277b565b611e30906030612410565b60f81b818381518110611e4557611e456123e1565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611e7f600a86612767565b9450611e07565b949350505050565b60606000611ec584367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003612410565b90508267ffffffffffffffff1667ffffffffffffffff811115611eea57611eea612654565b6040519080825280601f01601f191660200182016040528015611f14576020820181803683370190505b509150828160208401375092915050565b600080611fb2837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600167ffffffffffffffff919091161b90920392915050565b600080611fe9846fffffffffffffffffffffffffffffffff16612068565b905060028381548110611ffe57611ffe6123e1565b906000526020600020906003020191505b60028201546fffffffffffffffffffffffffffffffff82811691161461206157815460028054909163ffffffff1690811061204c5761204c6123e1565b9060005260206000209060030201915061200f565b5092915050565b600081196001830116816120fc827e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff169390931c8015179392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016003831061217e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000806040838503121561219757600080fd5b50508035926020909101359150565b60005b838110156121c15781810151838201526020016121a9565b838111156121d0576000848401525b50505050565b600081518084526121ee8160208601602086016121a6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061223360208301846121d6565b9392505050565b8035801515811461224a57600080fd5b919050565b60008060006060848603121561226457600080fd5b833592506020840135915061227b6040850161223a565b90509250925092565b60006020828403121561229657600080fd5b5035919050565b60008083601f8401126122af57600080fd5b50813567ffffffffffffffff8111156122c757600080fd5b6020830191508360208285010111156122df57600080fd5b9250929050565b600080600080600080608087890312156122ff57600080fd5b8635955061230f6020880161223a565b9450604087013567ffffffffffffffff8082111561232c57600080fd5b6123388a838b0161229d565b9096509450606089013591508082111561235157600080fd5b5061235e89828a0161229d565b979a9699509497509295939492505050565b60ff8416815282602082015260606040820152600061239260608301846121d6565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156123dc576123dc61239b565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082198211156124235761242361239b565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff8084168061247257612472612428565b92169190910692915050565b600084516124908184602089016121a6565b80830190507f2e0000000000000000000000000000000000000000000000000000000000000080825285516124cc816001850160208a016121a6565b600192019182015283516124e78160028401602088016121a6565b0160020195945050505050565b60006fffffffffffffffffffffffffffffffff8381169083168181101561251d5761251d61239b565b039392505050565b60006fffffffffffffffffffffffffffffffff8083168185168083038211156125505761255061239b565b01949350505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6040815260006125c6604083018688612569565b82810360208401526125d9818587612569565b979650505050505050565b6000602082840312156125f657600080fd5b5051919050565b600067ffffffffffffffff8381169083168181101561251d5761251d61239b565b60006020828403121561263057600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461223357600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80516fffffffffffffffffffffffffffffffff8116811461224a57600080fd5b6000606082840312156126b557600080fd5b6040516060810181811067ffffffffffffffff821117156126ff577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528251815261271260208401612683565b602082015261272360408401612683565b60408201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127605761276061239b565b5060010190565b60008261277657612776612428565b500490565b60008261278a5761278a612428565b50069056fea164736f6c634300080f000a",
Bin: "0x6101806040523480156200001257600080fd5b506040516200296638038062002966833981016040819052620000359162000091565b6000608081905260a052600360c05260e094909452610100929092526001600160401b0316610120526001600160a01b0390811661014052166101605262000105565b6001600160a01b03811681146200008e57600080fd5b50565b600080600080600060a08688031215620000aa57600080fd5b85516020870151604088015191965094506001600160401b0381168114620000d157600080fd5b6060870151909350620000e48162000078565b6080870151909250620000f78162000078565b809150509295509295909350565b60805160a05160c05160e051610100516101205161014051610160516127bc620001aa6000396000818161047901526119d70152600081816103ec0152818161153e015261181c0152600081816104ad015281816107db0152610e2c0152600081816102ee015281816106e301528181610c6b01526113420152600081816101e9015261147c01526000610a5301526000610a2a01526000610a0101526127bc6000f3fe6080604052600436106101965760003560e01c80638980e0cc116100e1578063c31b29ce1161008a578063cf09e0d011610064578063cf09e0d014610546578063d8cc1a3c14610565578063f05a6c3914610585578063fa24f743146105a557600080fd5b8063c31b29ce1461049b578063c55cd0c7146104cf578063c6f0308c146104e257600080fd5b8063bbdc02db116100bb578063bbdc02db1461040e578063bcef3b551461042a578063c0c3a0921461046757600080fd5b80638980e0cc146103855780638b85902b1461039a57806392931298146103da57600080fd5b80634778efe811610143578063632247ea1161011d578063632247ea146103475780636361506d1461035a5780638129fc1c1461037057600080fd5b80634778efe8146102dc57806354fd4d5014610310578063609d33341461033257600080fd5b80633218b99d116101745780633218b99d1461022e57806335fef56714610268578063363cc4271461027d57600080fd5b8063200d2ed21461019b578063266198f9146101d75780632810e1d614610219575b600080fd5b3480156101a757600080fd5b506000546101c19068010000000000000000900460ff1681565b6040516101ce9190612167565b60405180910390f35b3480156101e357600080fd5b5061020b7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101ce565b34801561022557600080fd5b506101c16105c9565b34801561023a57600080fd5b5060005461024f9067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101ce565b61027b6102763660046121a8565b6109ea565b005b34801561028957600080fd5b506000546102b7906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ce565b3480156102e857600080fd5b5061020b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561031c57600080fd5b506103256109fa565b6040516101ce9190612240565b34801561033e57600080fd5b50610325610a9d565b61027b61035536600461226f565b610aaf565b34801561036657600080fd5b5061020b60015481565b34801561037c57600080fd5b5061027b6110cb565b34801561039157600080fd5b5060025461020b565b3480156103a657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036020013561020b565b3480156103e657600080fd5b506102b77f000000000000000000000000000000000000000000000000000000000000000081565b34801561041a57600080fd5b50604051600081526020016101ce565b34801561043657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033561020b565b34801561047357600080fd5b506102b77f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a757600080fd5b5061024f7f000000000000000000000000000000000000000000000000000000000000000081565b61027b6104dd3660046121a8565b61121c565b3480156104ee57600080fd5b506105026104fd3660046122a4565b611228565b6040805163ffffffff90961686529315156020860152928401919091526fffffffffffffffffffffffffffffffff908116606084015216608082015260a0016101ce565b34801561055257600080fd5b5060005467ffffffffffffffff1661024f565b34801561057157600080fd5b5061027b610580366004612306565b611299565b34801561059157600080fd5b5061027b6105a03660046122a4565b6117bd565b3480156105b157600080fd5b506105ba611c82565b6040516101ce93929190612390565b60008060005468010000000000000000900460ff1660028111156105ef576105ef612138565b14610626576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090610638906001906123ea565b90506fffffffffffffffffffffffffffffffff815b67ffffffffffffffff8110156107225760006002828154811061067257610672612401565b6000918252602090912060039091020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019290915060ff64010000000090910416156106c3575061064d565b6002810154600090610707906fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000611cc0565b90508381101561071b578093508260010194505b505061064d565b5060006002838154811061073857610738612401565b600091825260208220600390910201805490925063ffffffff908116919082146107a2576002828154811061076f5761076f612401565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff166107ce565b600283015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c1661081267ffffffffffffffff8316426123ea565b61082e836fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff166108429190612430565b11610879576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028381015461091b906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b6109259190612477565b67ffffffffffffffff1615801561094c57506fffffffffffffffffffffffffffffffff8414155b1561095a576002955061095f565b600195505b600080548791907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000008360028111156109a4576109a4612138565b0217905560028111156109b9576109b9612138565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a2505050505090565b6109f682826000610aaf565b5050565b6060610a257f0000000000000000000000000000000000000000000000000000000000000000611d75565b610a4e7f0000000000000000000000000000000000000000000000000000000000000000611d75565b610a777f0000000000000000000000000000000000000000000000000000000000000000611d75565b604051602001610a899392919061249e565b604051602081830303815290604052905090565b6060610aaa602080611eb2565b905090565b6000805468010000000000000000900460ff166002811115610ad357610ad3612138565b14610b0a576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015610b16575080155b15610b4d576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028481548110610b6257610b62612401565b60009182526020918290206040805160a0810182526003909302909101805463ffffffff8116845260ff64010000000090910416151593830193909352600180840154918301919091526002928301546fffffffffffffffffffffffffffffffff80821660608501527001000000000000000000000000000000009091041660808301528254919350919086908110610bfd57610bfd612401565b6000918252602082206003909102018054921515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909316929092179091556060820151610c67906fffffffffffffffffffffffffffffffff1684151760011b90565b90507f0000000000000000000000000000000000000000000000000000000000000000610d26826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff161115610d68576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160009063ffffffff90811614610dc8576002836000015163ffffffff1681548110610d9757610d97612401565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff1690505b608083015160009067ffffffffffffffff1667ffffffffffffffff1642610e01846fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff16610e159190612430565b610e1f91906123ea565b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c1667ffffffffffffffff82161115610e92576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604082901b421790506000610eb3888660009182526020526040902090565b60008181526003602052604090205490915060ff1615610eff576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016003600083815260200190815260200160002060006101000a81548160ff02191690831515021790555060026040518060a001604052808b63ffffffff1681526020016000151581526020018a8152602001876fffffffffffffffffffffffffffffffff168152602001846fffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548160ff0219169083151502179055506040820151816001015560608201518160020160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060808201518160020160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050503373ffffffffffffffffffffffffffffffffffffffff16888a7f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be60405160405180910390a4505050505050505050565b600080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000164267ffffffffffffffff161781556040805160a08101825263ffffffff815260208101929092526002919081016111507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033590565b815260016020820152604001426fffffffffffffffffffffffffffffffff908116909152825460018181018555600094855260209485902084516003909302018054958501511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090961663ffffffff909316929092179490941781556040830151818501556060830151608090930151821670010000000000000000000000000000000002929091169190911760029091015561121690436123ea565b40600155565b6109f682826001610aaf565b6002818154811061123857600080fd5b600091825260209091206003909102018054600182015460029092015463ffffffff8216935064010000000090910460ff1691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041685565b6000805468010000000000000000900460ff1660028111156112bd576112bd612138565b146112f4576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002878154811061130957611309612401565b6000918252602082206003919091020160028101549092506fffffffffffffffffffffffffffffffff16908715821760011b90506113687f00000000000000000000000000000000000000000000000000000000000000006001612430565b611404826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1614611445576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008089156114cb57611469836fffffffffffffffffffffffffffffffff16611f49565b67ffffffffffffffff166000036114a2577f000000000000000000000000000000000000000000000000000000000000000091506114c4565b6114bd6114b0600186612514565b865463ffffffff16611fef565b6001015491505b50836114e5565b846001015491506114e28460016114b09190612545565b90505b8189896040516114f6929190612579565b604051809103902014611535576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600101547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f8e0cb968c8c8c8c6040518563ffffffff1660e01b815260040161159b94939291906125d2565b6020604051808303816000875af11580156115ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115de9190612604565b600284810154929091149250600091611689906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611725886fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b61172f919061261d565b6117399190612477565b67ffffffffffffffff161590508115158103611781576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505084547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001790945550505050505050505050565b6000805468010000000000000000900460ff1660028111156117e1576117e1612138565b14611818576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a9919061263e565b90508160010361195c576001546040517fe52f09370000000000000000000000000000000000000000000000000000000081526004810184905260248101919091526020604482015273ffffffffffffffffffffffffffffffffffffffff82169063e52f0937906064015b6020604051808303816000875af1158015611933573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119579190612604565b505050565b81600203611aed576040517fcf8e5cf0000000000000000000000000000000000000000000000000000000008152367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360200135600482015260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063cf8e5cf090602401606060405180830381865afa158015611a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4291906126c3565b80516040517fe52f09370000000000000000000000000000000000000000000000000000000081526004810186905260248101919091526020604482015290915073ffffffffffffffffffffffffffffffffffffffff83169063e52f0937906064016020604051808303816000875af1158015611ac3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae79190612604565b50505050565b81600303611b7f576040517fe52f093700000000000000000000000000000000000000000000000000000000815260048101839052367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033560248201526020604482015273ffffffffffffffffffffffffffffffffffffffff82169063e52f093790606401611914565b81600403611c17576040517fe52f093700000000000000000000000000000000000000000000000000000000815260048101839052367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036020013560c01b60248201526008604482015273ffffffffffffffffffffffffffffffffffffffff82169063e52f093790606401611914565b816005036109f6576040517fe52f0937000000000000000000000000000000000000000000000000000000008152600481018390524660c01b60248201526008604482015273ffffffffffffffffffffffffffffffffffffffff82169063e52f093790606401611914565b6000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003356060611cb9610a9d565b9050909192565b600080611d4d847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1690508083036001841b600180831b0386831b17039250505092915050565b606081600003611db857505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611de25780611dcc8161274f565b9150611ddb9050600a83612787565b9150611dbc565b60008167ffffffffffffffff811115611dfd57611dfd612674565b6040519080825280601f01601f191660200182016040528015611e27576020820181803683370190505b5090505b8415611eaa57611e3c6001836123ea565b9150611e49600a8661279b565b611e54906030612430565b60f81b818381518110611e6957611e69612401565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611ea3600a86612787565b9450611e2b565b949350505050565b60606000611ee984367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003612430565b90508267ffffffffffffffff1667ffffffffffffffff811115611f0e57611f0e612674565b6040519080825280601f01601f191660200182016040528015611f38576020820181803683370190505b509150828160208401375092915050565b600080611fd6837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600167ffffffffffffffff919091161b90920392915050565b60008061200d846fffffffffffffffffffffffffffffffff1661208c565b90506002838154811061202257612022612401565b906000526020600020906003020191505b60028201546fffffffffffffffffffffffffffffffff82811691161461208557815460028054909163ffffffff1690811061207057612070612401565b90600052602060002090600302019150612033565b5092915050565b60008119600183011681612120827e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff169390931c8015179392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600383106121a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600080604083850312156121bb57600080fd5b50508035926020909101359150565b60005b838110156121e55781810151838201526020016121cd565b83811115611ae75750506000910152565b6000815180845261220e8160208601602086016121ca565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061225360208301846121f6565b9392505050565b8035801515811461226a57600080fd5b919050565b60008060006060848603121561228457600080fd5b833592506020840135915061229b6040850161225a565b90509250925092565b6000602082840312156122b657600080fd5b5035919050565b60008083601f8401126122cf57600080fd5b50813567ffffffffffffffff8111156122e757600080fd5b6020830191508360208285010111156122ff57600080fd5b9250929050565b6000806000806000806080878903121561231f57600080fd5b8635955061232f6020880161225a565b9450604087013567ffffffffffffffff8082111561234c57600080fd5b6123588a838b016122bd565b9096509450606089013591508082111561237157600080fd5b5061237e89828a016122bd565b979a9699509497509295939492505050565b60ff841681528260208201526060604082015260006123b260608301846121f6565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156123fc576123fc6123bb565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008219821115612443576124436123bb565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff8084168061249257612492612448565b92169190910692915050565b600084516124b08184602089016121ca565b80830190507f2e0000000000000000000000000000000000000000000000000000000000000080825285516124ec816001850160208a016121ca565b600192019182015283516125078160028401602088016121ca565b0160020195945050505050565b60006fffffffffffffffffffffffffffffffff8381169083168181101561253d5761253d6123bb565b039392505050565b60006fffffffffffffffffffffffffffffffff808316818516808303821115612570576125706123bb565b01949350505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6040815260006125e6604083018688612589565b82810360208401526125f9818587612589565b979650505050505050565b60006020828403121561261657600080fd5b5051919050565b600067ffffffffffffffff8381169083168181101561253d5761253d6123bb565b60006020828403121561265057600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461225357600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80516fffffffffffffffffffffffffffffffff8116811461226a57600080fd5b6000606082840312156126d557600080fd5b6040516060810181811067ffffffffffffffff8211171561271f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282518152612732602084016126a3565b6020820152612743604084016126a3565b60408201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612780576127806123bb565b5060010190565b60008261279657612796612448565b500490565b6000826127aa576127aa612448565b50069056fea164736f6c634300080f000a",
}
// FaultDisputeGameABI is the input ABI used to generate the binding from.
......
......@@ -13,7 +13,7 @@ const FaultDisputeGameStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contr
var FaultDisputeGameStorageLayout = new(solc.StorageLayout)
var FaultDisputeGameDeployedBin = "0x6080604052600436106101965760003560e01c80638980e0cc116100e1578063c31b29ce1161008a578063cf09e0d011610064578063cf09e0d014610546578063d8cc1a3c14610565578063f05a6c3914610585578063fa24f743146105a557600080fd5b8063c31b29ce1461049b578063c55cd0c7146104cf578063c6f0308c146104e257600080fd5b8063bbdc02db116100bb578063bbdc02db1461040e578063bcef3b551461042a578063c0c3a0921461046757600080fd5b80638980e0cc146103855780638b85902b1461039a57806392931298146103da57600080fd5b80634778efe811610143578063632247ea1161011d578063632247ea146103475780636361506d1461035a5780638129fc1c1461037057600080fd5b80634778efe8146102dc57806354fd4d5014610310578063609d33341461033257600080fd5b80633218b99d116101745780633218b99d1461022e57806335fef56714610268578063363cc4271461027d57600080fd5b8063200d2ed21461019b578063266198f9146101d75780632810e1d614610219575b600080fd5b3480156101a757600080fd5b506000546101c19068010000000000000000900460ff1681565b6040516101ce9190612143565b60405180910390f35b3480156101e357600080fd5b5061020b7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101ce565b34801561022557600080fd5b506101c16105c9565b34801561023a57600080fd5b5060005461024f9067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101ce565b61027b610276366004612184565b6109ea565b005b34801561028957600080fd5b506000546102b7906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ce565b3480156102e857600080fd5b5061020b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561031c57600080fd5b506103256109fa565b6040516101ce9190612220565b34801561033e57600080fd5b50610325610a9d565b61027b61035536600461224f565b610aaf565b34801561036657600080fd5b5061020b60015481565b34801561037c57600080fd5b5061027b6110cb565b34801561039157600080fd5b5060025461020b565b3480156103a657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036020013561020b565b3480156103e657600080fd5b506102b77f000000000000000000000000000000000000000000000000000000000000000081565b34801561041a57600080fd5b50604051600081526020016101ce565b34801561043657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033561020b565b34801561047357600080fd5b506102b77f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a757600080fd5b5061024f7f000000000000000000000000000000000000000000000000000000000000000081565b61027b6104dd366004612184565b61121c565b3480156104ee57600080fd5b506105026104fd366004612284565b611228565b6040805163ffffffff90961686529315156020860152928401919091526fffffffffffffffffffffffffffffffff908116606084015216608082015260a0016101ce565b34801561055257600080fd5b5060005467ffffffffffffffff1661024f565b34801561057157600080fd5b5061027b6105803660046122e6565b611299565b34801561059157600080fd5b5061027b6105a0366004612284565b6117bd565b3480156105b157600080fd5b506105ba611c5e565b6040516101ce93929190612370565b60008060005468010000000000000000900460ff1660028111156105ef576105ef612114565b14610626576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090610638906001906123ca565b90506fffffffffffffffffffffffffffffffff815b67ffffffffffffffff81101561072257600060028281548110610672576106726123e1565b6000918252602090912060039091020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019290915060ff64010000000090910416156106c3575061064d565b6002810154600090610707906fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000611c9c565b90508381101561071b578093508260010194505b505061064d565b50600060028381548110610738576107386123e1565b600091825260208220600390910201805490925063ffffffff908116919082146107a2576002828154811061076f5761076f6123e1565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff166107ce565b600283015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c1661081267ffffffffffffffff8316426123ca565b61082e836fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff166108429190612410565b11610879576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028381015461091b906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b6109259190612457565b67ffffffffffffffff1615801561094c57506fffffffffffffffffffffffffffffffff8414155b1561095a576002955061095f565b600195505b600080548791907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000008360028111156109a4576109a4612114565b0217905560028111156109b9576109b9612114565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a2505050505090565b6109f682826000610aaf565b5050565b6060610a257f0000000000000000000000000000000000000000000000000000000000000000611d51565b610a4e7f0000000000000000000000000000000000000000000000000000000000000000611d51565b610a777f0000000000000000000000000000000000000000000000000000000000000000611d51565b604051602001610a899392919061247e565b604051602081830303815290604052905090565b6060610aaa602080611e8e565b905090565b6000805468010000000000000000900460ff166002811115610ad357610ad3612114565b14610b0a576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015610b16575080155b15610b4d576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028481548110610b6257610b626123e1565b60009182526020918290206040805160a0810182526003909302909101805463ffffffff8116845260ff64010000000090910416151593830193909352600180840154918301919091526002928301546fffffffffffffffffffffffffffffffff80821660608501527001000000000000000000000000000000009091041660808301528254919350919086908110610bfd57610bfd6123e1565b6000918252602082206003909102018054921515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909316929092179091556060820151610c67906fffffffffffffffffffffffffffffffff1684151760011b90565b90507f0000000000000000000000000000000000000000000000000000000000000000610d26826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff161115610d68576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160009063ffffffff90811614610dc8576002836000015163ffffffff1681548110610d9757610d976123e1565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff1690505b608083015160009067ffffffffffffffff1667ffffffffffffffff1642610e01846fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff16610e159190612410565b610e1f91906123ca565b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c1667ffffffffffffffff82161115610e92576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604082901b421790506000610eb3888660009182526020526040902090565b60008181526003602052604090205490915060ff1615610eff576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016003600083815260200190815260200160002060006101000a81548160ff02191690831515021790555060026040518060a001604052808b63ffffffff1681526020016000151581526020018a8152602001876fffffffffffffffffffffffffffffffff168152602001846fffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548160ff0219169083151502179055506040820151816001015560608201518160020160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060808201518160020160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050503373ffffffffffffffffffffffffffffffffffffffff16888a7f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be60405160405180910390a4505050505050505050565b600080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000164267ffffffffffffffff161781556040805160a08101825263ffffffff815260208101929092526002919081016111507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033590565b815260016020820152604001426fffffffffffffffffffffffffffffffff908116909152825460018181018555600094855260209485902084516003909302018054958501511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090961663ffffffff909316929092179490941781556040830151818501556060830151608090930151821670010000000000000000000000000000000002929091169190911760029091015561121690436123ca565b40600155565b6109f682826001610aaf565b6002818154811061123857600080fd5b600091825260209091206003909102018054600182015460029092015463ffffffff8216935064010000000090910460ff1691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041685565b6000805468010000000000000000900460ff1660028111156112bd576112bd612114565b146112f4576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028781548110611309576113096123e1565b6000918252602082206003919091020160028101549092506fffffffffffffffffffffffffffffffff16908715821760011b90506113687f00000000000000000000000000000000000000000000000000000000000000006001612410565b611404826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1614611445576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008089156114cb57611469836fffffffffffffffffffffffffffffffff16611f25565b67ffffffffffffffff166000036114a2577f000000000000000000000000000000000000000000000000000000000000000091506114c4565b6114bd6114b06001866124f4565b865463ffffffff16611fcb565b6001015491505b50836114e5565b846001015491506114e28460016114b09190612525565b90505b8189896040516114f6929190612559565b604051809103902014611535576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600101547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f8e0cb968c8c8c8c6040518563ffffffff1660e01b815260040161159b94939291906125b2565b6020604051808303816000875af11580156115ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115de91906125e4565b600284810154929091149250600091611689906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611725886fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b61172f91906125fd565b6117399190612457565b67ffffffffffffffff161590508115158103611781576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505084547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001790945550505050505050505050565b6000805468010000000000000000900460ff1660028111156117e1576117e1612114565b14611818576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a9919061261e565b90508160010361194a576001546040517fe52f09370000000000000000000000000000000000000000000000000000000081526004810184905260248101919091526020604482015273ffffffffffffffffffffffffffffffffffffffff82169063e52f0937906064015b600060405180830381600087803b15801561192e57600080fd5b505af1158015611942573d6000803e3d6000fd5b505050505050565b81600203611ac9576040517fcf8e5cf0000000000000000000000000000000000000000000000000000000008152367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360200135600482015260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063cf8e5cf090602401606060405180830381865afa158015611a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3091906126a3565b80516040517fe52f09370000000000000000000000000000000000000000000000000000000081526004810186905260248101919091526020604482015290915073ffffffffffffffffffffffffffffffffffffffff83169063e52f093790606401600060405180830381600087803b158015611aac57600080fd5b505af1158015611ac0573d6000803e3d6000fd5b50505050505050565b81600303611b5b576040517fe52f093700000000000000000000000000000000000000000000000000000000815260048101839052367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033560248201526020604482015273ffffffffffffffffffffffffffffffffffffffff82169063e52f093790606401611914565b81600403611bf3576040517fe52f093700000000000000000000000000000000000000000000000000000000815260048101839052367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036020013560c01b60248201526008604482015273ffffffffffffffffffffffffffffffffffffffff82169063e52f093790606401611914565b816005036109f6576040517fe52f0937000000000000000000000000000000000000000000000000000000008152600481018390524660c01b60248201526008604482015273ffffffffffffffffffffffffffffffffffffffff82169063e52f093790606401611914565b6000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003356060611c95610a9d565b9050909192565b600080611d29847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1690508083036001841b600180831b0386831b17039250505092915050565b606081600003611d9457505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611dbe5780611da88161272f565b9150611db79050600a83612767565b9150611d98565b60008167ffffffffffffffff811115611dd957611dd9612654565b6040519080825280601f01601f191660200182016040528015611e03576020820181803683370190505b5090505b8415611e8657611e186001836123ca565b9150611e25600a8661277b565b611e30906030612410565b60f81b818381518110611e4557611e456123e1565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611e7f600a86612767565b9450611e07565b949350505050565b60606000611ec584367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003612410565b90508267ffffffffffffffff1667ffffffffffffffff811115611eea57611eea612654565b6040519080825280601f01601f191660200182016040528015611f14576020820181803683370190505b509150828160208401375092915050565b600080611fb2837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600167ffffffffffffffff919091161b90920392915050565b600080611fe9846fffffffffffffffffffffffffffffffff16612068565b905060028381548110611ffe57611ffe6123e1565b906000526020600020906003020191505b60028201546fffffffffffffffffffffffffffffffff82811691161461206157815460028054909163ffffffff1690811061204c5761204c6123e1565b9060005260206000209060030201915061200f565b5092915050565b600081196001830116816120fc827e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff169390931c8015179392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016003831061217e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000806040838503121561219757600080fd5b50508035926020909101359150565b60005b838110156121c15781810151838201526020016121a9565b838111156121d0576000848401525b50505050565b600081518084526121ee8160208601602086016121a6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061223360208301846121d6565b9392505050565b8035801515811461224a57600080fd5b919050565b60008060006060848603121561226457600080fd5b833592506020840135915061227b6040850161223a565b90509250925092565b60006020828403121561229657600080fd5b5035919050565b60008083601f8401126122af57600080fd5b50813567ffffffffffffffff8111156122c757600080fd5b6020830191508360208285010111156122df57600080fd5b9250929050565b600080600080600080608087890312156122ff57600080fd5b8635955061230f6020880161223a565b9450604087013567ffffffffffffffff8082111561232c57600080fd5b6123388a838b0161229d565b9096509450606089013591508082111561235157600080fd5b5061235e89828a0161229d565b979a9699509497509295939492505050565b60ff8416815282602082015260606040820152600061239260608301846121d6565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156123dc576123dc61239b565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082198211156124235761242361239b565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff8084168061247257612472612428565b92169190910692915050565b600084516124908184602089016121a6565b80830190507f2e0000000000000000000000000000000000000000000000000000000000000080825285516124cc816001850160208a016121a6565b600192019182015283516124e78160028401602088016121a6565b0160020195945050505050565b60006fffffffffffffffffffffffffffffffff8381169083168181101561251d5761251d61239b565b039392505050565b60006fffffffffffffffffffffffffffffffff8083168185168083038211156125505761255061239b565b01949350505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6040815260006125c6604083018688612569565b82810360208401526125d9818587612569565b979650505050505050565b6000602082840312156125f657600080fd5b5051919050565b600067ffffffffffffffff8381169083168181101561251d5761251d61239b565b60006020828403121561263057600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461223357600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80516fffffffffffffffffffffffffffffffff8116811461224a57600080fd5b6000606082840312156126b557600080fd5b6040516060810181811067ffffffffffffffff821117156126ff577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528251815261271260208401612683565b602082015261272360408401612683565b60408201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127605761276061239b565b5060010190565b60008261277657612776612428565b500490565b60008261278a5761278a612428565b50069056fea164736f6c634300080f000a"
var FaultDisputeGameDeployedBin = "0x6080604052600436106101965760003560e01c80638980e0cc116100e1578063c31b29ce1161008a578063cf09e0d011610064578063cf09e0d014610546578063d8cc1a3c14610565578063f05a6c3914610585578063fa24f743146105a557600080fd5b8063c31b29ce1461049b578063c55cd0c7146104cf578063c6f0308c146104e257600080fd5b8063bbdc02db116100bb578063bbdc02db1461040e578063bcef3b551461042a578063c0c3a0921461046757600080fd5b80638980e0cc146103855780638b85902b1461039a57806392931298146103da57600080fd5b80634778efe811610143578063632247ea1161011d578063632247ea146103475780636361506d1461035a5780638129fc1c1461037057600080fd5b80634778efe8146102dc57806354fd4d5014610310578063609d33341461033257600080fd5b80633218b99d116101745780633218b99d1461022e57806335fef56714610268578063363cc4271461027d57600080fd5b8063200d2ed21461019b578063266198f9146101d75780632810e1d614610219575b600080fd5b3480156101a757600080fd5b506000546101c19068010000000000000000900460ff1681565b6040516101ce9190612167565b60405180910390f35b3480156101e357600080fd5b5061020b7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101ce565b34801561022557600080fd5b506101c16105c9565b34801561023a57600080fd5b5060005461024f9067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101ce565b61027b6102763660046121a8565b6109ea565b005b34801561028957600080fd5b506000546102b7906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ce565b3480156102e857600080fd5b5061020b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561031c57600080fd5b506103256109fa565b6040516101ce9190612240565b34801561033e57600080fd5b50610325610a9d565b61027b61035536600461226f565b610aaf565b34801561036657600080fd5b5061020b60015481565b34801561037c57600080fd5b5061027b6110cb565b34801561039157600080fd5b5060025461020b565b3480156103a657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036020013561020b565b3480156103e657600080fd5b506102b77f000000000000000000000000000000000000000000000000000000000000000081565b34801561041a57600080fd5b50604051600081526020016101ce565b34801561043657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033561020b565b34801561047357600080fd5b506102b77f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a757600080fd5b5061024f7f000000000000000000000000000000000000000000000000000000000000000081565b61027b6104dd3660046121a8565b61121c565b3480156104ee57600080fd5b506105026104fd3660046122a4565b611228565b6040805163ffffffff90961686529315156020860152928401919091526fffffffffffffffffffffffffffffffff908116606084015216608082015260a0016101ce565b34801561055257600080fd5b5060005467ffffffffffffffff1661024f565b34801561057157600080fd5b5061027b610580366004612306565b611299565b34801561059157600080fd5b5061027b6105a03660046122a4565b6117bd565b3480156105b157600080fd5b506105ba611c82565b6040516101ce93929190612390565b60008060005468010000000000000000900460ff1660028111156105ef576105ef612138565b14610626576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090610638906001906123ea565b90506fffffffffffffffffffffffffffffffff815b67ffffffffffffffff8110156107225760006002828154811061067257610672612401565b6000918252602090912060039091020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019290915060ff64010000000090910416156106c3575061064d565b6002810154600090610707906fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000611cc0565b90508381101561071b578093508260010194505b505061064d565b5060006002838154811061073857610738612401565b600091825260208220600390910201805490925063ffffffff908116919082146107a2576002828154811061076f5761076f612401565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff166107ce565b600283015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c1661081267ffffffffffffffff8316426123ea565b61082e836fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff166108429190612430565b11610879576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028381015461091b906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b6109259190612477565b67ffffffffffffffff1615801561094c57506fffffffffffffffffffffffffffffffff8414155b1561095a576002955061095f565b600195505b600080548791907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000008360028111156109a4576109a4612138565b0217905560028111156109b9576109b9612138565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a2505050505090565b6109f682826000610aaf565b5050565b6060610a257f0000000000000000000000000000000000000000000000000000000000000000611d75565b610a4e7f0000000000000000000000000000000000000000000000000000000000000000611d75565b610a777f0000000000000000000000000000000000000000000000000000000000000000611d75565b604051602001610a899392919061249e565b604051602081830303815290604052905090565b6060610aaa602080611eb2565b905090565b6000805468010000000000000000900460ff166002811115610ad357610ad3612138565b14610b0a576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015610b16575080155b15610b4d576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028481548110610b6257610b62612401565b60009182526020918290206040805160a0810182526003909302909101805463ffffffff8116845260ff64010000000090910416151593830193909352600180840154918301919091526002928301546fffffffffffffffffffffffffffffffff80821660608501527001000000000000000000000000000000009091041660808301528254919350919086908110610bfd57610bfd612401565b6000918252602082206003909102018054921515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909316929092179091556060820151610c67906fffffffffffffffffffffffffffffffff1684151760011b90565b90507f0000000000000000000000000000000000000000000000000000000000000000610d26826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff161115610d68576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160009063ffffffff90811614610dc8576002836000015163ffffffff1681548110610d9757610d97612401565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff1690505b608083015160009067ffffffffffffffff1667ffffffffffffffff1642610e01846fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff16610e159190612430565b610e1f91906123ea565b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c1667ffffffffffffffff82161115610e92576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604082901b421790506000610eb3888660009182526020526040902090565b60008181526003602052604090205490915060ff1615610eff576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016003600083815260200190815260200160002060006101000a81548160ff02191690831515021790555060026040518060a001604052808b63ffffffff1681526020016000151581526020018a8152602001876fffffffffffffffffffffffffffffffff168152602001846fffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548160ff0219169083151502179055506040820151816001015560608201518160020160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060808201518160020160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050503373ffffffffffffffffffffffffffffffffffffffff16888a7f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be60405160405180910390a4505050505050505050565b600080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000164267ffffffffffffffff161781556040805160a08101825263ffffffff815260208101929092526002919081016111507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033590565b815260016020820152604001426fffffffffffffffffffffffffffffffff908116909152825460018181018555600094855260209485902084516003909302018054958501511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090961663ffffffff909316929092179490941781556040830151818501556060830151608090930151821670010000000000000000000000000000000002929091169190911760029091015561121690436123ea565b40600155565b6109f682826001610aaf565b6002818154811061123857600080fd5b600091825260209091206003909102018054600182015460029092015463ffffffff8216935064010000000090910460ff1691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041685565b6000805468010000000000000000900460ff1660028111156112bd576112bd612138565b146112f4576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002878154811061130957611309612401565b6000918252602082206003919091020160028101549092506fffffffffffffffffffffffffffffffff16908715821760011b90506113687f00000000000000000000000000000000000000000000000000000000000000006001612430565b611404826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1614611445576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008089156114cb57611469836fffffffffffffffffffffffffffffffff16611f49565b67ffffffffffffffff166000036114a2577f000000000000000000000000000000000000000000000000000000000000000091506114c4565b6114bd6114b0600186612514565b865463ffffffff16611fef565b6001015491505b50836114e5565b846001015491506114e28460016114b09190612545565b90505b8189896040516114f6929190612579565b604051809103902014611535576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600101547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f8e0cb968c8c8c8c6040518563ffffffff1660e01b815260040161159b94939291906125d2565b6020604051808303816000875af11580156115ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115de9190612604565b600284810154929091149250600091611689906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611725886fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b61172f919061261d565b6117399190612477565b67ffffffffffffffff161590508115158103611781576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505084547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001790945550505050505050505050565b6000805468010000000000000000900460ff1660028111156117e1576117e1612138565b14611818576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a9919061263e565b90508160010361195c576001546040517fe52f09370000000000000000000000000000000000000000000000000000000081526004810184905260248101919091526020604482015273ffffffffffffffffffffffffffffffffffffffff82169063e52f0937906064015b6020604051808303816000875af1158015611933573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119579190612604565b505050565b81600203611aed576040517fcf8e5cf0000000000000000000000000000000000000000000000000000000008152367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360200135600482015260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063cf8e5cf090602401606060405180830381865afa158015611a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4291906126c3565b80516040517fe52f09370000000000000000000000000000000000000000000000000000000081526004810186905260248101919091526020604482015290915073ffffffffffffffffffffffffffffffffffffffff83169063e52f0937906064016020604051808303816000875af1158015611ac3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae79190612604565b50505050565b81600303611b7f576040517fe52f093700000000000000000000000000000000000000000000000000000000815260048101839052367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033560248201526020604482015273ffffffffffffffffffffffffffffffffffffffff82169063e52f093790606401611914565b81600403611c17576040517fe52f093700000000000000000000000000000000000000000000000000000000815260048101839052367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036020013560c01b60248201526008604482015273ffffffffffffffffffffffffffffffffffffffff82169063e52f093790606401611914565b816005036109f6576040517fe52f0937000000000000000000000000000000000000000000000000000000008152600481018390524660c01b60248201526008604482015273ffffffffffffffffffffffffffffffffffffffff82169063e52f093790606401611914565b6000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003356060611cb9610a9d565b9050909192565b600080611d4d847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1690508083036001841b600180831b0386831b17039250505092915050565b606081600003611db857505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611de25780611dcc8161274f565b9150611ddb9050600a83612787565b9150611dbc565b60008167ffffffffffffffff811115611dfd57611dfd612674565b6040519080825280601f01601f191660200182016040528015611e27576020820181803683370190505b5090505b8415611eaa57611e3c6001836123ea565b9150611e49600a8661279b565b611e54906030612430565b60f81b818381518110611e6957611e69612401565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611ea3600a86612787565b9450611e2b565b949350505050565b60606000611ee984367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003612430565b90508267ffffffffffffffff1667ffffffffffffffff811115611f0e57611f0e612674565b6040519080825280601f01601f191660200182016040528015611f38576020820181803683370190505b509150828160208401375092915050565b600080611fd6837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600167ffffffffffffffff919091161b90920392915050565b60008061200d846fffffffffffffffffffffffffffffffff1661208c565b90506002838154811061202257612022612401565b906000526020600020906003020191505b60028201546fffffffffffffffffffffffffffffffff82811691161461208557815460028054909163ffffffff1690811061207057612070612401565b90600052602060002090600302019150612033565b5092915050565b60008119600183011681612120827e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff169390931c8015179392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600383106121a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600080604083850312156121bb57600080fd5b50508035926020909101359150565b60005b838110156121e55781810151838201526020016121cd565b83811115611ae75750506000910152565b6000815180845261220e8160208601602086016121ca565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061225360208301846121f6565b9392505050565b8035801515811461226a57600080fd5b919050565b60008060006060848603121561228457600080fd5b833592506020840135915061229b6040850161225a565b90509250925092565b6000602082840312156122b657600080fd5b5035919050565b60008083601f8401126122cf57600080fd5b50813567ffffffffffffffff8111156122e757600080fd5b6020830191508360208285010111156122ff57600080fd5b9250929050565b6000806000806000806080878903121561231f57600080fd5b8635955061232f6020880161225a565b9450604087013567ffffffffffffffff8082111561234c57600080fd5b6123588a838b016122bd565b9096509450606089013591508082111561237157600080fd5b5061237e89828a016122bd565b979a9699509497509295939492505050565b60ff841681528260208201526060604082015260006123b260608301846121f6565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156123fc576123fc6123bb565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008219821115612443576124436123bb565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff8084168061249257612492612448565b92169190910692915050565b600084516124b08184602089016121ca565b80830190507f2e0000000000000000000000000000000000000000000000000000000000000080825285516124ec816001850160208a016121ca565b600192019182015283516125078160028401602088016121ca565b0160020195945050505050565b60006fffffffffffffffffffffffffffffffff8381169083168181101561253d5761253d6123bb565b039392505050565b60006fffffffffffffffffffffffffffffffff808316818516808303821115612570576125706123bb565b01949350505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6040815260006125e6604083018688612589565b82810360208401526125f9818587612589565b979650505050505050565b60006020828403121561261657600080fd5b5051919050565b600067ffffffffffffffff8381169083168181101561253d5761253d6123bb565b60006020828403121561265057600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461225357600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80516fffffffffffffffffffffffffffffffff8116811461226a57600080fd5b6000606082840312156126d557600080fd5b6040516060810181811067ffffffffffffffff8211171561271f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282518152612732602084016126a3565b6020820152612743604084016126a3565b60408201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612780576127806123bb565b5060010190565b60008261279657612796612448565b500490565b6000826127aa576127aa612448565b50069056fea164736f6c634300080f000a"
func init() {
if err := json.Unmarshal([]byte(FaultDisputeGameStorageLayoutJSON), FaultDisputeGameStorageLayout); err != nil {
......
......@@ -383,21 +383,21 @@ func (_PreimageOracle *PreimageOracleTransactorSession) LoadKeccak256PreimagePar
// LoadLocalData is a paid mutator transaction binding the contract method 0xe52f0937.
//
// Solidity: function loadLocalData(uint256 _ident, bytes32 _word, uint8 _size) returns()
// Solidity: function loadLocalData(uint256 _ident, bytes32 _word, uint8 _size) returns(bytes32 key_)
func (_PreimageOracle *PreimageOracleTransactor) LoadLocalData(opts *bind.TransactOpts, _ident *big.Int, _word [32]byte, _size uint8) (*types.Transaction, error) {
return _PreimageOracle.contract.Transact(opts, "loadLocalData", _ident, _word, _size)
}
// LoadLocalData is a paid mutator transaction binding the contract method 0xe52f0937.
//
// Solidity: function loadLocalData(uint256 _ident, bytes32 _word, uint8 _size) returns()
// Solidity: function loadLocalData(uint256 _ident, bytes32 _word, uint8 _size) returns(bytes32 key_)
func (_PreimageOracle *PreimageOracleSession) LoadLocalData(_ident *big.Int, _word [32]byte, _size uint8) (*types.Transaction, error) {
return _PreimageOracle.Contract.LoadLocalData(&_PreimageOracle.TransactOpts, _ident, _word, _size)
}
// LoadLocalData is a paid mutator transaction binding the contract method 0xe52f0937.
//
// Solidity: function loadLocalData(uint256 _ident, bytes32 _word, uint8 _size) returns()
// Solidity: function loadLocalData(uint256 _ident, bytes32 _word, uint8 _size) returns(bytes32 key_)
func (_PreimageOracle *PreimageOracleTransactorSession) LoadLocalData(_ident *big.Int, _word [32]byte, _size uint8) (*types.Transaction, error) {
return _PreimageOracle.Contract.LoadLocalData(&_PreimageOracle.TransactOpts, _ident, _word, _size)
}
......@@ -62,22 +62,22 @@ contract PreimageOracle {
/// specific data.
///
/// There are 5 local data identifiers:
/// ┌────────────┬─────────────────┐
/// ┌────────────┬────────────────────────
/// │ Identifier │ Data │
/// ├────────────┼─────────────────┤
/// │ 1 │ L1 Head Hash
/// │ 2 │ Output Root
/// │ 3 │ Root Claim
/// │ 4 │ L2 Block Number │
/// │ 5 │ Chain ID │
/// └────────────┴─────────────────┘
/// ├────────────┼────────────────────────
/// │ 1 │ L1 Head Hash (bytes32)
/// │ 2 │ Output Root (bytes32)
/// │ 3 │ Root Claim (bytes32)
/// │ 4 │ L2 Block Number (u64)
/// │ 5 │ Chain ID (u64)
/// └────────────┴────────────────────────
function loadLocalData(
uint256 _ident,
bytes32 _word,
uint8 _size
) external {
) external returns (bytes32 key_) {
// Compute the localized key from the given local identifier.
bytes32 key = PreimageKeyLib.localizeIdent(_ident);
key_ = PreimageKeyLib.localizeIdent(_ident);
// Load both parts of the local data word into storage for future
// reads.
......@@ -89,18 +89,18 @@ contract PreimageOracle {
}
// Store the first part with offset 0.
preimagePartOk[key][0] = true;
preimageParts[key][0] = part1;
preimagePartOk[key_][0] = true;
preimageParts[key_][0] = part1;
// If the size is greater than 24, we need to store a second part as well.
if (_size > 24) {
bytes32 part2 = _word << 192;
preimagePartOk[key][32] = true;
preimageParts[key][32] = part2;
preimagePartOk[key_][32] = true;
preimageParts[key_][32] = part2;
}
// Assign the length of the preimage at the localized key.
preimageLengths[key] = _size;
preimageLengths[key_] = _size;
}
/// @notice Prepares a pre-image to be read by keccak256 key, starting at
......
......@@ -43,5 +43,5 @@ interface IPreimageOracle {
uint256 _ident,
bytes32 _word,
uint8 _size
) external;
) external returns (bytes32 key_);
}
......@@ -24,6 +24,64 @@ contract PreimageOracle_Test is Test {
assertEq(key, known);
}
/// @notice Tests that context-specific data [0, 24] bytes in length can be loaded correctly.
function test_loadLocalData_onePart_succeeds() public {
uint256 ident = 1;
bytes32 word = bytes32(uint256(0xdeadbeef) << 224);
uint8 size = 4;
// Load the local data into the preimage oracle under the test contract's context.
bytes32 contextKey = oracle.loadLocalData(ident, word, size);
// Validate that the pre-image part is set
bool ok = oracle.preimagePartOk(contextKey, 0);
assertTrue(ok);
// Validate the local data part
bytes32 expectedPart = 0x0000000000000004deadbeef0000000000000000000000000000000000000000;
assertEq(oracle.preimageParts(contextKey, 0), expectedPart);
// Validate the local data length
uint256 length = oracle.preimageLengths(contextKey);
assertEq(length, size);
}
/// @notice Tests that context-specific data [0, 32] bytes in length can be loaded correctly.
function testFuzz_loadLocalData_varyingLength_succeeds(
uint256 ident,
bytes32 word,
uint256 size
) public {
// Bound the size to [0, 32]
size = bound(size, 0, 32);
// Load the local data into the preimage oracle under the test contract's context.
bytes32 contextKey = oracle.loadLocalData(ident, word, uint8(size));
// Validate that the first local data part is set
bool ok = oracle.preimagePartOk(contextKey, 0);
assertTrue(ok);
// Validate the first local data part
bytes32 expectedPart1 = bytes32(size << 192 | uint256(word) >> 64);
assertEq(oracle.preimageParts(contextKey, 0), expectedPart1);
// If the size is > 24, validate the second part. Otherwise, ensure
// that the second part is not set.
ok = oracle.preimagePartOk(contextKey, 32);
if (size > 24) {
assertTrue(ok);
// Validate the second local data part
bytes32 expectedPart2 = word << 192;
assertEq(oracle.preimageParts(contextKey, 32), expectedPart2);
} else {
assertFalse(ok);
}
// Validate the local data length
uint256 length = oracle.preimageLengths(contextKey);
assertEq(length, size);
}
/// @notice Tests that a pre-image is correctly set.
function test_loadKeccak256PreimagePart_succeeds() public {
// Set the pre-image
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment