@cartesi/arbitration
Version:
Arbitration DLib
698 lines • 179 kB
JSON
{
"contractName": "MMInstantiator",
"sourceName": "contracts/MMInstantiator.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "FinishedProofs",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "FinishedReplay",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "_initialHash",
"type": "bytes32"
}
],
"name": "MemoryCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bool",
"name": "_wasRead",
"type": "bool"
},
{
"indexed": false,
"internalType": "uint64",
"name": "_position",
"type": "uint64"
},
{
"indexed": false,
"internalType": "bytes8",
"name": "_value",
"type": "bytes8"
}
],
"name": "ValueProved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint64",
"name": "_position",
"type": "uint64"
},
{
"indexed": false,
"internalType": "bytes8",
"name": "_value",
"type": "bytes8"
}
],
"name": "ValueRead",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint64",
"name": "_position",
"type": "uint64"
},
{
"indexed": false,
"internalType": "bytes8",
"name": "_value",
"type": "bytes8"
}
],
"name": "ValueWritten",
"type": "event"
},
{
"inputs": [],
"name": "currentIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "finishProofPhase",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "finishReplayPhase",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getCurrentState",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_roundDuration",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_timeToStartMachine",
"type": "uint256"
}
],
"name": "getCurrentStateDeadline",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_roundDuration",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_timeToStartMachine",
"type": "uint256"
}
],
"name": "getMaxInstanceDuration",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getNonce",
"outputs": [
{
"internalType": "uint256",
"name": "currentNonce",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getRWArrays",
"outputs": [
{
"internalType": "uint64[]",
"name": "",
"type": "uint64[]"
},
{
"internalType": "bytes8[]",
"name": "",
"type": "bytes8[]"
},
{
"internalType": "bool[]",
"name": "",
"type": "bool[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "getState",
"outputs": [
{
"internalType": "address",
"name": "_provider",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_initialHash",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_newHash",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "_numberSubmitted",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "_currentState",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "getSubInstances",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "initialHash",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "address",
"name": "_provider",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_initialHash",
"type": "bytes32"
}
],
"name": "instantiate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "isActive",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "address",
"name": "_user",
"type": "address"
}
],
"name": "isConcerned",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "newHash",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "uint64",
"name": "_position",
"type": "uint64"
},
{
"internalType": "bytes8",
"name": "_value",
"type": "bytes8"
},
{
"internalType": "bytes32[]",
"name": "proof",
"type": "bytes32[]"
}
],
"name": "proveRead",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "uint64",
"name": "_position",
"type": "uint64"
},
{
"internalType": "bytes8",
"name": "_oldValue",
"type": "bytes8"
},
{
"internalType": "bytes8",
"name": "_newValue",
"type": "bytes8"
},
{
"internalType": "bytes32[]",
"name": "proof",
"type": "bytes32[]"
}
],
"name": "proveWrite",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "provider",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "stateIsFinishedReplay",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "stateIsWaitingProofs",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "stateIsWaitingReplay",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60806040526000805534801561001457600080fd5b50611d3c806100246000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806382afd23b116100b8578063a9c7a1e61161007c578063a9c7a1e614610390578063ac448b1614610462578063ade5f4171461052b578063c526656c14610548578063db1de4191461060d578063f154f91d1461063657610137565b806382afd23b146102e057806384dfd44d146102fd5780638a05e47814610320578063906458401461035657806396f429ba1461037357610137565b806343d4b78b116100ff57806343d4b78b146101ef57806352cc70c61461020c5780635748c1301461024557806373df1612146102625780637d036b0d146102c357610137565b806301ff62ab1461013c5780631c5d3c601461017c57806326987b60146101995780633d46b819146101b35780633ed5d456146101d0575b600080fd5b6101686004803603604081101561015257600080fd5b50803590602001356001600160a01b0316610731565b604080519115158252519081900360200190f35b6101686004803603602081101561019257600080fd5b5035610755565b6101a16107c9565b60408051918252519081900360200190f35b6101a1600480360360208110156101c957600080fd5b50356107cf565b6101ed600480360360208110156101e657600080fd5b5035610875565b005b6101686004803603602081101561020557600080fd5b50356109f6565b6102296004803603602081101561022257600080fd5b5035610a44565b604080516001600160a01b039092168252519081900360200190f35b6101a16004803603602081101561025b57600080fd5b5035610aab565b61028e6004803603604081101561027857600080fd5b50803590602001356001600160a01b0316610bf3565b604080516001600160a01b03909616865260208601949094528484019290925260608401526080830152519081900360a00190f35b6101ed600480360360208110156102d957600080fd5b5035610d76565b610168600480360360208110156102f657600080fd5b5035610eef565b6101a16004803603604081101561031357600080fd5b5080359060200135610f04565b6101a16004803603606081101561033657600080fd5b506001600160a01b03813581169160208101359091169060400135610f40565b6101a16004803603602081101561036c57600080fd5b5035610ffd565b6101686004803603602081101561038957600080fd5b503561105c565b6101ed600480360360a08110156103a657600080fd5b8135916001600160401b03602082013516916001600160c01b0319604083013581169260608101359091169181019060a0810160808201356401000000008111156103f057600080fd5b82018360208201111561040257600080fd5b8035906020019184602083028401116401000000008311171561042457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506110aa945050505050565b6101ed6004803603608081101561047857600080fd5b8135916001600160401b03602082013516916001600160c01b031960408301351691908101906080810160608201356401000000008111156104b957600080fd5b8201836020820111156104cb57600080fd5b803590602001918460208302840111640100000000831117156104ed57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506114cd945050505050565b6101a16004803603602081101561054157600080fd5b5035611825565b6105746004803603604081101561055e57600080fd5b50803590602001356001600160a01b0316611883565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156105b85781810151838201526020016105a0565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156105f75781810151838201526020016105df565b5050505090500194505050505060405180910390f35b6101a16004803603606081101561062357600080fd5b508035906020810135906040013561189e565b6106536004803603602081101561064c57600080fd5b503561190e565b60405180806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561069b578181015183820152602001610683565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156106da5781810151838201526020016106c2565b50505050905001848103825285818151815260200191508051906020019060200280838360005b83811015610719578181015183820152602001610701565b50505050905001965050505050505060405180910390f35b600091825260036020526040909120600101546001600160a01b0391821691161490565b600081806000541161079c576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b60005b60008481526003602052604090206005015460ff1660028111156107bf57fe5b1491505b50919050565b60005481565b6000818060005411610816576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b61081f81610eef565b610861576040805162461bcd60e51b815260206004820152600e60248201526d496e64657820696e61637469766560901b604482015290519081900360640190fd5b505060009081526002602052604090205490565b8080600054116108ba576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b6000828152600360205260409020546001600160a01b0316338114610921576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b60008381526002602052604090208054600101905582610940816109f6565b61097b5760405162461bcd60e51b8152600401808060200182810382526023815260200180611cc46023913960400191505060405180910390fd5b600084815260036020526040812061099891600490910190611b7e565b6000848152600360205260409020600501805460ff191660021790556109bd84611b04565b6040805185815290517feac25e5c6b8f91fcaaec2cbaed6317b8403630d1f793fc32c10fa4731a464e879181900360200190a150505050565b6000818060005411610a3d576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b600161079f565b6000818060005411610a8b576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b50506000908152600360205260409020600101546001600160a01b031690565b6000818060005411610af2576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b60008381526003602052604081206005015460ff166002811115610b1257fe5b1415610b30576c57616974696e6750726f6f667360981b91506107c3565b600160008481526003602052604090206005015460ff166002811115610b5257fe5b1415610b70576c57616974696e675265706c617960981b91506107c3565b600260008481526003602052604090206005015460ff166002811115610b9257fe5b1415610bb1576d46696e69736865645265706c617960901b91506107c3565b6040805162461bcd60e51b8152602060048201526012602482015271556e7265636f676e697a656420737461746560701b604482015290519081900360640190fd5b6000806000806000868060005411610c40576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b610c48611b9f565b6000898152600360208181526040808420815160c08101835281546001600160a01b039081168252600183015416818501526002820154818401529381015460608501526004810180548351818602810186019094528084529495919460808701949192909184015b82821015610d12576000848152602090819020604080516060810182529185015460ff81161515835261010081046001600160401b031683850152600160481b900460c01b6001600160c01b03191690820152825260019092019101610cb1565b50505090825250600582015460209091019060ff166002811115610d3257fe5b6002811115610d3d57fe5b815250509050806020015181604001518260600151836080015151610d618d610aab565b939d929c50909a509850909650945050505050565b808060005411610dbb576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b6000828152600360205260409020600101546001600160a01b0316338114610e25576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b600083815260026020526040812080546001019055839060008581526003602052604090206005015460ff166002811115610e5c57fe5b14610e985760405162461bcd60e51b815260040180806020018281038252603a815260200180611c57603a913960400191505060405180910390fd5b600084815260036020908152604091829020600501805460ff19166001179055815186815291517f0b1229d47b7ccd1dde07b4148a6c9336fd9d5fb57cca980e709576e96ae600ed9281900390910190a150505050565b60009081526001602052604090205460ff1690565b600080610f1360008585611b27565b90506000610f2360018686611b27565b90506000610f3360008787611b27565b9190920101949350505050565b60008054815260036020818152604080842080546001600160a01b038981166001600160a01b0319928316178355600183018054918a16919092161790556002810186905592830185905560058301805460ff191690558354815190815291820185905280517f9d7a7145d65060279d0bc06f7f03a791000bbaa9b8a8e75c3c10e2d24348791b9281900390910190a150506000805481526001602081905260408220805460ff19168217905581549081019091555b9392505050565b6000818060005411611044576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b50506000908152600360208190526040909120015490565b60008180600054116110a3576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b600261079f565b8480600054116110ef576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b6000868152600360205260409020600101546001600160a01b0316338114611159576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b600087815260026020526040812080546001019055879060008981526003602052604090206005015460ff16600281111561119057fe5b146111cc5760405162461bcd60e51b8152600401808060200182810382526034815260200180611bff6034913960400191505060405180910390fd5b600360008981526020019081526020016000206003015473__$c7dbd794b8c7b5c2028db781007df1176e$__638492d93b8989886040518463ffffffff1660e01b815260040180846001600160401b03168152602001836001600160c01b031916815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561126e578181015183820152602001611256565b5050505090500194505050505060206040518083038186803b15801561129357600080fd5b505af41580156112a7573d6000803e3d6000fd5b505050506040513d60208110156112bd57600080fd5b5051146112fb5760405162461bcd60e51b8152600401808060200182810382526024815260200180611c336024913960400191505060405180910390fd5b604051638492d93b60e01b81526001600160401b038816600482019081526001600160c01b03198716602483015260606044830190815286516064840152865173__$c7dbd794b8c7b5c2028db781007df1176e$__93638492d93b938c938b938b93608401906020808601910280838360005b8381101561138657818101518382015260200161136e565b5050505090500194505050505060206040518083038186803b1580156113ab57600080fd5b505af41580156113bf573d6000803e3d6000fd5b505050506040513d60208110156113d557600080fd5b50516000898152600360208181526040808420928301949094558351606080820186528482526001600160401b03808e168385018181526001600160c01b03198e16858a0181815260049098018054600181018255908a52878a209651960180549251985160c01c600160481b0267ffffffffffffffff60481b19999095166101000268ffffffffffffffff001997151560ff19909416939093179690961691909117969096169190911790925585518e815292830194909452818501529182015290517f912a59309f29407977c171115122b2599e36be67312d6366767f7dbeb3d831ce9181900360800190a15050505050505050565b838060005411611512576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b6000858152600360205260409020600101546001600160a01b031633811461157c576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b600086815260026020526040812080546001019055869060008881526003602052604090206005015460ff1660028111156115b357fe5b146115ef5760405162461bcd60e51b8152600401808060200182810382526033815260200180611c916033913960400191505060405180910390fd5b600360008881526020019081526020016000206003015473__$c7dbd794b8c7b5c2028db781007df1176e$__638492d93b8888886040518463ffffffff1660e01b815260040180846001600160401b03168152602001836001600160c01b031916815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015611691578181015183820152602001611679565b5050505090500194505050505060206040518083038186803b1580156116b657600080fd5b505af41580156116ca573d6000803e3d6000fd5b505050506040513d60208110156116e057600080fd5b505114611734576040805162461bcd60e51b815260206004820152601b60248201527f4d65726b6c652070726f6f6620646f6573206e6f74206d617463680000000000604482015290519081900360640190fd5b600087815260036020908152604080832081516060808201845260018083526001600160401b03808e168488018181526001600160c01b03198f16868901818152600490980180548087018255908c529a8a9020965196909a0180549151975160c01c600160481b0267ffffffffffffffff60481b19989094166101000268ffffffffffffffff001997151560ff19909316929092179690961617959095161790925583518d8152948501919091528383019190915282019290925290517f912a59309f29407977c171115122b2599e36be67312d6366767f7dbeb3d831ce9181900360800190a150505050505050565b600081806000541161186c576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b505060009081526003602052604090206002015490565b50506040805160008082526020820190815281830190925291565b60008380600054116118e5576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b6000858152600360205260409020600501546119059060ff168585611b27565b95945050505050565b60008181526003602052604090206004018054606091829182919082816001600160401b038111801561194057600080fd5b5060405190808252806020026020018201604052801561196a578160200160208202803683370190505b5090506060826001600160401b038111801561198557600080fd5b506040519080825280602002602001820160405280156119af578160200160208202803683370190505b5090506060836001600160401b03811180156119ca57600080fd5b506040519080825280602002602001820160405280156119f4578160200160208202803683370190505b50905060005b84811015611af457858181548110611a0e57fe5b9060005260206000200160000160019054906101000a90046001600160401b0316848281518110611a3b57fe5b60200260200101906001600160401b031690816001600160401b031681525050858181548110611a6757fe5b9060005260206000200160000160099054906101000a900460c01b838281518110611a8e57fe5b60200260200101906001600160c01b03191690816001600160c01b03191681525050858181548110611abc57fe5b600091825260209091200154825160ff90911690839083908110611adc57fe5b911515602092830291909101909101526001016119fa565b5091989097509095509350505050565b6000908152600160209081526040808320805460ff191690556002909152812055565b600080846002811115611b3657fe5b1415611b485750600282028101610ff6565b6001846002811115611b5657fe5b1415611b63575081610ff6565b6002846002811115611b7157fe5b1415610bb1575081610ff6565b5080546000825590600052602060002090810190611b9c9190611bd1565b50565b6040805160c081018252600080825260208201819052918101829052606080820183905260808201529060a082015290565b5b80821115611bfa57805470ffffffffffffffffffffffffffffffffff19168155600101611bd2565b509056fe43757272656e745374617465206973206e6f742057616974696e6750726f6f66732c2063616e6e6f742070726f766557726974654d65726b6c652070726f6f66206f6620777269746520646f6573206e6f74206d6174636843757272656e745374617465206973206e6f742057616974696e6750726f6f66732c2063616e6e6f742066696e69736850726f6f66506861736543757272656e745374617465206973206e6f742057616974696e6750726f6f66732c2063616e6e6f742070726f7665526561645374617465206f66204d4d2073686f756c642062652057616974696e675265706c6179496e646578206e6f7420696e7374616e74696174656400000000000000000000a264697066735822122022bd84b57df9b7cba5824423b88a08c264a777cf3f68b1afeaf8e7a092cb650864736f6c63430007040033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101375760003560e01c806382afd23b116100b8578063a9c7a1e61161007c578063a9c7a1e614610390578063ac448b1614610462578063ade5f4171461052b578063c526656c14610548578063db1de4191461060d578063f154f91d1461063657610137565b806382afd23b146102e057806384dfd44d146102fd5780638a05e47814610320578063906458401461035657806396f429ba1461037357610137565b806343d4b78b116100ff57806343d4b78b146101ef57806352cc70c61461020c5780635748c1301461024557806373df1612146102625780637d036b0d146102c357610137565b806301ff62ab1461013c5780631c5d3c601461017c57806326987b60146101995780633d46b819146101b35780633ed5d456146101d0575b600080fd5b6101686004803603604081101561015257600080fd5b50803590602001356001600160a01b0316610731565b604080519115158252519081900360200190f35b6101686004803603602081101561019257600080fd5b5035610755565b6101a16107c9565b60408051918252519081900360200190f35b6101a1600480360360208110156101c957600080fd5b50356107cf565b6101ed600480360360208110156101e657600080fd5b5035610875565b005b6101686004803603602081101561020557600080fd5b50356109f6565b6102296004803603602081101561022257600080fd5b5035610a44565b604080516001600160a01b039092168252519081900360200190f35b6101a16004803603602081101561025b57600080fd5b5035610aab565b61028e6004803603604081101561027857600080fd5b50803590602001356001600160a01b0316610bf3565b604080516001600160a01b03909616865260208601949094528484019290925260608401526080830152519081900360a00190f35b6101ed600480360360208110156102d957600080fd5b5035610d76565b610168600480360360208110156102f657600080fd5b5035610eef565b6101a16004803603604081101561031357600080fd5b5080359060200135610f04565b6101a16004803603606081101561033657600080fd5b506001600160a01b03813581169160208101359091169060400135610f40565b6101a16004803603602081101561036c57600080fd5b5035610ffd565b6101686004803603602081101561038957600080fd5b503561105c565b6101ed600480360360a08110156103a657600080fd5b8135916001600160401b03602082013516916001600160c01b0319604083013581169260608101359091169181019060a0810160808201356401000000008111156103f057600080fd5b82018360208201111561040257600080fd5b8035906020019184602083028401116401000000008311171561042457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506110aa945050505050565b6101ed6004803603608081101561047857600080fd5b8135916001600160401b03602082013516916001600160c01b031960408301351691908101906080810160608201356401000000008111156104b957600080fd5b8201836020820111156104cb57600080fd5b803590602001918460208302840111640100000000831117156104ed57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506114cd945050505050565b6101a16004803603602081101561054157600080fd5b5035611825565b6105746004803603604081101561055e57600080fd5b50803590602001356001600160a01b0316611883565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156105b85781810151838201526020016105a0565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156105f75781810151838201526020016105df565b5050505090500194505050505060405180910390f35b6101a16004803603606081101561062357600080fd5b508035906020810135906040013561189e565b6106536004803603602081101561064c57600080fd5b503561190e565b60405180806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561069b578181015183820152602001610683565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156106da5781810151838201526020016106c2565b50505050905001848103825285818151815260200191508051906020019060200280838360005b83811015610719578181015183820152602001610701565b50505050905001965050505050505060405180910390f35b600091825260036020526040909120600101546001600160a01b0391821691161490565b600081806000541161079c576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b60005b60008481526003602052604090206005015460ff1660028111156107bf57fe5b1491505b50919050565b60005481565b6000818060005411610816576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b61081f81610eef565b610861576040805162461bcd60e51b815260206004820152600e60248201526d496e64657820696e61637469766560901b604482015290519081900360640190fd5b505060009081526002602052604090205490565b8080600054116108ba576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b6000828152600360205260409020546001600160a01b0316338114610921576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b60008381526002602052604090208054600101905582610940816109f6565b61097b5760405162461bcd60e51b8152600401808060200182810382526023815260200180611cc46023913960400191505060405180910390fd5b600084815260036020526040812061099891600490910190611b7e565b6000848152600360205260409020600501805460ff191660021790556109bd84611b04565b6040805185815290517feac25e5c6b8f91fcaaec2cbaed6317b8403630d1f793fc32c10fa4731a464e879181900360200190a150505050565b6000818060005411610a3d576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b600161079f565b6000818060005411610a8b576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b50506000908152600360205260409020600101546001600160a01b031690565b6000818060005411610af2576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b60008381526003602052604081206005015460ff166002811115610b1257fe5b1415610b30576c57616974696e6750726f6f667360981b91506107c3565b600160008481526003602052604090206005015460ff166002811115610b5257fe5b1415610b70576c57616974696e675265706c617960981b91506107c3565b600260008481526003602052604090206005015460ff166002811115610b9257fe5b1415610bb1576d46696e69736865645265706c617960901b91506107c3565b6040805162461bcd60e51b8152602060048201526012602482015271556e7265636f676e697a656420737461746560701b604482015290519081900360640190fd5b6000806000806000868060005411610c40576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b610c48611b9f565b6000898152600360208181526040808420815160c08101835281546001600160a01b039081168252600183015416818501526002820154818401529381015460608501526004810180548351818602810186019094528084529495919460808701949192909184015b82821015610d12576000848152602090819020604080516060810182529185015460ff81161515835261010081046001600160401b031683850152600160481b900460c01b6001600160c01b03191690820152825260019092019101610cb1565b50505090825250600582015460209091019060ff166002811115610d3257fe5b6002811115610d3d57fe5b815250509050806020015181604001518260600151836080015151610d618d610aab565b939d929c50909a509850909650945050505050565b808060005411610dbb576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b6000828152600360205260409020600101546001600160a01b0316338114610e25576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b600083815260026020526040812080546001019055839060008581526003602052604090206005015460ff166002811115610e5c57fe5b14610e985760405162461bcd60e51b815260040180806020018281038252603a815260200180611c57603a913960400191505060405180910390fd5b600084815260036020908152604091829020600501805460ff19166001179055815186815291517f0b1229d47b7ccd1dde07b4148a6c9336fd9d5fb57cca980e709576e96ae600ed9281900390910190a150505050565b60009081526001602052604090205460ff1690565b600080610f1360008585611b27565b90506000610f2360018686611b27565b90506000610f3360008787611b27565b9190920101949350505050565b60008054815260036020818152604080842080546001600160a01b038981166001600160a01b0319928316178355600183018054918a16919092161790556002810186905592830185905560058301805460ff191690558354815190815291820185905280517f9d7a7145d65060279d0bc06f7f03a791000bbaa9b8a8e75c3c10e2d24348791b9281900390910190a150506000805481526001602081905260408220805460ff19168217905581549081019091555b9392505050565b6000818060005411611044576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b50506000908152600360208190526040909120015490565b60008180600054116110a3576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b600261079f565b8480600054116110ef576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b6000868152600360205260409020600101546001600160a01b0316338114611159576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b600087815260026020526040812080546001019055879060008981526003602052604090206005015460ff16600281111561119057fe5b146111cc5760405162461bcd60e51b8152600401808060200182810382526034815260200180611bff6034913960400191505060405180910390fd5b600360008981526020019081526020016000206003015473__$c7dbd794b8c7b5c2028db781007df1176e$__638492d93b8989886040518463ffffffff1660e01b815260040180846001600160401b03168152602001836001600160c01b031916815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561126e578181015183820152602001611256565b5050505090500194505050505060206040518083038186803b15801561129357600080fd5b505af41580156112a7573d6000803e3d6000fd5b505050506040513d60208110156112bd57600080fd5b5051146112fb5760405162461bcd60e51b8152600401808060200182810382526024815260200180611c336024913960400191505060405180910390fd5b604051638492d93b60e01b81526001600160401b038816600482019081526001600160c01b03198716602483015260606044830190815286516064840152865173__$c7dbd794b8c7b5c2028db781007df1176e$__93638492d93b938c938b938b93608401906020808601910280838360005b8381101561138657818101518382015260200161136e565b5050505090500194505050505060206040518083038186803b1580156113ab57600080fd5b505af41580156113bf573d6000803e3d6000fd5b505050506040513d60208110156113d557600080fd5b50516000898152600360208181526040808420928301949094558351606080820186528482526001600160401b03808e168385018181526001600160c01b03198e16858a0181815260049098018054600181018255908a52878a209651960180549251985160c01c600160481b0267ffffffffffffffff60481b19999095166101000268ffffffffffffffff001997151560ff19909416939093179690961691909117969096169190911790925585518e815292830194909452818501529182015290517f912a59309f29407977c171115122b2599e36be67312d6366767f7dbeb3d831ce9181900360800190a15050505050505050565b838060005411611512576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b6000858152600360205260409020600101546001600160a01b031633811461157c576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b600086815260026020526040812080546001019055869060008881526003602052604090206005015460ff1660028111156115b357fe5b146115ef5760405162461bcd60e51b8152600401808060200182810382526033815260200180611c916033913960400191505060405180910390fd5b600360008881526020019081526020016000206003015473__$c7dbd794b8c7b5c2028db781007df1176e$__638492d93b8888886040518463ffffffff1660e01b815260040180846001600160401b03168152602001836001600160c01b031916815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015611691578181015183820152602001611679565b5050505090500194505050505060206040518083038186803b1580156116b657600080fd5b505af41580156116ca573d6000803e3d6000fd5b505050506040513d60208110156116e057600080fd5b505114611734576040805162461bcd60e51b815260206004820152601b60248201527f4d65726b6c652070726f6f6620646f6573206e6f74206d617463680000000000604482015290519081900360640190fd5b600087815260036020908152604080832081516060808201845260018083526001600160401b03808e168488018181526001600160c01b03198f16868901818152600490980180548087018255908c529a8a9020965196909a0180549151975160c01c600160481b0267ffffffffffffffff60481b19989094166101000268ffffffffffffffff001997151560ff19909316929092179690961617959095161790925583518d8152948501919091528383019190915282019290925290517f912a59309f29407977c171115122b2599e36be67312d6366767f7dbeb3d831ce9181900360800190a150505050505050565b600081806000541161186c576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b505060009081526003602052604090206002015490565b50506040805160008082526020820190815281830190925291565b60008380600054116118e5576040805162461bcd60e51b81526020600482015260166024820152600080516020611ce7833981519152604482015290519081900360640190fd5b6000858152600360205260409020600501546119059060ff168585611b27565b95945050505050565b60008181526003602052604090206004018054606091829182919082816001600160401b038111801561194057600080fd5b5060405190808252806020026020018201604052801561196a578160200160208202803683370190505b5090506060826001600160401b038111801561198557600080fd5b506040519080825280602002602001820160405280156119af578160200160208202803683370190505b5090506060836001600160401b03811180156119ca57600080fd5b506040519080825280602002602001820160405280156119f4578160200160208202803683370190505b50905060005b84811015611af457858181548110611a0e57fe5b9060005260206000200160000160019054906101000a90046001600160401b0316848281518110611a3b57fe5b60200260200101906001600160401b031690816001600160401b031681525050858181548110611a6757fe5b9060005260206000200160000160099054906101000a900460c01b838281518110611a8e57fe5b60200260200101906001600160c01b03191690816001600160c01b03191681525050858181548110611abc57fe5b600091825260209091200154825160ff90911690839083908110611adc57fe5b911515602092830291909101909101526001016119fa565b5091989097509095509350505050565b6000908152600160209081526040808320805460ff191690556002909152812055565b600080846002811115611b3657fe5b1415611b485750600282028101610ff6565b6001846002811115611b5657fe5b1415611b63575081610ff6565b6002846002811115611b7157fe5b1415610bb1575081610ff6565b5080546000825590600052602060002090810190611b9c9190611bd1565b50565b6040805160c081018252600080825260208201819052918101829052606080820183905260808201529060a082015290565b5b80821115611bfa57805470ffffffffffffffffffffffffffffffffff19168155600101611bd2565b509056fe43757272656e745374617465206973206e6f742057616974696e6750726f6f66732c2063616e6e6f742070726f766557726974654d65726b6c652070726f6f66206f6620777269746520646f6573206e6f74206d6174636843757272656e745374617465206973206e6f742057616974696e6750726f6f66732c2063616e6e6f742066696e69736850726f6f66506861736543757272656e745374617465206973206e6f742057616974696e6750726f6f66732c2063616e6e6f742070726f7665526561645374617465206f66204d4d2073686f756c642062652057616974696e675265706c6179496e646578206e6f7420696e7374616e74696174656400000000000000000000a264697066735822122022bd84b57df9b7cba5824423b88a08c264a777cf3f68b1afeaf8e7a092cb650864736f6c63430007040033",
"linkReferences": {
"@cartesi/util/contracts/Merkle.sol": {
"Merkle": [
{
"length": 20,
"start": 4617
},
{
"length": 20,
"start": 4961
},
{
"length": 20,
"start": 5676
}
]
}
},
"deployedLinkReferences": {
"@cartesi/util/contracts/Merkle.sol": {
"Merkle": [
{
"length": 20,
"start": 4581
},
{
"length": 20,
"start": 4925
},
{
"length": 20,
"start": 5640
}
]
}
},
"devdoc": {
"kind": "dev",
"methods": {
"getMaxInstanceDuration(uint256,uint256)": {
"params": {
"_timeToStartMachine": "time to build the machine for the first time"
}
},
"instantiate(address,address,bytes32)": {
"params": {
"_initialHash": "hash before divergence, in which both client and provider agree.",
"_provider": "address that will provide memory values/proofs."
},
"returns": {
"_0": "MemoryManager index."
}
},
"proveWrite(uint256,uint64,bytes8,bytes8,bytes32[])": {
"params": {
"_newValue": "to be written",
"_oldValue": "before write",
"_position": "to be written",
"proof": "The proof that the old value was correct"
}
}
},
"version": 1
},
"evm": {
"bytecode": {
"generatedSources": [],
"linkReferences": {
"@cartesi/util/contracts/Merkle.sol": {
"Merkle": [
{
"length": 20,
"start": 4617
},
{
"length": 20,
"start": 4961
},
{
"length": 20,
"start": 5676
}
]
}
},
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D3C DUP1 PUSH2 0x24 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x82AFD23B GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xA9C7A1E6 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xA9C7A1E6 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0xAC448B16 EQ PUSH2 0x462 JUMPI DUP1 PUSH4 0xADE5F417 EQ PUSH2 0x52B JUMPI DUP1 PUSH4 0xC526656C EQ PUSH2 0x548 JUMPI DUP1 PUSH4 0xDB1DE419 EQ PUSH2 0x60D JUMPI DUP1 PUSH4 0xF154F91D EQ PUSH2 0x636 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x82AFD23B EQ PUSH2 0x2E0 JUMPI DUP1 PUSH4 0x84DFD44D EQ PUSH2 0x2FD JUMPI DUP1 PUSH4 0x8A05E478 EQ PUSH2 0x320 JUMPI DUP1 PUSH4 0x90645840 EQ PUSH2 0x356 JUMPI DUP1 PUSH4 0x96F429BA EQ PUSH2 0x373 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x43D4B78B GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x43D4B78B EQ PUSH2 0x1EF JUMPI DUP1 PUSH4 0x52CC70C6 EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0x5748C130 EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x73DF1612 EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0x7D036B0D EQ PUSH2 0x2C3 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x1FF62AB EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x1C5D3C60 EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0x26987B60 EQ PUSH2 0x199 JUMPI DUP1 PUSH4 0x3D46B819 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0x3ED5D456 EQ PUSH2 0x1D0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x731 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x755 JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x7C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7CF JUMP JUMPDEST PUSH2 0x1ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x875 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9F6 JUMP JUMPDEST PUSH2 0x229 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA44 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xAAB JUMP JUMPDEST PUSH2 0x28E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xBF3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xD76 JUMP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xEEF JUMP JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF04 JUMP JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF40 JUMP JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xFFD JUMP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x389 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x105C JUMP JUMPDEST PUSH2 0x1ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x3A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT PUSH1 0x40 DUP4 ADD CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80