Commit 8539ae62 authored by clabby's avatar clabby Committed by GitHub

feat(ctb): Relax re-proving constraints in `OptimismPortal2` (#10154)

* chore(ctb): Add test for `LibClone` improvement

fmt

* feat(ctb): Relax re-proving constraints in `OptimismPortal2`

* bindings, semver
parent 05ab396e
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -13,7 +13,7 @@ const OptimismPortal2StorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contra
var OptimismPortal2StorageLayout = new(solc.StorageLayout)
var OptimismPortal2DeployedBin = "0x6080604052600436106101b05760003560e01c80637fc48504116100ec578063a3860f481161008a578063c0c53b8b11610064578063c0c53b8b1461063e578063cff0ab961461065e578063e9e05c42146106ff578063f2b4e6171461071257600080fd5b8063a3860f4814610544578063bb2c727e14610564578063bf653a5c1461060b57600080fd5b8063952b2797116100c6578063952b2797146104945780639bf62d82146104c7578063a14238e7146104f4578063a35d99df1461052457600080fd5b80637fc48504146104545780638b4c40b0146101d55780638c3152e91461047457600080fd5b80634870496f1161015957806354fd4d501161013357806354fd4d50146103a95780635c975abb146103ff57806371c1566e146104145780637d6be8dc1461043457600080fd5b80634870496f1461030c5780634fd0434c1461032c578063513747ab1461036e57600080fd5b806343ca1c501161018a57806343ca1c5014610297578063452a9320146102b757806345884d32146102cc57600080fd5b806333d7e2bd146101dc57806335e80ab3146102335780633c9f397c1461026557600080fd5b366101d7576101d53334620186a060006040518060200160405280600081525061073f565b005b600080fd5b3480156101e857600080fd5b506037546102099073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561023f57600080fd5b5060355461020990610100900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561027157600080fd5b50603b546102829063ffffffff1681565b60405163ffffffff909116815260200161022a565b3480156102a357600080fd5b506101d56102b2366004615089565b6108fc565b3480156102c357600080fd5b50610209610b5a565b3480156102d857600080fd5b506102fc6102e73660046150db565b603a6020526000908152604090205460ff1681565b604051901515815260200161022a565b34801561031857600080fd5b506101d56103273660046150f8565b610bf2565b34801561033857600080fd5b50603b5461035590640100000000900467ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161022a565b34801561037a57600080fd5b5061039b6103893660046151d4565b6000908152603c602052604090205490565b60405190815260200161022a565b3480156103b557600080fd5b506103f26040518060400160405280600581526020017f332e362e3000000000000000000000000000000000000000000000000000000081525081565b60405161022a9190615263565b34801561040b57600080fd5b506102fc6115df565b34801561042057600080fd5b506101d561042f366004615276565b611672565b34801561044057600080fd5b506101d561044f3660046150db565b611ed6565b34801561046057600080fd5b506101d561046f3660046152ad565b611f91565b34801561048057600080fd5b506101d561048f3660046152ca565b61204b565b3480156104a057600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061039b565b3480156104d357600080fd5b506032546102099073ffffffffffffffffffffffffffffffffffffffff1681565b34801561050057600080fd5b506102fc61050f3660046151d4565b60336020526000908152604090205460ff1681565b34801561053057600080fd5b5061035561053f36600461531d565b612097565b34801561055057600080fd5b5061020961055f36600461533a565b6120b6565b34801561057057600080fd5b506105d661057f366004615276565b603960209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900467ffffffffffffffff1682565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835267ffffffffffffffff90911660208301520161022a565b34801561061757600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061039b565b34801561064a57600080fd5b506101d561065936600461535c565b6120fb565b34801561066a57600080fd5b506001546106c6906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff928316602085015291169082015260600161022a565b6101d561070d3660046153b5565b61073f565b34801561071e57600080fd5b506038546102099073ffffffffffffffffffffffffffffffffffffffff1681565b8260005a9050838015610767575073ffffffffffffffffffffffffffffffffffffffff871615155b1561079e576040517f13496fda00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107a88351612097565b67ffffffffffffffff168567ffffffffffffffff1610156107f5576040517f4929b80800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6201d4c083511115610833576040517f73052b0f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33328114610854575033731111000000000000000000000000000000001111015b6000348888888860405160200161086f959493929190615434565b604051602081830303815290604052905060008973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c32846040516108df9190615263565b60405180910390a450506108f38282612364565b50505050505050565b6109046115df565b1561093b576040517ff480973e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60325473ffffffffffffffffffffffffffffffffffffffff1661dead146109e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e0060648201526084015b60405180910390fd5b60006109f48361263b565b9050610a008183611672565b600081815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055908501516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558401516080850151606086015160a0870151610aa293929190612688565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915082907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b90610b0790841515815260200190565b60405180910390a280158015610b1d5750326001145b15610b54576040517feeae4ed300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663452a93206040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bed9190615499565b905090565b610bfa6115df565b15610c31576040517ff480973e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff1603610cf0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e74726163740060648201526084016109e0565b6038546040517fbb8aa1fc00000000000000000000000000000000000000000000000000000000815260048101869052600091829173ffffffffffffffffffffffffffffffffffffffff9091169063bb8aa1fc90602401606060405180830381865afa158015610d64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8891906154b6565b925050915060008173ffffffffffffffffffffffffffffffffffffffff1663bcef3b556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfe91906154f8565b603b5490915063ffffffff848116911614610e9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a20696e76616c69642067616d652074797060448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016109e0565b610eb2610ead36889003880188615511565b6126e6565b8114610f40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f66000000000000000000000000000000000000000000000060648201526084016109e0565b6000610f4b8961263b565b600081815260396020908152604080832033845282529182902082518084019093525473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000900467ffffffffffffffff169082015290915060018473ffffffffffffffffffffffffffffffffffffffff1663200d2ed26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ffd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102191906155a6565b600281111561103257611032615577565b036110bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4f7074696d69736d506f7274616c3a2063616e6e6f742070726f76652061676160448201527f696e737420696e76616c696420646973707574652067616d657300000000000060648201526084016109e0565b8051602082015167ffffffffffffffff16158061115b575060018173ffffffffffffffffffffffffffffffffffffffff1663200d2ed26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611124573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114891906155a6565b600281111561115957611159615577565b145b8061118b575073ffffffffffffffffffffffffffffffffffffffff81166000908152603a602052604090205460ff165b806112245750603b5463ffffffff1663ffffffff1661121b8273ffffffffffffffffffffffffffffffffffffffff1663bbdc02db6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121291906155c7565b63ffffffff1690565b63ffffffff1614155b6112d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606060248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173682060448201527f68617320616c7265616479206265656e2070726f76656e2c20616e642074686560648201527f206f6c6420646973707574652067616d65206973206e6f7420696e76616c6964608482015260a4016109e0565b60408051602081018590526000918101829052606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120908301819052925061139f9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f01000000000000000000000000000000000000000000000000000000000000006020830152906113958b8d6155e4565b8d60400135612725565b61142b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f66000000000000000000000000000060648201526084016109e0565b60405180604001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506039600086815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508b6040015173ffffffffffffffffffffffffffffffffffffffff168c6020015173ffffffffffffffffffffffffffffffffffffffff16857f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f6260405160405180910390a45050506000908152603c602090815260408220805460018101825590835291200180547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790555050505050505050565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bed9190615668565b600082815260396020908152604080832073ffffffffffffffffffffffffffffffffffffffff85811685529083528184208251808401845290549182168082527401000000000000000000000000000000000000000090920467ffffffffffffffff1681850152818552603a90935292205490919060ff1615611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4f7074696d69736d506f7274616c3a20646973707574652067616d652068617360448201527f206265656e20626c61636b6c697374656400000000000000000000000000000060648201526084016109e0565b816020015167ffffffffffffffff1660000361183b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206e60448201527f6f74206265656e2070726f76656e2062792070726f6f66207375626d6974746560648201527f7220616464726573732079657400000000000000000000000000000000000000608482015260a4016109e0565b60006118bc8273ffffffffffffffffffffffffffffffffffffffff1663cf09e0d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561188b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118af9190615685565b67ffffffffffffffff1690565b90508067ffffffffffffffff16836020015167ffffffffffffffff161161198b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604e60248201527f4f7074696d69736d506f7274616c3a207769746864726177616c2074696d657360448201527f74616d70206c657373207468616e20646973707574652067616d65206372656160648201527f74696f6e2074696d657374616d70000000000000000000000000000000000000608482015260a4016109e0565b7f0000000000000000000000000000000000000000000000000000000000000000836020015167ffffffffffffffff16426119c691906156d1565b11611a53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a2070726f76656e2077697468647261776160448201527f6c20686173206e6f74206d61747572656420796574000000000000000000000060648201526084016109e0565b60028273ffffffffffffffffffffffffffffffffffffffff1663200d2ed26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac491906155a6565b6002811115611ad557611ad5615577565b14611b62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f686173206e6f74206265656e2076616c6964617465640000000000000000000060648201526084016109e0565b603b5463ffffffff1663ffffffff16611bbf8373ffffffffffffffffffffffffffffffffffffffff1663bbdc02db6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ee573d6000803e3d6000fd5b63ffffffff1614611c52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a20696e76616c69642067616d652074797060448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016109e0565b603b5467ffffffffffffffff64010000000090910481169082161015611d20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604b60248201527f4f7074696d69736d506f7274616c3a20646973707574652067616d652063726560448201527f61746564206265666f7265207265737065637465642067616d6520747970652060648201527f7761732075706461746564000000000000000000000000000000000000000000608482015260a4016109e0565b7f0000000000000000000000000000000000000000000000000000000000000000611d8f8373ffffffffffffffffffffffffffffffffffffffff166319effeb46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561188b573d6000803e3d6000fd5b611da39067ffffffffffffffff16426156d1565b11611e30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f696e206169722d6761700000000000000000000000000000000000000000000060648201526084016109e0565b60008581526033602052604090205460ff1615611ecf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a6564000000000000000000000060648201526084016109e0565b5050505050565b611ede610b5a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f42576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff166000908152603a6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b611f99610b5a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ffd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603b805463ffffffff929092167fffffffffffffffffffffffffffffffffffffffff000000000000000000000000909216919091176401000000004267ffffffffffffffff1602179055565b565b6120536115df565b1561208a576040517ff480973e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61209481336108fc565b50565b60006120a48260106156e8565b6120b090615208615718565b92915050565b603c60205281600052604060002081815481106120d257600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169150829050565b600054610100900460ff161580801561211b5750600054600160ff909116105b806121355750303b158015612135575060005460ff166001145b6121c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016109e0565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561221f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603880547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8781169190911790925560378054909116858316179055603580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010085841602179055603254166122d857603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790555b6122e0612749565b8015610b5457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60015460009061239a907801000000000000000000000000000000000000000000000000900467ffffffffffffffff16436156d1565b905060006123a661285c565b90506000816020015160ff16826000015163ffffffff166123c79190615773565b905082156124fe576001546000906123fe908390700100000000000000000000000000000000900467ffffffffffffffff166157db565b90506000836040015160ff1683612415919061584f565b6001546124359084906fffffffffffffffffffffffffffffffff1661584f565b61243f9190615773565b600154909150600090612490906124699084906fffffffffffffffffffffffffffffffff1661590b565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff1661291d565b905060018611156124bf576124bc61246982876040015160ff1660018a6124b791906156d1565b61293c565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090612531908490700100000000000000000000000000000000900467ffffffffffffffff16615718565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1613156125be576040517f77ebef4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546000906125ea906fffffffffffffffffffffffffffffffff1667ffffffffffffffff881661597f565b905060006125fc48633b9aca00612991565b61260690836159bc565b905060005a61261590886156d1565b9050808211156126315761263161262c82846156d1565b6129a8565b5050505050505050565b80516020808301516040808501516060860151608087015160a0880151935160009761266b9790969591016159d0565b604051602081830303815290604052805190602001209050919050565b60008060006126988660006129d6565b9050806126ce576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b6000816000015182602001518360400151846060015160405160200161266b949392919093845260208401929092526040830152606082015260800190565b600080612731866129f4565b905061273f81868686612a26565b9695505050505050565b600054610100900460ff166127e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016109e0565b6001547801000000000000000000000000000000000000000000000000900467ffffffffffffffff166000036120495760408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6040805160c08082018352600080835260208301819052828401819052606083018190526080830181905260a083015260375483517fcc731b020000000000000000000000000000000000000000000000000000000081529351929373ffffffffffffffffffffffffffffffffffffffff9091169263cc731b02926004808401939192918290030181865afa1580156128f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bed9190615a3d565b600061293261292c8585612a56565b83612a66565b90505b9392505050565b6000670de0b6b3a764000061297d6129548583615773565b61296690670de0b6b3a76400006157db565b61297885670de0b6b3a764000061584f565b612a75565b612987908661584f565b6129329190615773565b6000818310156129a15781612935565b5090919050565b6000805a90505b825a6129bb90836156d1565b10156129d1576129ca82615af9565b91506129af565b505050565b600080603f83619c4001026040850201603f5a021015949350505050565b60608180519060200120604051602001612a1091815260200190565b6040516020818303038152906040529050919050565b6000612a4d84612a37878686612aa6565b8051602091820120825192909101919091201490565b95945050505050565b6000818312156129a15781612935565b60008183126129a15781612935565b6000612935670de0b6b3a764000083612a8d86613524565b612a97919061584f565b612aa19190615773565b613768565b60606000845111612b13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b6579000000000000000000000060448201526064016109e0565b6000612b1e846139a7565b90506000612b2b86613a93565b9050600084604051602001612b4291815260200190565b60405160208183030381529060405290506000805b845181101561349b576000858281518110612b7457612b74615b31565b602002602001015190508451831115612c0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e67746800000000000000000000000000000000000060648201526084016109e0565b82600003612cc85780518051602091820120604051612c5d92612c3792910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b612cc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016109e0565b612e1f565b805151602011612d7e5780518051602091820120604051612cf292612c3792910190815260200190565b612cc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c20686173680000000000000000000000000000000000000000000000000060648201526084016109e0565b805184516020808701919091208251919092012014612e1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f652068617368000000000000000000000000000000000000000000000000000060648201526084016109e0565b612e2b60106001615b60565b816020015151036130075784518303612f9f57612e658160200151601081518110612e5857612e58615b31565b6020026020010151613af6565b96506000875111612ef8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016109e0565b60018651612f0691906156d1565b8214612f94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016109e0565b505050505050612935565b6000858481518110612fb357612fb3615b31565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110612fde57612fde615b31565b60200260200101519050612ff181613c56565b9550612ffe600186615b60565b94505050613488565b60028160200151510361340057600061301f82613c7b565b905060008160008151811061303657613036615b31565b016020015160f81c9050600061304d600283615b78565b613058906002615b9a565b90506000613069848360ff16613c9f565b905060006130778a89613c9f565b905060006130858383613cd5565b905080835114613117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016109e0565b60ff85166002148061312c575060ff85166003145b1561331b57808251146131c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016109e0565b6131db8760200151600181518110612e5857612e58615b31565b9c5060008d511161326e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016109e0565b60018c5161327c91906156d1565b881461330a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016109e0565b505050505050505050505050612935565b60ff8516158061332e575060ff85166001145b1561336d5761335a876020015160018151811061334d5761334d615b31565b6020026020010151613c56565b9950613366818a615b60565b98506133f5565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e20707265666978000000000000000000000000000060648201526084016109e0565b505050505050613488565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f646500000000000000000000000000000000000000000000000060648201526084016109e0565b508061349381615af9565b915050612b57565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e747300000000000000000000000000000000000000000000000000000060648201526084016109e0565b600080821361358f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016109e0565b6000606061359c84613d89565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c1821361379957506000919050565b680755bf798b4a1bf1e5821261380b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f57000000000000000000000000000000000000000060448201526064016109e0565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b80516060908067ffffffffffffffff8111156139c5576139c5614eac565b604051908082528060200260200182016040528015613a0a57816020015b60408051808201909152606080825260208201528152602001906001900390816139e35790505b50915060005b81811015613a8c576040518060400160405280858381518110613a3557613a35615b31565b60200260200101518152602001613a64868481518110613a5757613a57615b31565b6020026020010151613e5f565b815250838281518110613a7957613a79615b31565b6020908102919091010152600101613a10565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b83811015613aeb578060011b82018184015160001a8060041c8253600f811660018301535050600101613abd565b509295945050505050565b60606000806000613b0685613e72565b919450925090506000816001811115613b2157613b21615577565b14613bae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016109e0565b613bb88284615b60565b855114613c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527f616e20696e76616c69642072656d61696e64657200000000000000000000000060648201526084016109e0565b612a4d856020015184846148df565b60606020826000015110613c7257613c6d82613af6565b6120b0565b6120b082614973565b60606120b0613c9a8360200151600081518110612e5857612e58615b31565b613a93565b606082518210613cbe57506040805160208101909152600081526120b0565b6129358383848651613cd091906156d1565b614989565b6000808251845110613ce8578251613ceb565b83515b90505b8082108015613d725750828281518110613d0a57613d0a615b31565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848381518110613d4957613d49615b31565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b15613d8257816001019150613cee565b5092915050565b6000808211613df4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016109e0565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b60606120b0613e6d83614b61565b614c4a565b600080600080846000015111613f30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a4016109e0565b6020840151805160001a607f8111613f555760006001600094509450945050506148d8565b60b78111614163576000613f6a6080836156d1565b905080876000015111614025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604e60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201527f2873686f727420737472696e6729000000000000000000000000000000000000608482015260a4016109e0565b6001838101517fff0000000000000000000000000000000000000000000000000000000000000016908214158061409e57507f80000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610155b614150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201527f73686f727420737472696e672900000000000000000000000000000000000000608482015260a4016109e0565b50600195509350600092506148d8915050565b60bf81116144b157600061417860b7836156d1565b905080876000015111614233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605160248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527f67746820286c6f6e6720737472696e6729000000000000000000000000000000608482015260a4016109e0565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003614311576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e6720737472696e672900000000000000000000000000000000000000000000608482015260a4016109e0565b600184015160088302610100031c603781116143d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f20737472696e6729000000000000000000000000000000000000000000000000608482015260a4016109e0565b6143df8184615b60565b895111614494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e6720737472696e67290000000000000000000000000000000000000000608482015260a4016109e0565b61449f836001615b60565b97509550600094506148d89350505050565b60f781116145925760006144c660c0836156d1565b905080876000015111614581576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e206c697374206c656e67746820287360648201527f686f7274206c6973742900000000000000000000000000000000000000000000608482015260a4016109e0565b6001955093508492506148d8915050565b600061459f60f7836156d1565b90508087600001511161465a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201527f6820286c6f6e67206c6973742900000000000000000000000000000000000000608482015260a4016109e0565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003614738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e67206c69737429000000000000000000000000000000000000000000000000608482015260a4016109e0565b600184015160088302610100031c603781116147fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f206c697374290000000000000000000000000000000000000000000000000000608482015260a4016109e0565b6148068184615b60565b8951116148bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e67206c6973742900000000000000000000000000000000000000000000608482015260a4016109e0565b6148c6836001615b60565b97509550600194506148d89350505050565b9193909250565b60608167ffffffffffffffff8111156148fa576148fa614eac565b6040519080825280601f01601f191660200182016040528015614924576020820181803683370190505b50905081156129355760006149398486615b60565b90506020820160005b8481101561495a578281015182820152602001614942565b84811115614969576000858301525b5050509392505050565b60606120b08260200151600084600001516148df565b60608182601f0110156149f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016109e0565b828284011015614a64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016109e0565b81830184511015614ad1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e647300000000000000000000000000000060448201526064016109e0565b606082158015614af05760405191506000825260208201604052614b58565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015614b29578051835260209283019201614b11565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b60408051808201909152600080825260208201526000825111614c2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a4016109e0565b50604080518082019091528151815260209182019181019190915290565b60606000806000614c5a85613e72565b919450925090506001816001811115614c7557614c75615577565b14614d02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016109e0565b8451614d0e8385615b60565b14614d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e766160448201527f6c696420646174612072656d61696e646572000000000000000000000000000060648201526084016109e0565b604080516020808252610420820190925290816020015b6040805180820190915260008082526020820152815260200190600190039081614db25790505093506000835b8651811015614ea057600080614e256040518060400160405280858c60000151614e0991906156d1565b8152602001858c60200151614e1e9190615b60565b9052613e72565b509150915060405180604001604052808383614e419190615b60565b8152602001848b60200151614e569190615b60565b815250888581518110614e6b57614e6b615b31565b6020908102919091010152614e81600185615b60565b9350614e8d8183615b60565b614e979084615b60565b92505050614ddf565b50845250919392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614f2257614f22614eac565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461209457600080fd5b600082601f830112614f5d57600080fd5b813567ffffffffffffffff811115614f7757614f77614eac565b614fa860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614edb565b818152846020838601011115614fbd57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215614fec57600080fd5b60405160c0810167ffffffffffffffff828210818311171561501057615010614eac565b81604052829350843583526020850135915061502b82614f2a565b8160208401526040850135915061504182614f2a565b816040840152606085013560608401526080850135608084015260a085013591508082111561506f57600080fd5b5061507c85828601614f4c565b60a0830152505092915050565b6000806040838503121561509c57600080fd5b823567ffffffffffffffff8111156150b357600080fd5b6150bf85828601614fda565b92505060208301356150d081614f2a565b809150509250929050565b6000602082840312156150ed57600080fd5b813561293581614f2a565b600080600080600085870360e081121561511157600080fd5b863567ffffffffffffffff8082111561512957600080fd5b6151358a838b01614fda565b97506020890135965060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08401121561516e57600080fd5b60408901955060c089013592508083111561518857600080fd5b828901925089601f84011261519c57600080fd5b82359150808211156151ad57600080fd5b508860208260051b84010111156151c357600080fd5b959894975092955050506020019190565b6000602082840312156151e657600080fd5b5035919050565b60005b838110156152085781810151838201526020016151f0565b83811115610b545750506000910152565b600081518084526152318160208601602086016151ed565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006129356020830184615219565b6000806040838503121561528957600080fd5b8235915060208301356150d081614f2a565b63ffffffff8116811461209457600080fd5b6000602082840312156152bf57600080fd5b81356129358161529b565b6000602082840312156152dc57600080fd5b813567ffffffffffffffff8111156152f357600080fd5b6152ff84828501614fda565b949350505050565b67ffffffffffffffff8116811461209457600080fd5b60006020828403121561532f57600080fd5b813561293581615307565b6000806040838503121561534d57600080fd5b50508035926020909101359150565b60008060006060848603121561537157600080fd5b833561537c81614f2a565b9250602084013561538c81614f2a565b9150604084013561539c81614f2a565b809150509250925092565b801515811461209457600080fd5b600080600080600060a086880312156153cd57600080fd5b85356153d881614f2a565b94506020860135935060408601356153ef81615307565b925060608601356153ff816153a7565b9150608086013567ffffffffffffffff81111561541b57600080fd5b61542788828901614f4c565b9150509295509295909350565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b6048820152600082516154888160498501602087016151ed565b919091016049019695505050505050565b6000602082840312156154ab57600080fd5b815161293581614f2a565b6000806000606084860312156154cb57600080fd5b83516154d68161529b565b60208501519093506154e781615307565b604085015190925061539c81614f2a565b60006020828403121561550a57600080fd5b5051919050565b60006080828403121561552357600080fd5b6040516080810181811067ffffffffffffffff8211171561554657615546614eac565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000602082840312156155b857600080fd5b81516003811061293557600080fd5b6000602082840312156155d957600080fd5b81516129358161529b565b600067ffffffffffffffff808411156155ff576155ff614eac565b8360051b6020615610818301614edb565b86815291850191818101903684111561562857600080fd5b865b8481101561565c578035868111156156425760008081fd5b61564e36828b01614f4c565b84525091830191830161562a565b50979650505050505050565b60006020828403121561567a57600080fd5b8151612935816153a7565b60006020828403121561569757600080fd5b815161293581615307565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156156e3576156e36156a2565b500390565b600067ffffffffffffffff8083168185168183048111821515161561570f5761570f6156a2565b02949350505050565b600067ffffffffffffffff80831681851680830382111561573b5761573b6156a2565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261578257615782615744565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f8000000000000000000000000000000000000000000000000000000000000000831416156157d6576157d66156a2565b500590565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615615815576158156156a2565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615615849576158496156a2565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615615890576158906156a2565b7f800000000000000000000000000000000000000000000000000000000000000060008712868205881281841616156158cb576158cb6156a2565b600087129250878205871284841616156158e7576158e76156a2565b878505871281841616156158fd576158fd6156a2565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615615945576159456156a2565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615615979576159796156a2565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156159b7576159b76156a2565b500290565b6000826159cb576159cb615744565b500490565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152615a1b60c0830184615219565b98975050505050505050565b805160ff81168114615a3857600080fd5b919050565b600060c08284031215615a4f57600080fd5b60405160c0810181811067ffffffffffffffff82111715615a7257615a72614eac565b6040528251615a808161529b565b8152615a8e60208401615a27565b6020820152615a9f60408401615a27565b60408201526060830151615ab28161529b565b60608201526080830151615ac58161529b565b608082015260a08301516fffffffffffffffffffffffffffffffff81168114615aed57600080fd5b60a08201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615b2a57615b2a6156a2565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008219821115615b7357615b736156a2565b500190565b600060ff831680615b8b57615b8b615744565b8060ff84160691505092915050565b600060ff821660ff841680821015615bb457615bb46156a2565b9003939250505056fea164736f6c634300080f000a"
var OptimismPortal2DeployedBin = "0x6080604052600436106101b05760003560e01c80637fc48504116100ec578063a3860f481161008a578063c0c53b8b11610064578063c0c53b8b1461063e578063cff0ab961461065e578063e9e05c42146106ff578063f2b4e6171461071257600080fd5b8063a3860f4814610544578063bb2c727e14610564578063bf653a5c1461060b57600080fd5b8063952b2797116100c6578063952b2797146104945780639bf62d82146104c7578063a14238e7146104f4578063a35d99df1461052457600080fd5b80637fc48504146104545780638b4c40b0146101d55780638c3152e91461047457600080fd5b80634870496f1161015957806354fd4d501161013357806354fd4d50146103a95780635c975abb146103ff57806371c1566e146104145780637d6be8dc1461043457600080fd5b80634870496f1461030c5780634fd0434c1461032c578063513747ab1461036e57600080fd5b806343ca1c501161018a57806343ca1c5014610297578063452a9320146102b757806345884d32146102cc57600080fd5b806333d7e2bd146101dc57806335e80ab3146102335780633c9f397c1461026557600080fd5b366101d7576101d53334620186a060006040518060200160405280600081525061073f565b005b600080fd5b3480156101e857600080fd5b506037546102099073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561023f57600080fd5b5060355461020990610100900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561027157600080fd5b50603b546102829063ffffffff1681565b60405163ffffffff909116815260200161022a565b3480156102a357600080fd5b506101d56102b2366004614dad565b6108fc565b3480156102c357600080fd5b50610209610b5a565b3480156102d857600080fd5b506102fc6102e7366004614dff565b603a6020526000908152604090205460ff1681565b604051901515815260200161022a565b34801561031857600080fd5b506101d5610327366004614e1c565b610bf2565b34801561033857600080fd5b50603b5461035590640100000000900467ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161022a565b34801561037a57600080fd5b5061039b610389366004614ef8565b6000908152603c602052604090205490565b60405190815260200161022a565b3480156103b557600080fd5b506103f26040518060400160405280600581526020017f332e372e3000000000000000000000000000000000000000000000000000000081525081565b60405161022a9190614f87565b34801561040b57600080fd5b506102fc6112d6565b34801561042057600080fd5b506101d561042f366004614f9a565b611369565b34801561044057600080fd5b506101d561044f366004614dff565b611bfa565b34801561046057600080fd5b506101d561046f366004614fd1565b611cb5565b34801561048057600080fd5b506101d561048f366004614fee565b611d6f565b3480156104a057600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061039b565b3480156104d357600080fd5b506032546102099073ffffffffffffffffffffffffffffffffffffffff1681565b34801561050057600080fd5b506102fc61050f366004614ef8565b60336020526000908152604090205460ff1681565b34801561053057600080fd5b5061035561053f366004615041565b611dbb565b34801561055057600080fd5b5061020961055f36600461505e565b611dda565b34801561057057600080fd5b506105d661057f366004614f9a565b603960209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900467ffffffffffffffff1682565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835267ffffffffffffffff90911660208301520161022a565b34801561061757600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061039b565b34801561064a57600080fd5b506101d5610659366004615080565b611e1f565b34801561066a57600080fd5b506001546106c6906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff928316602085015291169082015260600161022a565b6101d561070d3660046150d9565b61073f565b34801561071e57600080fd5b506038546102099073ffffffffffffffffffffffffffffffffffffffff1681565b8260005a9050838015610767575073ffffffffffffffffffffffffffffffffffffffff871615155b1561079e576040517f13496fda00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107a88351611dbb565b67ffffffffffffffff168567ffffffffffffffff1610156107f5576040517f4929b80800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6201d4c083511115610833576040517f73052b0f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33328114610854575033731111000000000000000000000000000000001111015b6000348888888860405160200161086f959493929190615158565b604051602081830303815290604052905060008973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c32846040516108df9190614f87565b60405180910390a450506108f38282612088565b50505050505050565b6109046112d6565b1561093b576040517ff480973e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60325473ffffffffffffffffffffffffffffffffffffffff1661dead146109e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e0060648201526084015b60405180910390fd5b60006109f48361235f565b9050610a008183611369565b600081815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055908501516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558401516080850151606086015160a0870151610aa2939291906123ac565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915082907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b90610b0790841515815260200190565b60405180910390a280158015610b1d5750326001145b15610b54576040517feeae4ed300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663452a93206040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bed91906151bd565b905090565b610bfa6112d6565b15610c31576040517ff480973e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff1603610cf0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e74726163740060648201526084016109e0565b6038546040517fbb8aa1fc00000000000000000000000000000000000000000000000000000000815260048101869052600091829173ffffffffffffffffffffffffffffffffffffffff9091169063bb8aa1fc90602401606060405180830381865afa158015610d64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8891906151da565b925050915060008173ffffffffffffffffffffffffffffffffffffffff1663bcef3b556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfe919061521c565b603b5490915063ffffffff848116911614610e9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a20696e76616c69642067616d652074797060448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016109e0565b610eb2610ead36889003880188615235565b61240a565b8114610f40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f66000000000000000000000000000000000000000000000060648201526084016109e0565b6000610f4b8961235f565b905060018373ffffffffffffffffffffffffffffffffffffffff1663200d2ed26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbe91906152ca565b6002811115610fcf57610fcf61529b565b0361105c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4f7074696d69736d506f7274616c3a2063616e6e6f742070726f76652061676160448201527f696e737420696e76616c696420646973707574652067616d657300000000000060648201526084016109e0565b60408051602081018390526000918101829052606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830181905292506111259101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f010000000000000000000000000000000000000000000000000000000000000060208301529061111b898b6152eb565b8b60400135612449565b6111b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f66000000000000000000000000000060648201526084016109e0565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff808716825267ffffffffffffffff4281166020808501918252600088815260398252868120338252825286812095518654935190941674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090931693851693909317919091179093558d840151928e01519351928216939091169185917f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f6291a4506000908152603c602090815260408220805460018101825590835291200180547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790555050505050505050565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611345573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bed919061536f565b600082815260396020908152604080832073ffffffffffffffffffffffffffffffffffffffff85811685529083528184208251808401845290549182168082527401000000000000000000000000000000000000000090920467ffffffffffffffff1681850152818552603a90935292205490919060ff161561146e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4f7074696d69736d506f7274616c3a20646973707574652067616d652068617360448201527f206265656e20626c61636b6c697374656400000000000000000000000000000060648201526084016109e0565b816020015167ffffffffffffffff16600003611532576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206e60448201527f6f74206265656e2070726f76656e2062792070726f6f66207375626d6974746560648201527f7220616464726573732079657400000000000000000000000000000000000000608482015260a4016109e0565b60006115b38273ffffffffffffffffffffffffffffffffffffffff1663cf09e0d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611582573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a6919061538c565b67ffffffffffffffff1690565b90508067ffffffffffffffff16836020015167ffffffffffffffff1611611682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604e60248201527f4f7074696d69736d506f7274616c3a207769746864726177616c2074696d657360448201527f74616d70206c657373207468616e20646973707574652067616d65206372656160648201527f74696f6e2074696d657374616d70000000000000000000000000000000000000608482015260a4016109e0565b7f0000000000000000000000000000000000000000000000000000000000000000836020015167ffffffffffffffff16426116bd91906153d8565b1161174a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a2070726f76656e2077697468647261776160448201527f6c20686173206e6f74206d61747572656420796574000000000000000000000060648201526084016109e0565b60028273ffffffffffffffffffffffffffffffffffffffff1663200d2ed26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bb91906152ca565b60028111156117cc576117cc61529b565b14611859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f686173206e6f74206265656e2076616c6964617465640000000000000000000060648201526084016109e0565b603b5463ffffffff1663ffffffff166118e38373ffffffffffffffffffffffffffffffffffffffff1663bbdc02db6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118da91906153ef565b63ffffffff1690565b63ffffffff1614611976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a20696e76616c69642067616d652074797060448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016109e0565b603b5467ffffffffffffffff64010000000090910481169082161015611a44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604b60248201527f4f7074696d69736d506f7274616c3a20646973707574652067616d652063726560448201527f61746564206265666f7265207265737065637465642067616d6520747970652060648201527f7761732075706461746564000000000000000000000000000000000000000000608482015260a4016109e0565b7f0000000000000000000000000000000000000000000000000000000000000000611ab38373ffffffffffffffffffffffffffffffffffffffff166319effeb46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611582573d6000803e3d6000fd5b611ac79067ffffffffffffffff16426153d8565b11611b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f696e206169722d6761700000000000000000000000000000000000000000000060648201526084016109e0565b60008581526033602052604090205460ff1615611bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a6564000000000000000000000060648201526084016109e0565b5050505050565b611c02610b5a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c66576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff166000908152603a6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b611cbd610b5a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d21576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603b805463ffffffff929092167fffffffffffffffffffffffffffffffffffffffff000000000000000000000000909216919091176401000000004267ffffffffffffffff1602179055565b565b611d776112d6565b15611dae576040517ff480973e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611db881336108fc565b50565b6000611dc882601061540c565b611dd49061520861543c565b92915050565b603c6020528160005260406000208181548110611df657600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169150829050565b600054610100900460ff1615808015611e3f5750600054600160ff909116105b80611e595750303b158015611e59575060005460ff166001145b611ee5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016109e0565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611f4357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603880547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8781169190911790925560378054909116858316179055603580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101008584160217905560325416611ffc57603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790555b61200461246d565b8015610b5457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6001546000906120be907801000000000000000000000000000000000000000000000000900467ffffffffffffffff16436153d8565b905060006120ca612580565b90506000816020015160ff16826000015163ffffffff166120eb9190615497565b9050821561222257600154600090612122908390700100000000000000000000000000000000900467ffffffffffffffff166154ff565b90506000836040015160ff16836121399190615573565b6001546121599084906fffffffffffffffffffffffffffffffff16615573565b6121639190615497565b6001549091506000906121b49061218d9084906fffffffffffffffffffffffffffffffff1661562f565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff16612641565b905060018611156121e3576121e061218d82876040015160ff1660018a6121db91906153d8565b612660565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090612255908490700100000000000000000000000000000000900467ffffffffffffffff1661543c565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1613156122e2576040517f77ebef4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015460009061230e906fffffffffffffffffffffffffffffffff1667ffffffffffffffff88166156a3565b9050600061232048633b9aca006126b5565b61232a90836156e0565b905060005a61233990886153d8565b9050808211156123555761235561235082846153d8565b6126cc565b5050505050505050565b80516020808301516040808501516060860151608087015160a0880151935160009761238f9790969591016156f4565b604051602081830303815290604052805190602001209050919050565b60008060006123bc8660006126fa565b9050806123f2576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b6000816000015182602001518360400151846060015160405160200161238f949392919093845260208401929092526040830152606082015260800190565b60008061245586612718565b90506124638186868661274a565b9695505050505050565b600054610100900460ff16612504576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016109e0565b6001547801000000000000000000000000000000000000000000000000900467ffffffffffffffff16600003611d6d5760408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6040805160c08082018352600080835260208301819052828401819052606083018190526080830181905260a083015260375483517fcc731b020000000000000000000000000000000000000000000000000000000081529351929373ffffffffffffffffffffffffffffffffffffffff9091169263cc731b02926004808401939192918290030181865afa15801561261d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bed9190615761565b6000612656612650858561277a565b8361278a565b90505b9392505050565b6000670de0b6b3a76400006126a16126788583615497565b61268a90670de0b6b3a76400006154ff565b61269c85670de0b6b3a7640000615573565b612799565b6126ab9086615573565b6126569190615497565b6000818310156126c55781612659565b5090919050565b6000805a90505b825a6126df90836153d8565b10156126f5576126ee8261581d565b91506126d3565b505050565b600080603f83619c4001026040850201603f5a021015949350505050565b6060818051906020012060405160200161273491815260200190565b6040516020818303038152906040529050919050565b60006127718461275b8786866127ca565b8051602091820120825192909101919091201490565b95945050505050565b6000818312156126c55781612659565b60008183126126c55781612659565b6000612659670de0b6b3a7640000836127b186613248565b6127bb9190615573565b6127c59190615497565b61348c565b60606000845111612837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b6579000000000000000000000060448201526064016109e0565b6000612842846136cb565b9050600061284f866137b7565b905060008460405160200161286691815260200190565b60405160208183030381529060405290506000805b84518110156131bf57600085828151811061289857612898615855565b602002602001015190508451831115612933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e67746800000000000000000000000000000000000060648201526084016109e0565b826000036129ec57805180516020918201206040516129819261295b92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6129e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016109e0565b612b43565b805151602011612aa25780518051602091820120604051612a169261295b92910190815260200190565b6129e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c20686173680000000000000000000000000000000000000000000000000060648201526084016109e0565b805184516020808701919091208251919092012014612b43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f652068617368000000000000000000000000000000000000000000000000000060648201526084016109e0565b612b4f60106001615884565b81602001515103612d2b5784518303612cc357612b898160200151601081518110612b7c57612b7c615855565b602002602001015161381a565b96506000875111612c1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016109e0565b60018651612c2a91906153d8565b8214612cb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016109e0565b505050505050612659565b6000858481518110612cd757612cd7615855565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110612d0257612d02615855565b60200260200101519050612d158161397a565b9550612d22600186615884565b945050506131ac565b600281602001515103613124576000612d438261399f565b9050600081600081518110612d5a57612d5a615855565b016020015160f81c90506000612d7160028361589c565b612d7c9060026158be565b90506000612d8d848360ff166139c3565b90506000612d9b8a896139c3565b90506000612da983836139f9565b905080835114612e3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016109e0565b60ff851660021480612e50575060ff85166003145b1561303f5780825114612ee5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016109e0565b612eff8760200151600181518110612b7c57612b7c615855565b9c5060008d5111612f92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016109e0565b60018c51612fa091906153d8565b881461302e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016109e0565b505050505050505050505050612659565b60ff85161580613052575060ff85166001145b156130915761307e876020015160018151811061307157613071615855565b602002602001015161397a565b995061308a818a615884565b9850613119565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e20707265666978000000000000000000000000000060648201526084016109e0565b5050505050506131ac565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f646500000000000000000000000000000000000000000000000060648201526084016109e0565b50806131b78161581d565b91505061287b565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e747300000000000000000000000000000000000000000000000000000060648201526084016109e0565b60008082136132b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016109e0565b600060606132c084613aad565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c182136134bd57506000919050565b680755bf798b4a1bf1e5821261352f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f57000000000000000000000000000000000000000060448201526064016109e0565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b80516060908067ffffffffffffffff8111156136e9576136e9614bd0565b60405190808252806020026020018201604052801561372e57816020015b60408051808201909152606080825260208201528152602001906001900390816137075790505b50915060005b818110156137b057604051806040016040528085838151811061375957613759615855565b6020026020010151815260200161378886848151811061377b5761377b615855565b6020026020010151613b83565b81525083828151811061379d5761379d615855565b6020908102919091010152600101613734565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b8381101561380f578060011b82018184015160001a8060041c8253600f8116600183015350506001016137e1565b509295945050505050565b6060600080600061382a85613b96565b9194509250905060008160018111156138455761384561529b565b146138d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016109e0565b6138dc8284615884565b85511461396b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527f616e20696e76616c69642072656d61696e64657200000000000000000000000060648201526084016109e0565b61277185602001518484614603565b60606020826000015110613996576139918261381a565b611dd4565b611dd482614697565b6060611dd46139be8360200151600081518110612b7c57612b7c615855565b6137b7565b6060825182106139e25750604080516020810190915260008152611dd4565b61265983838486516139f491906153d8565b6146ad565b6000808251845110613a0c578251613a0f565b83515b90505b8082108015613a965750828281518110613a2e57613a2e615855565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848381518110613a6d57613a6d615855565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b15613aa657816001019150613a12565b5092915050565b6000808211613b18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016109e0565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b6060611dd4613b9183614885565b61496e565b600080600080846000015111613c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a4016109e0565b6020840151805160001a607f8111613c795760006001600094509450945050506145fc565b60b78111613e87576000613c8e6080836153d8565b905080876000015111613d49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604e60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201527f2873686f727420737472696e6729000000000000000000000000000000000000608482015260a4016109e0565b6001838101517fff00000000000000000000000000000000000000000000000000000000000000169082141580613dc257507f80000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610155b613e74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201527f73686f727420737472696e672900000000000000000000000000000000000000608482015260a4016109e0565b50600195509350600092506145fc915050565b60bf81116141d5576000613e9c60b7836153d8565b905080876000015111613f57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605160248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527f67746820286c6f6e6720737472696e6729000000000000000000000000000000608482015260a4016109e0565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003614035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e6720737472696e672900000000000000000000000000000000000000000000608482015260a4016109e0565b600184015160088302610100031c603781116140f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f20737472696e6729000000000000000000000000000000000000000000000000608482015260a4016109e0565b6141038184615884565b8951116141b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e6720737472696e67290000000000000000000000000000000000000000608482015260a4016109e0565b6141c3836001615884565b97509550600094506145fc9350505050565b60f781116142b65760006141ea60c0836153d8565b9050808760000151116142a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e206c697374206c656e67746820287360648201527f686f7274206c6973742900000000000000000000000000000000000000000000608482015260a4016109e0565b6001955093508492506145fc915050565b60006142c360f7836153d8565b90508087600001511161437e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201527f6820286c6f6e67206c6973742900000000000000000000000000000000000000608482015260a4016109e0565b60018301517fff0000000000000000000000000000000000000000000000000000000000000016600081900361445c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e67206c69737429000000000000000000000000000000000000000000000000608482015260a4016109e0565b600184015160088302610100031c60378111614520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f206c697374290000000000000000000000000000000000000000000000000000608482015260a4016109e0565b61452a8184615884565b8951116145df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e67206c6973742900000000000000000000000000000000000000000000608482015260a4016109e0565b6145ea836001615884565b97509550600194506145fc9350505050565b9193909250565b60608167ffffffffffffffff81111561461e5761461e614bd0565b6040519080825280601f01601f191660200182016040528015614648576020820181803683370190505b509050811561265957600061465d8486615884565b90506020820160005b8481101561467e578281015182820152602001614666565b8481111561468d576000858301525b5050509392505050565b6060611dd4826020015160008460000151614603565b60608182601f01101561471c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016109e0565b828284011015614788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016109e0565b818301845110156147f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e647300000000000000000000000000000060448201526064016109e0565b606082158015614814576040519150600082526020820160405261487c565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561484d578051835260209283019201614835565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b60408051808201909152600080825260208201526000825111614950576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a4016109e0565b50604080518082019091528151815260209182019181019190915290565b6060600080600061497e85613b96565b9194509250905060018160018111156149995761499961529b565b14614a26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016109e0565b8451614a328385615884565b14614abf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e766160448201527f6c696420646174612072656d61696e646572000000000000000000000000000060648201526084016109e0565b604080516020808252610420820190925290816020015b6040805180820190915260008082526020820152815260200190600190039081614ad65790505093506000835b8651811015614bc457600080614b496040518060400160405280858c60000151614b2d91906153d8565b8152602001858c60200151614b429190615884565b9052613b96565b509150915060405180604001604052808383614b659190615884565b8152602001848b60200151614b7a9190615884565b815250888581518110614b8f57614b8f615855565b6020908102919091010152614ba5600185615884565b9350614bb18183615884565b614bbb9084615884565b92505050614b03565b50845250919392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614c4657614c46614bd0565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114611db857600080fd5b600082601f830112614c8157600080fd5b813567ffffffffffffffff811115614c9b57614c9b614bd0565b614ccc60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614bff565b818152846020838601011115614ce157600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215614d1057600080fd5b60405160c0810167ffffffffffffffff8282108183111715614d3457614d34614bd0565b816040528293508435835260208501359150614d4f82614c4e565b81602084015260408501359150614d6582614c4e565b816040840152606085013560608401526080850135608084015260a0850135915080821115614d9357600080fd5b50614da085828601614c70565b60a0830152505092915050565b60008060408385031215614dc057600080fd5b823567ffffffffffffffff811115614dd757600080fd5b614de385828601614cfe565b9250506020830135614df481614c4e565b809150509250929050565b600060208284031215614e1157600080fd5b813561265981614c4e565b600080600080600085870360e0811215614e3557600080fd5b863567ffffffffffffffff80821115614e4d57600080fd5b614e598a838b01614cfe565b97506020890135965060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc084011215614e9257600080fd5b60408901955060c0890135925080831115614eac57600080fd5b828901925089601f840112614ec057600080fd5b8235915080821115614ed157600080fd5b508860208260051b8401011115614ee757600080fd5b959894975092955050506020019190565b600060208284031215614f0a57600080fd5b5035919050565b60005b83811015614f2c578181015183820152602001614f14565b83811115610b545750506000910152565b60008151808452614f55816020860160208601614f11565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126596020830184614f3d565b60008060408385031215614fad57600080fd5b823591506020830135614df481614c4e565b63ffffffff81168114611db857600080fd5b600060208284031215614fe357600080fd5b813561265981614fbf565b60006020828403121561500057600080fd5b813567ffffffffffffffff81111561501757600080fd5b61502384828501614cfe565b949350505050565b67ffffffffffffffff81168114611db857600080fd5b60006020828403121561505357600080fd5b81356126598161502b565b6000806040838503121561507157600080fd5b50508035926020909101359150565b60008060006060848603121561509557600080fd5b83356150a081614c4e565b925060208401356150b081614c4e565b915060408401356150c081614c4e565b809150509250925092565b8015158114611db857600080fd5b600080600080600060a086880312156150f157600080fd5b85356150fc81614c4e565b94506020860135935060408601356151138161502b565b92506060860135615123816150cb565b9150608086013567ffffffffffffffff81111561513f57600080fd5b61514b88828901614c70565b9150509295509295909350565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b6048820152600082516151ac816049850160208701614f11565b919091016049019695505050505050565b6000602082840312156151cf57600080fd5b815161265981614c4e565b6000806000606084860312156151ef57600080fd5b83516151fa81614fbf565b602085015190935061520b8161502b565b60408501519092506150c081614c4e565b60006020828403121561522e57600080fd5b5051919050565b60006080828403121561524757600080fd5b6040516080810181811067ffffffffffffffff8211171561526a5761526a614bd0565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000602082840312156152dc57600080fd5b81516003811061265957600080fd5b600067ffffffffffffffff8084111561530657615306614bd0565b8360051b6020615317818301614bff565b86815291850191818101903684111561532f57600080fd5b865b84811015615363578035868111156153495760008081fd5b61535536828b01614c70565b845250918301918301615331565b50979650505050505050565b60006020828403121561538157600080fd5b8151612659816150cb565b60006020828403121561539e57600080fd5b81516126598161502b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156153ea576153ea6153a9565b500390565b60006020828403121561540157600080fd5b815161265981614fbf565b600067ffffffffffffffff80831681851681830481118215151615615433576154336153a9565b02949350505050565b600067ffffffffffffffff80831681851680830382111561545f5761545f6153a9565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826154a6576154a6615468565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f8000000000000000000000000000000000000000000000000000000000000000831416156154fa576154fa6153a9565b500590565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615615539576155396153a9565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01831381161561556d5761556d6153a9565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000841360008413858304851182821616156155b4576155b46153a9565b7f800000000000000000000000000000000000000000000000000000000000000060008712868205881281841616156155ef576155ef6153a9565b6000871292508782058712848416161561560b5761560b6153a9565b87850587128184161615615621576156216153a9565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615615669576156696153a9565b827f800000000000000000000000000000000000000000000000000000000000000003841281161561569d5761569d6153a9565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156156db576156db6153a9565b500290565b6000826156ef576156ef615468565b500490565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a083015261573f60c0830184614f3d565b98975050505050505050565b805160ff8116811461575c57600080fd5b919050565b600060c0828403121561577357600080fd5b60405160c0810181811067ffffffffffffffff8211171561579657615796614bd0565b60405282516157a481614fbf565b81526157b26020840161574b565b60208201526157c36040840161574b565b604082015260608301516157d681614fbf565b606082015260808301516157e981614fbf565b608082015260a08301516fffffffffffffffffffffffffffffffff8116811461581157600080fd5b60a08201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361584e5761584e6153a9565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008219821115615897576158976153a9565b500190565b600060ff8316806158af576158af615468565b8060ff84160691505092915050565b600060ff821660ff8416808210156158d8576158d86153a9565b9003939250505056fea164736f6c634300080f000a"
func init() {
......
......@@ -36,8 +36,8 @@
"sourceCodeHash": "0xd3450653cecc14bf8fbc21f2fa9b4a5fde348c2b6313d72e74e08666201295a2"
},
"src/L1/OptimismPortal2.sol": {
"initCodeHash": "0x12407ad2db89ab758460e1cbd93bdc61fc3c30b20acab6ab61c96c51767c16f6",
"sourceCodeHash": "0x1cd093d048b893846319bc242c8dd5744de1f675e87551de423e0ae4ab3216e1"
"initCodeHash": "0xc70422a7500313e2e43fd01123643f4aa5bac3b7e26f304f5b1bb57e14af7598",
"sourceCodeHash": "0xab39ebdd0cb534771d11cacb1e217585db20d5b5bd89803c8485dbccb7baaaf8"
},
"src/L1/ProtocolVersions.sol": {
"initCodeHash": "0x72cd467e8bcf019c02675d72ab762e088bcc9cc0f1a4e9f587fa4589f7fdd1b8",
......
......@@ -121,8 +121,8 @@ contract OptimismPortal2 is Initializable, ResourceMetering, ISemver {
}
/// @notice Semantic version.
/// @custom:semver 3.6.0
string public constant version = "3.6.0";
/// @custom:semver 3.7.0
string public constant version = "3.7.0";
/// @notice Constructs the OptimismPortal contract.
constructor(
......@@ -253,7 +253,6 @@ contract OptimismPortal2 is Initializable, ResourceMetering, ISemver {
// Load the ProvenWithdrawal into memory, using the withdrawal hash as a unique identifier.
bytes32 withdrawalHash = Hashing.hashWithdrawal(_tx);
ProvenWithdrawal memory provenWithdrawal = provenWithdrawals[withdrawalHash][msg.sender];
// We do not allow for proving withdrawals against dispute games that have resolved against the favor
// of the root claim.
......@@ -262,19 +261,6 @@ contract OptimismPortal2 is Initializable, ResourceMetering, ISemver {
"OptimismPortal: cannot prove against invalid dispute games"
);
// We generally want to prevent users from proving the same withdrawal multiple times
// because each successive proof will update the timestamp. A malicious user can take
// advantage of this to prevent other users from finalizing their withdrawal. However,
// in the case that an honest user proves their withdrawal against a dispute game that
// resolves against the root claim, or the dispute game is blacklisted, we allow
// re-proving the withdrawal against a new proposal.
IDisputeGame oldGame = provenWithdrawal.disputeGameProxy;
require(
provenWithdrawal.timestamp == 0 || oldGame.status() == GameStatus.CHALLENGER_WINS
|| disputeGameBlacklist[oldGame] || oldGame.gameType().raw() != respectedGameType.raw(),
"OptimismPortal: withdrawal hash has already been proven, and the old dispute game is not invalid"
);
// Compute the storage slot of the withdrawal hash in the L2ToL1MessagePasser contract.
// Refer to the Solidity documentation for more information on how storage layouts are
// computed for mappings.
......
......@@ -444,58 +444,6 @@ contract OptimismPortal2_FinalizeWithdrawal_Test is CommonTest {
});
}
/// @dev Tests that `proveWithdrawalTransaction` reverts when the withdrawal has already been proven, and the
/// re-prove attempt is for the same dispute game.
function test_proveWithdrawalTransaction_replayProve_sameGame_reverts() external {
vm.expectEmit(true, true, true, true);
emit WithdrawalProven(_withdrawalHash, alice, bob);
optimismPortal2.proveWithdrawalTransaction({
_tx: _defaultTx,
_disputeGameIndex: _proposedGameIndex,
_outputRootProof: _outputRootProof,
_withdrawalProof: _withdrawalProof
});
vm.expectRevert(
"OptimismPortal: withdrawal hash has already been proven, and the old dispute game is not invalid"
);
optimismPortal2.proveWithdrawalTransaction({
_tx: _defaultTx,
_disputeGameIndex: _proposedGameIndex,
_outputRootProof: _outputRootProof,
_withdrawalProof: _withdrawalProof
});
}
/// @dev Tests that `proveWithdrawalTransaction` reverts when the withdrawal has already been proven, and the first
/// game is currently being disputed, is otherwise not invalid, and has not been blacklisted.
function test_proveWithdrawalTransaction_replayProve_differentGameFirstGameGood_reverts() external {
vm.expectEmit(true, true, true, true);
emit WithdrawalProven(_withdrawalHash, alice, bob);
optimismPortal2.proveWithdrawalTransaction({
_tx: _defaultTx,
_disputeGameIndex: _proposedGameIndex,
_outputRootProof: _outputRootProof,
_withdrawalProof: _withdrawalProof
});
// Create a new dispute game, but don't mock anything about the first game.
disputeGameFactory.create(
optimismPortal2.respectedGameType(), Claim.wrap(_outputRoot), abi.encode(_proposedBlockNumber + 1)
);
_proposedGameIndex = disputeGameFactory.gameCount() - 1;
vm.expectRevert(
"OptimismPortal: withdrawal hash has already been proven, and the old dispute game is not invalid"
);
optimismPortal2.proveWithdrawalTransaction({
_tx: _defaultTx,
_disputeGameIndex: _proposedGameIndex,
_outputRootProof: _outputRootProof,
_withdrawalProof: _withdrawalProof
});
}
/// @dev Tests that `proveWithdrawalTransaction` reverts when the withdrawal has already been proven, and the new
/// game has the `CHALLENGER_WINS` status.
function test_proveWithdrawalTransaction_replayProve_differentGameChallengerWins_reverts() external {
......
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