UNPKG

@mantleio/contracts

Version:
552 lines (551 loc) 43.4 kB
{ "_format": "hh-sol-artifact-1", "contractName": "Challenge", "sourceName": "contracts/L1/fraud-proof/challenge/Challenge.sol", "abi": [ { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "startState", "type": "bytes32" }, { "indexed": false, "internalType": "bytes32", "name": "midState", "type": "bytes32" }, { "indexed": false, "internalType": "bytes32", "name": "endState", "type": "bytes32" }, { "indexed": false, "internalType": "uint256", "name": "blockNum", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "blockTime", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "challengedSegmentStart", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "challengedSegmentLength", "type": "uint256" } ], "name": "Bisected", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "winner", "type": "address" }, { "indexed": false, "internalType": "address", "name": "loser", "type": "address" }, { "indexed": false, "internalType": "enum IChallenge.CompletionReason", "name": "reason", "type": "uint8" } ], "name": "ChallengeCompleted", "type": "event" }, { "inputs": [ { "internalType": "bytes32[3]", "name": "bisection", "type": "bytes32[3]" }, { "internalType": "uint256", "name": "challengedSegmentIndex", "type": "uint256" }, { "internalType": "uint256", "name": "challengedSegmentStart", "type": "uint256" }, { "internalType": "uint256", "name": "challengedSegmentLength", "type": "uint256" }, { "internalType": "uint256", "name": "prevChallengedSegmentStart", "type": "uint256" }, { "internalType": "uint256", "name": "prevChallengedSegmentLength", "type": "uint256" } ], "name": "bisectExecution", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "bisectionHash", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "challenger", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "challengerTimeLeft", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "result", "type": "bool" } ], "name": "completeChallenge", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "currentBisected", "outputs": [ { "internalType": "bytes32", "name": "startState", "type": "bytes32" }, { "internalType": "bytes32", "name": "midState", "type": "bytes32" }, { "internalType": "bytes32", "name": "endState", "type": "bytes32" }, { "internalType": "uint256", "name": "blockNum", "type": "uint256" }, { "internalType": "uint256", "name": "blockTime", "type": "uint256" }, { "internalType": "uint256", "name": "challengedSegmentStart", "type": "uint256" }, { "internalType": "uint256", "name": "challengedSegmentLength", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentResponder", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentResponderTimeLeft", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "defender", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "defenderTimeLeft", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_defender", "type": "address" }, { "internalType": "address", "name": "_challenger", "type": "address" }, { "internalType": "contract IVerifierEntry", "name": "_verifier", "type": "address" }, { "internalType": "address", "name": "_resultReceiver", "type": "address" }, { "internalType": "uint256", "name": "_startInboxSize", "type": "uint256" }, { "internalType": "bytes32", "name": "_startStateHash", "type": "bytes32" }, { "internalType": "bytes32", "name": "_endStateHash", "type": "bytes32" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "checkStateHash", "type": "bytes32" }, { "internalType": "uint256", "name": "_numSteps", "type": "uint256" } ], "name": "initializeChallengeLength", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "lastMoveBlockTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "prevBisection", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rollback", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "setRollback", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "startInboxSize", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "timeout", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "turn", "outputs": [ { "internalType": "enum Challenge.Turn", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "coinbase", "type": "address" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "uint256", "name": "number", "type": "uint256" }, { "internalType": "address", "name": "origin", "type": "address" }, { "components": [ { "internalType": "uint64", "name": "nonce", "type": "uint64" }, { "internalType": "uint256", "name": "gasPrice", "type": "uint256" }, { "internalType": "uint64", "name": "gas", "type": "uint64" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "uint256", "name": "v", "type": "uint256" }, { "internalType": "uint256", "name": "r", "type": "uint256" }, { "internalType": "uint256", "name": "s", "type": "uint256" } ], "internalType": "struct EVMTypesLib.Transaction", "name": "transaction", "type": "tuple" }, { "internalType": "bytes32", "name": "inputRoot", "type": "bytes32" }, { "internalType": "bytes32", "name": "txHash", "type": "bytes32" } ], "internalType": "struct VerificationContext.Context", "name": "ctx", "type": "tuple" }, { "internalType": "uint8", "name": "verifyType", "type": "uint8" }, { "internalType": "bytes", "name": "proof", "type": "bytes" }, { "internalType": "uint256", "name": "challengedStepIndex", "type": "uint256" }, { "internalType": "uint256", "name": "prevChallengedSegmentStart", "type": "uint256" }, { "internalType": "uint256", "name": "prevChallengedSegmentLength", "type": "uint256" } ], "name": "verifyOneStepProof", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "winner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x608060405234801561001057600080fd5b50611df4806100206000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80638b299903116100d8578063dfbf53ae1161008c578063f03a7fcb11610066578063f03a7fcb1461034c578063f2858aa31461035f578063faeff41b1461037257600080fd5b8063dfbf53ae1461031b578063e87e35891461033b578063ed5b13031461034357600080fd5b80639afd9d78116100bd5780639afd9d78146102c0578063abf48013146102f5578063afeae9651461030857600080fd5b80638b299903146102935780638f2400a8146102ad57600080fd5b8063631acced1161012f578063732e696111610114578063732e6961146102145780637f4c91c51461026b5780638a8cd2181461028b57600080fd5b8063631acced1461020457806370dea79a1461020c57600080fd5b806341e8510c1161016057806341e8510c146101ad578063534db0e2146101b65780635f41e3d6146101fb57600080fd5b806318ef160d1461017c5780632a51f6f714610191575b600080fd5b61018f61018a366004611732565b61037b565b005b61019a60085481565b6040519081526020015b60405180910390f35b61019a60065481565b6003546101d69073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a4565b61019a60055481565b61018f6106ad565b61018f610759565b6010546011546012546013546014546015546016546102369695949392919087565b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e0016101a4565b6002546101d69073ffffffffffffffffffffffffffffffffffffffff1681565b6101d66107f9565b6007546102a09060ff1681565b6040516101a49190611783565b61018f6102bb36600461179d565b6108bb565b600e546102e59074010000000000000000000000000000000000000000900460ff1681565b60405190151581526020016101a4565b61018f610303366004611821565b610d4a565b61019a610316366004611898565b610f0e565b600e546101d69073ffffffffffffffffffffffffffffffffffffffff1681565b61019a610f25565b61019a60045481565b61018f61035a3660046118fa565b610f73565b61018f61036d36600461199e565b6112e1565b61019a600f5481565b6103836107f9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600a81526020017f4249535f53454e444552000000000000000000000000000000000000000000008152509061040e5760405162461bcd60e51b815260040161040591906119c7565b60405180910390fd5b50610417610f25565b6004546104249042611a3a565b11156040518060400160405280600c81526020017f4249535f444541444c494e4500000000000000000000000000000000000000008152509061047a5760405162461bcd60e51b815260040161040591906119c7565b5060085460408051808201909152600f81527f4348414c5f494e49545f53544154450000000000000000000000000000000000602082015290156104d15760405162461bcd60e51b815260040161040591906119c7565b50600081116105225760405162461bcd60e51b815260206004820152601160248201527f494e56414c49445f4e554d5f53544550530000000000000000000000000000006044820152606401610405565b604080516000602080830191909152818301849052825180830384018152606090920190925280519101206008556040805160e08082018352600c548083526020808401879052600d54848601819052436060808701829052426080808901829052600060a0808b0182905260c09a8b018d9052601089905560118e9055601287905560138690556014849055601582905560168d90558b519889529688018d90529987019490945290850191909152908301528101939093529082018390527f71809f4d4f7bf3c208a85ccd3c922c984024f8e3cef51e3d03ae677e4217097d910160405180910390a1600160075460ff16600281111561062657610626611754565b141561065b576004546106399042611a3a565b6006546106469190611a3a565b6006556007805460ff191660021790556106a5565b600260075460ff16600281111561067457610674611754565b14156106a5576004546106879042611a3a565b6005546106949190611a3a565b6005556007805460ff191660011790555b505042600455565b600e5474010000000000000000000000000000000000000000900460ff16156107185760405162461bcd60e51b815260206004820152601460248201527f414c52454144595f5345545f524f4c4c4241434b0000000000000000000000006044820152606401610405565b600e80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b610761610f25565b60045461076e9042611a3a565b116040518060400160405280601081526020017f54494d454f55545f444541444c494e4500000000000000000000000000000000815250906107c35760405162461bcd60e51b815260040161040591906119c7565b50600260075460ff1660028111156107dd576107dd611754565b14156107ef576107ed6001611584565b565b6107ed600161160c565b6000600260075460ff16600281111561081457610814611754565b1415610837575060025473ffffffffffffffffffffffffffffffffffffffff1690565b600160075460ff16600281111561085057610850611754565b1415610873575060035473ffffffffffffffffffffffffffffffffffffffff1690565b60405162461bcd60e51b815260206004820152600760248201527f4e4f5f5455524e000000000000000000000000000000000000000000000000006044820152606401610405565b6108c36107f9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600a81526020017f4249535f53454e44455200000000000000000000000000000000000000000000815250906109455760405162461bcd60e51b815260040161040591906119c7565b5061094e610f25565b60045461095b9042611a3a565b11156040518060400160405280600c81526020017f4249535f444541444c494e450000000000000000000000000000000000000000815250906109b15760405162461bcd60e51b815260040161040591906119c7565b50600854610a015760405162461bcd60e51b815260206004820152600f60248201527f4e4f545f494e495449414c495a454400000000000000000000000000000000006044820152606401610405565b6040805160208082018590528183018490528251808303840181526060909201909252805191012060085481146040518060400160405280600881526020017f4249535f5052455600000000000000000000000000000000000000000000000081525090610a825760405162461bcd60e51b815260040161040591906119c7565b50600a5415610aea5760095487351480610a9e5750600a548735145b610aea5760405162461bcd60e51b815260206004820152600f60248201527f414d424947554f55535f535441525400000000000000000000000000000000006044820152606401610405565b600b5460408801351415610b405760405162461bcd60e51b815260206004820152600b60248201527f494e56414c49445f454e440000000000000000000000000000000000000000006044820152606401610405565b60008411610b905760405162461bcd60e51b815260206004820152600960248201527f544f4f5f53484f525400000000000000000000000000000000000000000000006044820152606401610405565b8635600955602080880135600a55604080890135600b558051808301889052808201879052815180820383018152606090910190915280519101206008556040805160e081018252883581526020808a0135908201529081018860026020908102919091013582524382820181905242604080850182905260608086018c905260809586018b905286516010558685015160115586820151601255868101516013558686015160145560a08088015160155560c09788015160165582518f3581528f870135968101969096528e8301358684015290850193909352938301528101889052918201869052517f71809f4d4f7bf3c208a85ccd3c922c984024f8e3cef51e3d03ae677e4217097d9181900360e00190a150600160075460ff166002811115610cbf57610cbf611754565b1415610cf457600454610cd29042611a3a565b600654610cdf9190611a3a565b6006556007805460ff19166002179055610d3e565b600260075460ff166002811115610d0d57610d0d611754565b1415610d3e57600454610d209042611a3a565b600554610d2d9190611a3a565b6005556007805460ff191660011790555b50504260045550505050565b600060075460ff166002811115610d6357610d63611754565b146040518060400160405280600f81526020017f4348414c5f494e49545f5354415445000000000000000000000000000000000081525090610db85760405162461bcd60e51b815260040161040591906119c7565b5073ffffffffffffffffffffffffffffffffffffffff871615801590610df3575073ffffffffffffffffffffffffffffffffffffffff861615155b8015610e14575073ffffffffffffffffffffffffffffffffffffffff841615155b610e605760405162461bcd60e51b815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610405565b600280547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff998a16178255600380548216988a1698909817909755600180548816968916969096179095556000805490961693909616929092178455600c829055600d8590556007805460ff19169093179092554260045560966005819055600655600955600a91909155600b91909155600f55565b60098160038110610f1e57600080fd5b0154905081565b6000600260075460ff166002811115610f4057610f40611754565b1415610f4d575060055490565b600160075460ff166002811115610f6657610f66611754565b1415610873575060065490565b610f7b6107f9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600a81526020017f4249535f53454e4445520000000000000000000000000000000000000000000081525090610ffd5760405162461bcd60e51b815260040161040591906119c7565b50611006610f25565b6004546110139042611a3a565b11156040518060400160405280600c81526020017f4249535f444541444c494e450000000000000000000000000000000000000000815250906110695760405162461bcd60e51b815260040161040591906119c7565b506040805160208082018590528183018490528251808303840181526060909201909252805191012060085481146040518060400160405280600881526020017f4249535f50524556000000000000000000000000000000000000000000000000815250906110eb5760405162461bcd60e51b815260040161040591906119c7565b5060016110f9600284611aa7565b11156111475760405162461bcd60e51b815260206004820152601460248201527f424953454354494f4e5f494e434f4d504c4554450000000000000000000000006044820152606401610405565b6001805460009173ffffffffffffffffffffffffffffffffffffffff9091169063625eb72e908b908b9060099061117e908b611a3a565b6003811061118e5761118e611a78565b01548b8b6040518663ffffffff1660e01b81526004016111b2959493929190611ca2565b60206040518083038186803b1580156111ca57600080fd5b505afa1580156111de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112029190611d62565b90506009856003811061121757611217611a78565b015481141561122f5761122a6000611689565b611239565b6112396000611701565b506001905060075460ff16600281111561125557611255611754565b141561128a576004546112689042611a3a565b6006546112759190611a3a565b6006556007805460ff191660021790556112d4565b600260075460ff1660028111156112a3576112a3611754565b14156112d4576004546112b69042611a3a565b6005546112c39190611a3a565b6005556007805460ff191660011790555b5050426004555050505050565b60025473ffffffffffffffffffffffffffffffffffffffff166113465760405162461bcd60e51b815260206004820152601060248201527f446566656e646572206e6f7420736574000000000000000000000000000000006044820152606401610405565b60025473ffffffffffffffffffffffffffffffffffffffff1633146113ad5760405162461bcd60e51b815260206004820152601360248201527f43616c6c6572206e6f7420646566656e646572000000000000000000000000006044820152606401610405565b600e5473ffffffffffffffffffffffffffffffffffffffff166114125760405162461bcd60e51b815260206004820152601260248201527f446f206e6f7420686176652077696e6e657200000000000000000000000000006044820152606401610405565b600354600e5473ffffffffffffffffffffffffffffffffffffffff9081169116141561151c5780156114d4576000546003546002546040517ffa7803e600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152908216602482015291169063fa7803e6906044015b600060405180830381600087803b1580156114b957600080fd5b505af11580156114cd573d6000803e3d6000fd5b5050505050565b600254600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790555b6000546002546003546040517ffa7803e600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152908216602482015291169063fa7803e69060440161149f565b50565b600354600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283169081179091556002546040517f03f929a9a6b1f0aef5e43cb12b56f862da97ec3de3fda02a52e85f9f3974fb6a93611601939216908590611d7b565b60405180910390a150565b600254600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283169081179091556003546040517f03f929a9a6b1f0aef5e43cb12b56f862da97ec3de3fda02a52e85f9f3974fb6a93611601939216908590611d7b565b600260075460ff1660028111156116a2576116a2611754565b14156116b1576115818161160c565b600354600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905561158181611584565b600260075460ff16600281111561171a5761171a611754565b14156117295761158181611584565b6115818161160c565b6000806040838503121561174557600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016003831061179757611797611754565b91905290565b60008060008060008061010087890312156117b757600080fd5b60608701888111156117c857600080fd5b969896359750505060808701359460a0880135945060c0880135935060e088013592509050565b73ffffffffffffffffffffffffffffffffffffffff8116811461158157600080fd5b803561181c816117ef565b919050565b600080600080600080600060e0888a03121561183c57600080fd5b8735611847816117ef565b96506020880135611857816117ef565b95506040880135611867816117ef565b94506060880135611877816117ef565b9699959850939660808101359560a0820135955060c0909101359350915050565b6000602082840312156118aa57600080fd5b5035919050565b60008083601f8401126118c357600080fd5b50813567ffffffffffffffff8111156118db57600080fd5b6020830191508360208285010111156118f357600080fd5b9250929050565b600080600080600080600060c0888a03121561191557600080fd5b873567ffffffffffffffff8082111561192d57600080fd5b9089019060e0828c03121561194157600080fd5b90975060208901359060ff8216821461195957600080fd5b9096506040890135908082111561196f57600080fd5b5061197c8a828b016118b1565b989b979a50986060810135976080820135975060a09091013595509350505050565b6000602082840312156119b057600080fd5b813580151581146119c057600080fd5b9392505050565b600060208083528351808285015260005b818110156119f4578581018301518582016040015282016119d8565b81811115611a06576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600082821015611a73577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082611add577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee1833603018112611b1657600080fd5b90910192915050565b803567ffffffffffffffff8116811461181c57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b6c57600080fd5b830160208101925035905067ffffffffffffffff811115611b8c57600080fd5b8036038313156118f357600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600061012067ffffffffffffffff611bfb84611b1f565b16845260208301356020850152611c1460408401611b1f565b67ffffffffffffffff166040850152611c2f60608401611811565b73ffffffffffffffffffffffffffffffffffffffff16606085015260808381013590850152611c6160a0840184611b37565b8260a0870152611c748387018284611b9b565b9250505060c083013560c085015260e083013560e08501526101008084013581860152508091505092915050565b6080815260008635611cb3816117ef565b73ffffffffffffffffffffffffffffffffffffffff9081166080840152602088013560a0840152604088013560c0840152606088013590611cf3826117ef565b1660e0830152611d066080880188611ae2565b60e0610100840152611d1c610160840182611be4565b60a089013561012085015260c089013561014085015260ff8816602085015290508560408401528281036060840152611d56818587611b9b565b98975050505050505050565b600060208284031215611d7457600080fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff8481168252831660208201526060810160028310611db057611db0611754565b82604083015294935050505056fea2646970667358221220ca61e68cc8f6420782d8eb6049d6154648a92ef0dbac703ec1e96c1168fdec1a64736f6c63430008090033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101775760003560e01c80638b299903116100d8578063dfbf53ae1161008c578063f03a7fcb11610066578063f03a7fcb1461034c578063f2858aa31461035f578063faeff41b1461037257600080fd5b8063dfbf53ae1461031b578063e87e35891461033b578063ed5b13031461034357600080fd5b80639afd9d78116100bd5780639afd9d78146102c0578063abf48013146102f5578063afeae9651461030857600080fd5b80638b299903146102935780638f2400a8146102ad57600080fd5b8063631acced1161012f578063732e696111610114578063732e6961146102145780637f4c91c51461026b5780638a8cd2181461028b57600080fd5b8063631acced1461020457806370dea79a1461020c57600080fd5b806341e8510c1161016057806341e8510c146101ad578063534db0e2146101b65780635f41e3d6146101fb57600080fd5b806318ef160d1461017c5780632a51f6f714610191575b600080fd5b61018f61018a366004611732565b61037b565b005b61019a60085481565b6040519081526020015b60405180910390f35b61019a60065481565b6003546101d69073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a4565b61019a60055481565b61018f6106ad565b61018f610759565b6010546011546012546013546014546015546016546102369695949392919087565b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e0016101a4565b6002546101d69073ffffffffffffffffffffffffffffffffffffffff1681565b6101d66107f9565b6007546102a09060ff1681565b6040516101a49190611783565b61018f6102bb36600461179d565b6108bb565b600e546102e59074010000000000000000000000000000000000000000900460ff1681565b60405190151581526020016101a4565b61018f610303366004611821565b610d4a565b61019a610316366004611898565b610f0e565b600e546101d69073ffffffffffffffffffffffffffffffffffffffff1681565b61019a610f25565b61019a60045481565b61018f61035a3660046118fa565b610f73565b61018f61036d36600461199e565b6112e1565b61019a600f5481565b6103836107f9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600a81526020017f4249535f53454e444552000000000000000000000000000000000000000000008152509061040e5760405162461bcd60e51b815260040161040591906119c7565b60405180910390fd5b50610417610f25565b6004546104249042611a3a565b11156040518060400160405280600c81526020017f4249535f444541444c494e4500000000000000000000000000000000000000008152509061047a5760405162461bcd60e51b815260040161040591906119c7565b5060085460408051808201909152600f81527f4348414c5f494e49545f53544154450000000000000000000000000000000000602082015290156104d15760405162461bcd60e51b815260040161040591906119c7565b50600081116105225760405162461bcd60e51b815260206004820152601160248201527f494e56414c49445f4e554d5f53544550530000000000000000000000000000006044820152606401610405565b604080516000602080830191909152818301849052825180830384018152606090920190925280519101206008556040805160e08082018352600c548083526020808401879052600d54848601819052436060808701829052426080808901829052600060a0808b0182905260c09a8b018d9052601089905560118e9055601287905560138690556014849055601582905560168d90558b519889529688018d90529987019490945290850191909152908301528101939093529082018390527f71809f4d4f7bf3c208a85ccd3c922c984024f8e3cef51e3d03ae677e4217097d910160405180910390a1600160075460ff16600281111561062657610626611754565b141561065b576004546106399042611a3a565b6006546106469190611a3a565b6006556007805460ff191660021790556106a5565b600260075460ff16600281111561067457610674611754565b14156106a5576004546106879042611a3a565b6005546106949190611a3a565b6005556007805460ff191660011790555b505042600455565b600e5474010000000000000000000000000000000000000000900460ff16156107185760405162461bcd60e51b815260206004820152601460248201527f414c52454144595f5345545f524f4c4c4241434b0000000000000000000000006044820152606401610405565b600e80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b610761610f25565b60045461076e9042611a3a565b116040518060400160405280601081526020017f54494d454f55545f444541444c494e4500000000000000000000000000000000815250906107c35760405162461bcd60e51b815260040161040591906119c7565b50600260075460ff1660028111156107dd576107dd611754565b14156107ef576107ed6001611584565b565b6107ed600161160c565b6000600260075460ff16600281111561081457610814611754565b1415610837575060025473ffffffffffffffffffffffffffffffffffffffff1690565b600160075460ff16600281111561085057610850611754565b1415610873575060035473ffffffffffffffffffffffffffffffffffffffff1690565b60405162461bcd60e51b815260206004820152600760248201527f4e4f5f5455524e000000000000000000000000000000000000000000000000006044820152606401610405565b6108c36107f9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600a81526020017f4249535f53454e44455200000000000000000000000000000000000000000000815250906109455760405162461bcd60e51b815260040161040591906119c7565b5061094e610f25565b60045461095b9042611a3a565b11156040518060400160405280600c81526020017f4249535f444541444c494e450000000000000000000000000000000000000000815250906109b15760405162461bcd60e51b815260040161040591906119c7565b50600854610a015760405162461bcd60e51b815260206004820152600f60248201527f4e4f545f494e495449414c495a454400000000000000000000000000000000006044820152606401610405565b6040805160208082018590528183018490528251808303840181526060909201909252805191012060085481146040518060400160405280600881526020017f4249535f5052455600000000000000000000000000000000000000000000000081525090610a825760405162461bcd60e51b815260040161040591906119c7565b50600a5415610aea5760095487351480610a9e5750600a548735145b610aea5760405162461bcd60e51b815260206004820152600f60248201527f414d424947554f55535f535441525400000000000000000000000000000000006044820152606401610405565b600b5460408801351415610b405760405162461bcd60e51b815260206004820152600b60248201527f494e56414c49445f454e440000000000000000000000000000000000000000006044820152606401610405565b60008411610b905760405162461bcd60e51b815260206004820152600960248201527f544f4f5f53484f525400000000000000000000000000000000000000000000006044820152606401610405565b8635600955602080880135600a55604080890135600b558051808301889052808201879052815180820383018152606090910190915280519101206008556040805160e081018252883581526020808a0135908201529081018860026020908102919091013582524382820181905242604080850182905260608086018c905260809586018b905286516010558685015160115586820151601255868101516013558686015160145560a08088015160155560c09788015160165582518f3581528f870135968101969096528e8301358684015290850193909352938301528101889052918201869052517f71809f4d4f7bf3c208a85ccd3c922c984024f8e3cef51e3d03ae677e4217097d9181900360e00190a150600160075460ff166002811115610cbf57610cbf611754565b1415610cf457600454610cd29042611a3a565b600654610cdf9190611a3a565b6006556007805460ff19166002179055610d3e565b600260075460ff166002811115610d0d57610d0d611754565b1415610d3e57600454610d209042611a3a565b600554610d2d9190611a3a565b6005556007805460ff191660011790555b50504260045550505050565b600060075460ff166002811115610d6357610d63611754565b146040518060400160405280600f81526020017f4348414c5f494e49545f5354415445000000000000000000000000000000000081525090610db85760405162461bcd60e51b815260040161040591906119c7565b5073ffffffffffffffffffffffffffffffffffffffff871615801590610df3575073ffffffffffffffffffffffffffffffffffffffff861615155b8015610e14575073ffffffffffffffffffffffffffffffffffffffff841615155b610e605760405162461bcd60e51b815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610405565b600280547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff998a16178255600380548216988a1698909817909755600180548816968916969096179095556000805490961693909616929092178455600c829055600d8590556007805460ff19169093179092554260045560966005819055600655600955600a91909155600b91909155600f55565b60098160038110610f1e57600080fd5b0154905081565b6000600260075460ff166002811115610f4057610f40611754565b1415610f4d575060055490565b600160075460ff166002811115610f6657610f66611754565b1415610873575060065490565b610f7b6107f9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600a81526020017f4249535f53454e4445520000000000000000000000000000000000000000000081525090610ffd5760405162461bcd60e51b815260040161040591906119c7565b50611006610f25565b6004546110139042611a3a565b11156040518060400160405280600c81526020017f4249535f444541444c494e450000000000000000000000000000000000000000815250906110695760405162461bcd60e51b815260040161040591906119c7565b506040805160208082018590528183018490528251808303840181526060909201909252805191012060085481146040518060400160405280600881526020017f4249535f50524556000000000000000000000000000000000000000000000000815250906110eb5760405162461bcd60e51b815260040161040591906119c7565b5060016110f9600284611aa7565b11156111475760405162461bcd60e51b815260206004820152601460248201527f424953454354494f4e5f494e434f4d504c4554450000000000000000000000006044820152606401610405565b6001805460009173ffffffffffffffffffffffffffffffffffffffff9091169063625eb72e908b908b9060099061117e908b611a3a565b6003811061118e5761118e611a78565b01548b8b6040518663ffffffff1660e01b81526004016111b2959493929190611ca2565b60206040518083038186803b1580156111ca57600080fd5b505afa1580156111de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112029190611d62565b90506009856003811061121757611217611a78565b015481141561122f5761122a6000611689565b611239565b6112396000611701565b506001905060075460ff16600281111561125557611255611754565b141561128a576004546112689042611a3a565b6006546112759190611a3a565b6006556007805460ff191660021790556112d4565b600260075460ff1660028111156112a3576112a3611754565b14156112d4576004546112b69042611a3a565b6005546112c39190611a3a565b6005556007805460ff191660011790555b5050426004555050505050565b60025473ffffffffffffffffffffffffffffffffffffffff166113465760405162461bcd60e51b815260206004820152601060248201527f446566656e646572206e6f7420736574000000000000000000000000000000006044820152606401610405565b60025473ffffffffffffffffffffffffffffffffffffffff1633146113ad5760405162461bcd60e51b815260206004820152601360248201527f43616c6c6572206e6f7420646566656e646572000000000000000000000000006044820152606401610405565b600e5473ffffffffffffffffffffffffffffffffffffffff166114125760405162461bcd60e51b815260206004820152601260248201527f446f206e6f7420686176652077696e6e657200000000000000000000000000006044820152606401610405565b600354600e5473ffffffffffffffffffffffffffffffffffffffff9081169116141561151c5780156114d4576000546003546002546040517ffa7803e600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152908216602482015291169063fa7803e6906044015b600060405180830381600087803b1580156114b957600080fd5b505af11580156114cd573d6000803e3d6000fd5b5050505050565b600254600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790555b6000546002546003546040517ffa7803e600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152908216602482015291169063fa7803e69060440161149f565b50565b600354600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283169081179091556002546040517f03f929a9a6b1f0aef5e43cb12b56f862da97ec3de3fda02a52e85f9f3974fb6a93611601939216908590611d7b565b60405180910390a150565b600254600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283169081179091556003546040517f03f929a9a6b1f0aef5e43cb12b56f862da97ec3de3fda02a52e85f9f3974fb6a93611601939216908590611d7b565b600260075460ff1660028111156116a2576116a2611754565b14156116b1576115818161160c565b600354600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905561158181611584565b600260075460ff16600281111561171a5761171a611754565b14156117295761158181611584565b6115818161160c565b6000806040838503121561174557600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016003831061179757611797611754565b91905290565b60008060008060008061010087890312156117b757600080fd5b60608701888111156117c857600080fd5b969896359750505060808701359460a0880135945060c0880135935060e088013592509050565b73ffffffffffffffffffffffffffffffffffffffff8116811461158157600080fd5b803561181c816117ef565b919050565b600080600080600080600060e0888a03121561183c57600080fd5b8735611847816117ef565b96506020880135611857816117ef565b95506040880135611867816117ef565b94506060880135611877816117ef565b9699959850939660808101359560a0820135955060c0909101359350915050565b6000602082840312156118aa57600080fd5b5035919050565b60008083601f8401126118c357600080fd5b50813567ffffffffffffffff8111156118db57600080fd5b6020830191508360208285010111156118f357600080fd5b9250929050565b600080600080600080600060c0888a03121561191557600080fd5b873567ffffffffffffffff8082111561192d57600080fd5b9089019060e0828c03121561194157600080fd5b90975060208901359060ff8216821461195957600080fd5b9096506040890135908082111561196f57600080fd5b5061197c8a828b016118b1565b989b979a50986060810135976080820135975060a09091013595509350505050565b6000602082840312156119b057600080fd5b813580151581146119c057600080fd5b9392505050565b600060208083528351808285015260005b818110156119f4578581018301518582016040015282016119d8565b81811115611a06576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600082821015611a73577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082611add577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee1833603018112611b1657600080fd5b90910192915050565b803567ffffffffffffffff8116811461181c57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b6c57600080fd5b830160208101925035905067ffffffffffffffff811115611b8c57600080fd5b8036038313156118f357600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600061012067ffffffffffffffff611bfb84611b1f565b16845260208301356020850152611c1460408401611b1f565b67ffffffffffffffff166040850152611c2f60608401611811565b73ffffffffffffffffffffffffffffffffffffffff16606085015260808381013590850152611c6160a0840184611b37565b8260a0870152611c748387018284611b9b565b9250505060c083013560c085015260e083013560e08501526101008084013581860152508091505092915050565b6080815260008635611cb3816117ef565b73ffffffffffffffffffffffffffffffffffffffff9081166080840152602088013560a0840152604088013560c0840152606088013590611cf3826117ef565b1660e0830152611d066080880188611ae2565b60e0610100840152611d1c610160840182611be4565b60a089013561012085015260c089013561014085015260ff8816602085015290508560408401528281036060840152611d56818587611b9b565b98975050505050505050565b600060208284031215611d7457600080fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff8481168252831660208201526060810160028310611db057611db0611754565b82604083015294935050505056fea2646970667358221220ca61e68cc8f6420782d8eb6049d6154648a92ef0dbac703ec1e96c1168fdec1a64736f6c63430008090033", "linkReferences": {}, "deployedLinkReferences": {} }