@cartesi/arbitration
Version:
Arbitration DLib
705 lines • 240 kB
JSON
{
"contractName": "PartitionInstantiator",
"sourceName": "contracts/PartitionInstantiator.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint8",
"name": "_state",
"type": "uint8"
}
],
"name": "ChallengeEnded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_timeOfDivergence",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "_hashAtDivergenceTime",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "_hashRigthAfterDivergenceTime",
"type": "bytes32"
}
],
"name": "DivergenceFound",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "HashesPosted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "PartitionCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "QueryPosted",
"type": "event"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "claimVictoryByTime",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "currentIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "divergenceTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"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"
}
],
"name": "getCurrentStateDeadline",
"outputs": [
{
"internalType": "uint256",
"name": "time",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_roundDuration",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_timeToStartMachine",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_partitionSize",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_maxCycle",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_picoSecondsToRunInsn",
"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": "getPartitionGameIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getQuerySize",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "getState",
"outputs": [
{
"internalType": "address",
"name": "_challenger",
"type": "address"
},
{
"internalType": "address",
"name": "_claimer",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "_queryArray",
"type": "uint256[]"
},
{
"internalType": "bool[]",
"name": "_submittedArray",
"type": "bool[]"
},
{
"internalType": "bytes32[]",
"name": "_hashArray",
"type": "bytes32[]"
},
{
"internalType": "bytes32",
"name": "_currentState",
"type": "bytes32"
},
{
"internalType": "uint256[]",
"name": "_uintValues",
"type": "uint256[]"
}
],
"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": "address",
"name": "_challenger",
"type": "address"
},
{
"internalType": "address",
"name": "_claimer",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_initialHash",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_claimerFinalHash",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "_finalTime",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_querySize",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_roundDuration",
"type": "uint256"
}
],
"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": "x",
"type": "uint256"
}
],
"name": "log2OverTwo",
"outputs": [
{
"internalType": "uint256",
"name": "y",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "queryPiece",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "leftPoint",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rightPoint",
"type": "uint256"
}
],
"name": "makeQuery",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_divergenceTime",
"type": "uint256"
}
],
"name": "presentDivergence",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "i",
"type": "uint256"
}
],
"name": "queryArray",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "uint256[]",
"name": "postedTimes",
"type": "uint256[]"
},
{
"internalType": "bytes32[]",
"name": "postedHashes",
"type": "bytes32[]"
}
],
"name": "replyQuery",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "stateIsChallengerWon",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "stateIsClaimerWon",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "stateIsDivergenceFound",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "stateIsWaitingHashes",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "stateIsWaitingQuery",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "key",
"type": "uint256"
}
],
"name": "timeHash",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "key",
"type": "uint256"
}
],
"name": "timeSubmitted",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60806040526000805534801561001457600080fd5b506128a1806100246000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c8063429fc018116100de57806382afd23b11610097578063a91565df11610071578063a91565df1461070f578063c526656c1461072c578063d0a068cf146107f1578063daaadf4e1461080e5761018d565b806382afd23b146106b2578063a2c58835146106cf578063a2dc7973146106f25761018d565b8063429fc018146104935780635748c130146104b057806360696f81146104cd5780636547429e146104f057806373df16121461050d578063823bb67c146106835761018d565b806326987b601161014b578063370f31aa11610125578063370f31aa146102f65780633d46b8191461032b578063402f02051461034857806341fde16f146104765761018d565b806326987b6014610283578063326ff2f51461028b5780633562820d146102a85761018d565b80624463861461019257806301ff62ab146101c15780630c0be5a6146102015780631d0cda78146102265780631d9f2d7714610243578063224de3ea14610260575b600080fd5b6101af600480360360208110156101a857600080fd5b503561082b565b60408051918252519081900360200190f35b6101ed600480360360408110156101d757600080fd5b50803590602001356001600160a01b031661088d565b604080519115158252519081900360200190f35b6102246004803603604081101561021757600080fd5b50803590602001356108d8565b005b6101ed6004803603602081101561023c57600080fd5b5035610ba3565b6101ed6004803603602081101561025957600080fd5b5035610c15565b6101ed6004803603604081101561027657600080fd5b5080359060200135610c63565b6101af610ccf565b6101af600480360360208110156102a157600080fd5b5035610cd5565b6101af600480360360e08110156102be57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060c00135610d33565b6101af600480360360a081101561030c57600080fd5b50803590602081013590604081013590606081013590608001356110e8565b6101af6004803603602081101561034157600080fd5b5035611135565b6102246004803603606081101561035e57600080fd5b8135919081019060408101602082013564010000000081111561038057600080fd5b82018360208201111561039257600080fd5b803590602001918460208302840111640100000000831117156103b457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561040457600080fd5b82018360208201111561041657600080fd5b8035906020019184602083028401116401000000008311171561043857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506111db945050505050565b6101af6004803603602081101561048c57600080fd5b50356115d2565b6101af600480360360208110156104a957600080fd5b5035611630565b6101af600480360360208110156104c657600080fd5b50356116c2565b6101af600480360360408110156104e357600080fd5b5080359060200135611887565b6101ed6004803603602081101561050657600080fd5b50356118f1565b6105396004803603604081101561052357600080fd5b50803590602001356001600160a01b031661193f565b60405180886001600160a01b03168152602001876001600160a01b031681526020018060200180602001806020018681526020018060200185810385528a818151815260200191508051906020019060200280838360005b838110156105a9578181015183820152602001610591565b50505050905001858103845289818151815260200191508051906020019060200280838360005b838110156105e85781810151838201526020016105d0565b50505050905001858103835288818151815260200191508051906020019060200280838360005b8381101561062757818101518382015260200161060f565b50505050905001858103825286818151815260200191508051906020019060200280838360005b8381101561066657818101518382015260200161064e565b505050509050019b50505050505050505050505060405180910390f35b6102246004803603608081101561069957600080fd5b5080359060208101359060408101359060600135611cbc565b6101ed600480360360208110156106c857600080fd5b5035611fbf565b6101af600480360360408110156106e557600080fd5b5080359060200135611fd4565b6102246004803603602081101561070857600080fd5b503561204c565b6101ed6004803603602081101561072557600080fd5b5035612283565b6107586004803603604081101561074257600080fd5b50803590602001356001600160a01b03166122d1565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561079c578181015183820152602001610784565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156107db5781810151838201526020016107c3565b5050505090500194505050505060405180910390f35b6101ed6004803603602081101561080757600080fd5b50356122ec565b6101af6004803603602081101561082457600080fd5b503561233a565b6000818060005411610872576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b60008381526003602052604090206009015491505b50919050565b6000828152600360205260408120546001600160a01b03838116911614806108d157506000838152600360205260409020600101546001600160a01b038381169116145b9392505050565b81806000541161091d576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b6000838152600360205260409020546001600160a01b0316338114610984576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b60008481526002602081815260408084208054600101905560039091529091200154849084106109e55760405162461bcd60e51b815260040180806020018281038252602d81526020018061266c602d913960400191505060405180910390fd5b6000858152600360208181526040808420888552909201905290205460ff16610a3f5760405162461bcd60e51b81526004018080602001828103825260298152602001806127c26029913960400191505060405180910390fd5b6000858152600360208181526040808420600189018552909201905290205460ff16610a9c5760405162461bcd60e51b815260040180806020018281038252602d81526020018061271b602d913960400191505060405180910390fd5b6000858152600360205260409020600b8101859055600a01805460ff19166004179055610ac88561236b565b6000858152600360205260409020600a01547f60aa3f6370bfca526a425b273a4701c067bc6a9c65dd5e1f718093968caf49f390869060ff166004811115610b0c57fe5b6040805192835260ff90911660208301528051918290030190a16000858152600360209081526040808320600b8101548085526004909101835281842054600182018552938290205482518a81529384019190915282820193909352606082019290925290517f8197b77bb2176a2166b421dae05fdada3bfe369f4cadf7da2162160ef6978ab29181900360800190a15050505050565b6000818060005411610bea576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b60005b6000848152600360205260409020600a015460ff166004811115610c0d57fe5b149392505050565b6000818060005411610c5c576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b6004610bed565b6000828060005411610caa576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b5050600091825260036020818152604080852093855292909101905290205460ff1690565b60005481565b6000818060005411610d1c576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b50506000908152600360205260409020600b015490565b6000866001600160a01b0316886001600160a01b03161415610d865760405162461bcd60e51b815260040180806020018281038252602c81526020018061261b602c913960400191505060405180910390fd5b60008411610dc55760405162461bcd60e51b81526004018080602001828103825260258152602001806126476025913960400191505060405180910390fd5b60028311610e1a576040805162461bcd60e51b815260206004820181905260248201527f51756572792053697a65206d75737420626520626967676572207468616e2032604482015290519081900360640190fd5b60148310610e6f576040805162461bcd60e51b815260206004820181905260248201527f51756572792053697a65206d757374206265206c657373207468616e206d6178604482015290519081900360640190fd5b60328211610eae5760405162461bcd60e51b81526004018080602001828103825260308152602001806127486030913960400191505060405180910390fd5b60008054815260036020818152604080842080546001600160a01b03808f166001600160a01b0319928316179092558554865282862060019081018054938f1693909216929092179055845485528185206002018990558454855281852085805284018352818520805460ff199081168317909155855486528484528286208a8752850184528286208054909116909117905583548452828252808420848052600490810183528185208b905584548552838352818520898652018252808420899055835484529190528082206005908101869055825483529120015467ffffffffffffffff81118015610fa157600080fd5b50604051908082528060200260200182016040528015610fcb578160200160208202803683370190505b5060036000805481526020019081526020016000206006019080519060200190610ff69291906125ba565b506000805480825260036020526040822060020154611015929061238e565b600080548152600360209081526040808320600801859055825483528083204260079091015582548352808320600a01805460ff191660011790559154825190815291517f9bbb2706e0fa7fffe2a1c188dae1a32922e2be76d89d3b89d6677f3e5fe0c1f99281900390910190a160005460408051918252517f8aa2a1e24480c14317a6c2d823c81f4fef15130c883be64c185441531f7b96e89181900360200190a1506000805481526001602081905260408220805460ff19168217905581549081019091555b979650505050505050565b6000806110fc600088888860008989612504565b90506000611111600189898960008a8a612504565b905061111c8561233a565b8802816002028360020201019250505095945050505050565b600081806000541161117c576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b61118581611fbf565b6111c7576040805162461bcd60e51b815260206004820152600e60248201526d496e64657820696e61637469766560901b604482015290519081900360640190fd5b505060009081526002602052604090205490565b828060005411611220576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b6000848152600360205260409020600101546001600160a01b031633811461128a576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b60008581526002602052604090208054600190810190915585906000878152600360205260409020600a015460ff1660048111156112c457fe5b146113005760405162461bcd60e51b81526004018080602001828103825260348152602001806126e76034913960400191505060405180910390fd5b600086815260036020526040902060050154855114611366576040805162461bcd60e51b815260206004820152601f60248201527f706f7374656454696d65732e6c656e67746820213d20717565727953697a6500604482015290519081900360640190fd5b6000868152600360205260409020600501548451146113cc576040805162461bcd60e51b815260206004820181905260248201527f706f737465644861736865732e6c656e67746820213d20717565727953697a65604482015290519081900360640190fd5b60005b60008781526003602052604090206005015481101561156a57600087815260036020526040902060060180548290811061140557fe5b906000526020600020015486828151811061141c57fe5b602002602001015114611476576040805162461bcd60e51b815260206004820152601f60248201527f706f7374656454696d65735b695d20213d20717565727941727261795b695d00604482015290519081900360640190fd5b60036000888152602001908152602001600020600301600087838151811061149a57fe5b60209081029190910181015182528101919091526040016000205460ff166115625760016003600089815260200190815260200160002060030160008884815181106114e257fe5b6020026020010151815260200190815260200160002060006101000a81548160ff02191690831515021790555084818151811061151b57fe5b602002602001015160036000898152602001908152602001600020600401600088848151811061154757fe5b60200260200101518152602001908152602001600020819055505b6001016113cf565b50600086815260036020908152604091829020600a8101805460ff1916905542600782015560090180546001019055815188815291517f9f48f0365c0924940e64ac12fca39f480beeada18cca76e8544a3ac295068bac9281900390910190a1505050505050565b6000818060005411611619576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b505060009081526003602052604090206005015490565b6000818060005411611677576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b6000838152600360205260409020600a81015460088201546005830154600984015460028501546116b49460ff16939260289290916101f4612504565b600790910154019392505050565b6000818060005411611709576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b6000838152600360205260408120600a015460ff16600481111561172957fe5b1415611746576b57616974696e67517565727960a01b9150610887565b60016000848152600360205260409020600a015460ff16600481111561176857fe5b1415611786576c57616974696e6748617368657360981b9150610887565b60026000848152600360205260409020600a015460ff1660048111156117a857fe5b14156117c6576c21b430b63632b733b2b92bb7b760991b9150610887565b60036000848152600360205260409020600a015460ff1660048111156117e857fe5b1415611803576921b630b4b6b2b92bb7b760b11b9150610887565b60046000848152600360205260409020600a015460ff16600481111561182557fe5b1415611845576e111a5d995c99d95b98d9519bdd5b99608a1b9150610887565b6040805162461bcd60e51b8152602060048201526012602482015271556e7265636f676e697a656420737461746560701b604482015290519081900360640190fd5b60008280600054116118ce576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b505060009182526003602090815260408084209284526004909201905290205490565b6000818060005411611938576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b6002610bed565b60008281526003602090815260408083208151600480825260a0820190935284936060938493849387938593849291820160808036833701905050905081600201548160008151811061198e57fe5b6020026020010181815250508160050154816001815181106119ac57fe5b6020908102919091010152600a82015460088301546005840154600985015460028601546119e69460ff16939260289290916101f4612504565b826007015401816002815181106119f957fe5b60200260200101818152505081600b015481600381518110611a1757fe5b60209081029190910101526040805160148082526102a0820190925260609181602001602082028036833750506040805160148082526102a082019092529293506060929150602082016102808036833701905050905060005b8460050154811015611b4457600360008f81526020019081526020016000206003016000866006018381548110611aa457fe5b9060005260206000200154815260200190815260200160002060009054906101000a900460ff16838281518110611ad757fe5b91151560209283029190910182015260008f81526003909152604081206006870180546004909201929184908110611b0b57fe5b9060005260206000200154815260200190815260200160002054828281518110611b3157fe5b6020908102919091010152600101611a71565b50600080600a86015460ff166004811115611b5b57fe5b1415611b7357506b57616974696e67517565727960a01b5b6001600a86015460ff166004811115611b8857fe5b1415611ba157506c57616974696e6748617368657360981b5b6002600a86015460ff166004811115611bb657fe5b1415611bcf57506c21b430b63632b733b2b92bb7b760991b5b6003600a86015460ff166004811115611be457fe5b1415611bfa57506921b630b4b6b2b92bb7b760b11b5b6004600a86015460ff166004811115611c0f57fe5b1415611c2a57506e111a5d995c99d95b98d9519bdd5b99608a1b5b84546001860154600687018054604080516020808402820181019092528281526001600160a01b0395861695909416938892889288928c929091879190830182828015611c9657602002820191906000526020600020905b815481526020019060010190808311611c82575b505050505094509b509b509b509b509b509b509b50505050505092959891949750929550565b838060005411611d01576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b6000858152600360205260409020546001600160a01b0316338114611d68576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b60008681526002602052604081208054600101905586906000888152600360205260409020600a015460ff166004811115611d9f57fe5b14611ddb5760405162461bcd60e51b815260040180806020018281038252603281526020018061281a6032913960400191505060405180910390fd5b600087815260036020526040902060050154600019018610611e2e5760405162461bcd60e51b81526004018080602001828103825260278152602001806127786027913960400191505060405180910390fd5b6000878152600360205260409020600601805487908110611e4b57fe5b90600052602060002001548514611e935760405162461bcd60e51b815260040180806020018281038252602381526020018061279f6023913960400191505060405180910390fd5b6000878152600360205260409020600601805460018801908110611eb357fe5b90600052602060002001548414611efb5760405162461bcd60e51b81526004018080602001828103825260248152602001806126c36024913960400191505060405180910390fd5b600185850311611f52576040805162461bcd60e51b815260206004820152601960248201527f496e74657276616c206973206c657373207468616e206f6e6500000000000000604482015290519081900360640190fd5b611f5d87868661238e565b600087815260036020908152604091829020600a8101805460ff1916600117905542600790910155815189815291517f8aa2a1e24480c14317a6c2d823c81f4fef15130c883be64c185441531f7b96e89281900390910190a150505050505050565b60009081526001602052604090205460ff1690565b600082806000541161201b576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b600084815260036020526040902060060180548490811061203857fe5b906000526020600020015491505092915050565b808060005411612091576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b60008281526002602081815260408084208054600101905560039091528220600a81015460088201546005830154600984015493909401548795946120e19460ff909416936028926101f4612504565b6000858152600360205260409020600781015490549101421191506001600160a01b031633148015612132575060016000858152600360205260409020600a015460ff16600481111561213057fe5b145b801561213b5750805b156121d1576000848152600360205260409020600a0180546002919060ff19166001835b021790555061216d8461236b565b6000848152600360205260409020600a01547f60aa3f6370bfca526a425b273a4701c067bc6a9c65dd5e1f718093968caf49f390859060ff1660048111156121b157fe5b6040805192835260ff90911660208301528051918290030190a15061227e565b6000848152600360205260409020600101546001600160a01b03163314801561221757506000848152600360205260408120600a015460ff16600481111561221557fe5b145b80156122205750805b15612247576000848152600360208190526040909120600a01805460ff191660018361215f565b60405162461bcd60e51b815260040180806020018281038252602f8152602001806127eb602f913960400191505060405180910390fd5b505050565b60008180600054116122ca576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b6001610bed565b50506040805160008082526020820190815281830190925291565b6000818060005411612333576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b6003610bed565b60006101005b82156123565760019290921c9160001901612340565b60028160ff038161236357fe5b049392505050565b6000908152600160209081526040808320805460ff191690556002909152812055565b8181116123cc5760405162461bcd60e51b815260040180806020018281038252602a815260200180612699602a913960400191505060405180910390fd5b60008381526003602052604081206005015483830390600019016002810282101561247857600092505b808310156124735783838601101561243b576000868152600360205260409020600601805486850191908590811061242a57fe5b600091825260209091200155612468565b600086815260036020526040902060060180548591908590811061245b57fe5b6000918252602090912001555b6001909201916123f6565b6124d0565b600081838161248357fe5b049050600093505b818410156124ce576000878152600360205260409020600601805485830288019190869081106124b757fe5b60009182526020909120015560019093019261248b565b505b60008681526003602052604090206006018054859190839081106124f057fe5b600091825260209091200155505050505050565b60008084860a848161251257fe5b0490508415612522576000198601025b600089600481111561253057fe5b141561254d578764e8d4a510008285025b048801019150506110dd565b600189600481111561255b57fe5b1415612570578764e8d4a51000828502612541565b600389600481111561257e57fe5b14806125955750600289600481111561259357fe5b145b806125ab575060048960048111156125a957fe5b145b156118455760009150506110dd565b8280548282559060005260206000209081019282156125f5579160200282015b828111156125f55782518255916020019190600101906125da565b50612601929150612605565b5090565b5b80821115612601576000815560010161260656fe4368616c6c656e67657220616e6420636c61696d65722068617665207468652073616d65206164647265737346696e616c2054696d652068617320746f20626520626967676572207468616e207a65726f646976657267656e63652074696d652068617320746f206265206c657373207468616e2066696e616c54696d657269676874506f696e742068617320746f20626520626967676572207468616e206c656674506f696e747269676874506f696e7420213d20717565727941727261795b717565727950696563655d43757272656e745374617465206973206e6f742057616974696e674861736865732c2063616e6e6f74207265706c795175657279646976657267656e636554696d65202b20312068617320746f2068617665206265656e207375626d6974746564526f756e64204475726174696f6e2068617320746f2062652067726561746572207468616e203530207365636f6e64737175657279506965636520697320626967676572207468616e20717565727953697a65202d20316c656674506f696e7420213d20717565727941727261795b717565727950696563655d646976657267656e636554696d652068617320746f2068617665206265656e207375626d69747465644661696c20746f20436c61696d566963746f7279427954696d6520696e2063757272656e7420636f6e646974696f6e43757272656e745374617465206973206e6f742057616974696e6751756572792c2063616e6e6f74206d616b655175657279496e646578206e6f7420696e7374616e74696174656400000000000000000000a2646970667358221220351d1b7b7afd9465d0fed925cff1efcf1fdd67a3ed84836391286542e50c1d9364736f6c63430007040033",
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061018d5760003560e01c8063429fc018116100de57806382afd23b11610097578063a91565df11610071578063a91565df1461070f578063c526656c1461072c578063d0a068cf146107f1578063daaadf4e1461080e5761018d565b806382afd23b146106b2578063a2c58835146106cf578063a2dc7973146106f25761018d565b8063429fc018146104935780635748c130146104b057806360696f81146104cd5780636547429e146104f057806373df16121461050d578063823bb67c146106835761018d565b806326987b601161014b578063370f31aa11610125578063370f31aa146102f65780633d46b8191461032b578063402f02051461034857806341fde16f146104765761018d565b806326987b6014610283578063326ff2f51461028b5780633562820d146102a85761018d565b80624463861461019257806301ff62ab146101c15780630c0be5a6146102015780631d0cda78146102265780631d9f2d7714610243578063224de3ea14610260575b600080fd5b6101af600480360360208110156101a857600080fd5b503561082b565b60408051918252519081900360200190f35b6101ed600480360360408110156101d757600080fd5b50803590602001356001600160a01b031661088d565b604080519115158252519081900360200190f35b6102246004803603604081101561021757600080fd5b50803590602001356108d8565b005b6101ed6004803603602081101561023c57600080fd5b5035610ba3565b6101ed6004803603602081101561025957600080fd5b5035610c15565b6101ed6004803603604081101561027657600080fd5b5080359060200135610c63565b6101af610ccf565b6101af600480360360208110156102a157600080fd5b5035610cd5565b6101af600480360360e08110156102be57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060c00135610d33565b6101af600480360360a081101561030c57600080fd5b50803590602081013590604081013590606081013590608001356110e8565b6101af6004803603602081101561034157600080fd5b5035611135565b6102246004803603606081101561035e57600080fd5b8135919081019060408101602082013564010000000081111561038057600080fd5b82018360208201111561039257600080fd5b803590602001918460208302840111640100000000831117156103b457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561040457600080fd5b82018360208201111561041657600080fd5b8035906020019184602083028401116401000000008311171561043857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506111db945050505050565b6101af6004803603602081101561048c57600080fd5b50356115d2565b6101af600480360360208110156104a957600080fd5b5035611630565b6101af600480360360208110156104c657600080fd5b50356116c2565b6101af600480360360408110156104e357600080fd5b5080359060200135611887565b6101ed6004803603602081101561050657600080fd5b50356118f1565b6105396004803603604081101561052357600080fd5b50803590602001356001600160a01b031661193f565b60405180886001600160a01b03168152602001876001600160a01b031681526020018060200180602001806020018681526020018060200185810385528a818151815260200191508051906020019060200280838360005b838110156105a9578181015183820152602001610591565b50505050905001858103845289818151815260200191508051906020019060200280838360005b838110156105e85781810151838201526020016105d0565b50505050905001858103835288818151815260200191508051906020019060200280838360005b8381101561062757818101518382015260200161060f565b50505050905001858103825286818151815260200191508051906020019060200280838360005b8381101561066657818101518382015260200161064e565b505050509050019b50505050505050505050505060405180910390f35b6102246004803603608081101561069957600080fd5b5080359060208101359060408101359060600135611cbc565b6101ed600480360360208110156106c857600080fd5b5035611fbf565b6101af600480360360408110156106e557600080fd5b5080359060200135611fd4565b6102246004803603602081101561070857600080fd5b503561204c565b6101ed6004803603602081101561072557600080fd5b5035612283565b6107586004803603604081101561074257600080fd5b50803590602001356001600160a01b03166122d1565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561079c578181015183820152602001610784565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156107db5781810151838201526020016107c3565b5050505090500194505050505060405180910390f35b6101ed6004803603602081101561080757600080fd5b50356122ec565b6101af6004803603602081101561082457600080fd5b503561233a565b6000818060005411610872576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b60008381526003602052604090206009015491505b50919050565b6000828152600360205260408120546001600160a01b03838116911614806108d157506000838152600360205260409020600101546001600160a01b038381169116145b9392505050565b81806000541161091d576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b6000838152600360205260409020546001600160a01b0316338114610984576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b60008481526002602081815260408084208054600101905560039091529091200154849084106109e55760405162461bcd60e51b815260040180806020018281038252602d81526020018061266c602d913960400191505060405180910390fd5b6000858152600360208181526040808420888552909201905290205460ff16610a3f5760405162461bcd60e51b81526004018080602001828103825260298152602001806127c26029913960400191505060405180910390fd5b6000858152600360208181526040808420600189018552909201905290205460ff16610a9c5760405162461bcd60e51b815260040180806020018281038252602d81526020018061271b602d913960400191505060405180910390fd5b6000858152600360205260409020600b8101859055600a01805460ff19166004179055610ac88561236b565b6000858152600360205260409020600a01547f60aa3f6370bfca526a425b273a4701c067bc6a9c65dd5e1f718093968caf49f390869060ff166004811115610b0c57fe5b6040805192835260ff90911660208301528051918290030190a16000858152600360209081526040808320600b8101548085526004909101835281842054600182018552938290205482518a81529384019190915282820193909352606082019290925290517f8197b77bb2176a2166b421dae05fdada3bfe369f4cadf7da2162160ef6978ab29181900360800190a15050505050565b6000818060005411610bea576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b60005b6000848152600360205260409020600a015460ff166004811115610c0d57fe5b149392505050565b6000818060005411610c5c576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b6004610bed565b6000828060005411610caa576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b5050600091825260036020818152604080852093855292909101905290205460ff1690565b60005481565b6000818060005411610d1c576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b50506000908152600360205260409020600b015490565b6000866001600160a01b0316886001600160a01b03161415610d865760405162461bcd60e51b815260040180806020018281038252602c81526020018061261b602c913960400191505060405180910390fd5b60008411610dc55760405162461bcd60e51b81526004018080602001828103825260258152602001806126476025913960400191505060405180910390fd5b60028311610e1a576040805162461bcd60e51b815260206004820181905260248201527f51756572792053697a65206d75737420626520626967676572207468616e2032604482015290519081900360640190fd5b60148310610e6f576040805162461bcd60e51b815260206004820181905260248201527f51756572792053697a65206d757374206265206c657373207468616e206d6178604482015290519081900360640190fd5b60328211610eae5760405162461bcd60e51b81526004018080602001828103825260308152602001806127486030913960400191505060405180910390fd5b60008054815260036020818152604080842080546001600160a01b03808f166001600160a01b0319928316179092558554865282862060019081018054938f1693909216929092179055845485528185206002018990558454855281852085805284018352818520805460ff199081168317909155855486528484528286208a8752850184528286208054909116909117905583548452828252808420848052600490810183528185208b905584548552838352818520898652018252808420899055835484529190528082206005908101869055825483529120015467ffffffffffffffff81118015610fa157600080fd5b50604051908082528060200260200182016040528015610fcb578160200160208202803683370190505b5060036000805481526020019081526020016000206006019080519060200190610ff69291906125ba565b506000805480825260036020526040822060020154611015929061238e565b600080548152600360209081526040808320600801859055825483528083204260079091015582548352808320600a01805460ff191660011790559154825190815291517f9bbb2706e0fa7fffe2a1c188dae1a32922e2be76d89d3b89d6677f3e5fe0c1f99281900390910190a160005460408051918252517f8aa2a1e24480c14317a6c2d823c81f4fef15130c883be64c185441531f7b96e89181900360200190a1506000805481526001602081905260408220805460ff19168217905581549081019091555b979650505050505050565b6000806110fc600088888860008989612504565b90506000611111600189898960008a8a612504565b905061111c8561233a565b8802816002028360020201019250505095945050505050565b600081806000541161117c576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b61118581611fbf565b6111c7576040805162461bcd60e51b815260206004820152600e60248201526d496e64657820696e61637469766560901b604482015290519081900360640190fd5b505060009081526002602052604090205490565b828060005411611220576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b6000848152600360205260409020600101546001600160a01b031633811461128a576040805162461bcd60e51b815260206004820152601860248201527721b0b73737ba1031329031b0b63632b210313c903ab9b2b960411b604482015290519081900360640190fd5b60008581526002602052604090208054600190810190915585906000878152600360205260409020600a015460ff1660048111156112c457fe5b146113005760405162461bcd60e51b81526004018080602001828103825260348152602001806126e76034913960400191505060405180910390fd5b600086815260036020526040902060050154855114611366576040805162461bcd60e51b815260206004820152601f60248201527f706f7374656454696d65732e6c656e67746820213d20717565727953697a6500604482015290519081900360640190fd5b6000868152600360205260409020600501548451146113cc576040805162461bcd60e51b815260206004820181905260248201527f706f737465644861736865732e6c656e67746820213d20717565727953697a65604482015290519081900360640190fd5b60005b60008781526003602052604090206005015481101561156a57600087815260036020526040902060060180548290811061140557fe5b906000526020600020015486828151811061141c57fe5b602002602001015114611476576040805162461bcd60e51b815260206004820152601f60248201527f706f7374656454696d65735b695d20213d20717565727941727261795b695d00604482015290519081900360640190fd5b60036000888152602001908152602001600020600301600087838151811061149a57fe5b60209081029190910181015182528101919091526040016000205460ff166115625760016003600089815260200190815260200160002060030160008884815181106114e257fe5b6020026020010151815260200190815260200160002060006101000a81548160ff02191690831515021790555084818151811061151b57fe5b602002602001015160036000898152602001908152602001600020600401600088848151811061154757fe5b60200260200101518152602001908152602001600020819055505b6001016113cf565b50600086815260036020908152604091829020600a8101805460ff1916905542600782015560090180546001019055815188815291517f9f48f0365c0924940e64ac12fca39f480beeada18cca76e8544a3ac295068bac9281900390910190a1505050505050565b6000818060005411611619576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b505060009081526003602052604090206005015490565b6000818060005411611677576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b6000838152600360205260409020600a81015460088201546005830154600984015460028501546116b49460ff16939260289290916101f4612504565b600790910154019392505050565b6000818060005411611709576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b6000838152600360205260408120600a015460ff16600481111561172957fe5b1415611746576b57616974696e67517565727960a01b9150610887565b60016000848152600360205260409020600a015460ff16600481111561176857fe5b1415611786576c57616974696e6748617368657360981b9150610887565b60026000848152600360205260409020600a015460ff1660048111156117a857fe5b14156117c6576c21b430b63632b733b2b92bb7b760991b9150610887565b60036000848152600360205260409020600a015460ff1660048111156117e857fe5b1415611803576921b630b4b6b2b92bb7b760b11b9150610887565b60046000848152600360205260409020600a015460ff16600481111561182557fe5b1415611845576e111a5d995c99d95b98d9519bdd5b99608a1b9150610887565b6040805162461bcd60e51b8152602060048201526012602482015271556e7265636f676e697a656420737461746560701b604482015290519081900360640190fd5b60008280600054116118ce576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b505060009182526003602090815260408084209284526004909201905290205490565b6000818060005411611938576040805162461bcd60e51b8152602060048201526016602482015260008051602061284c833981519152604482015290519081900360640190fd5b6002610bed565b60008281526003602090815260408083208151600480825260a0820190935284936060938493849387938593849291820160808036833701905050905081600201548160008151811061198e57fe5b6020026020010181815250508160050154816001815181106119ac57fe5b6020908102919091010152600a82015460088301546005840154600985015460028601546119e69460ff16939260289290916101f4612504565b826007015401816002815181106119f957fe5b60200260200101818152505081600b015481600381518110611a1757fe5b60209081029190910101526040805160148082526102a0820190925260609181602001602082028036833750506040805160148082526102a082019092529293506060929150602082016102808036833701905050905060005b8460050154811015611b4457600360008f81526020019081526020016000206003016000866006018381548110611aa457fe5b9060005260206000200154815260200190815260200160002060009054906101000a900460ff16838281518110611ad757fe5b91151560209283029190910182015260008f81526003909152604081206006870180546004909201929184908110611b0b57fe5b9060005260206000200154815260200190815260200160002054828281518110611b3157fe5b6020908102919091010152600101611a71565b50600080600a86015460ff166004811115611b5b57fe5b1415611b7357506b57616974696e67517565727960a01b5b6001600a86015460ff166004811115611b8857fe5b1415611ba157506c57616974696e6748617368657360981b5b6002600a86015460ff166004811115611bb657fe5b1415611bcf57506c21b430b63632b733b2b92bb7b760991b5b6003600a86015460ff166004811115611be457fe5b1415611bfa57506921b630b4b6b2b92bb7b760b11b5b6004600a860