Skip to content

Instantly share code, notes, and snippets.

@lhemerly
Created September 30, 2021 09:21
Show Gist options
  • Save lhemerly/5e2f91741560d6d8751ca69f5e63e92c to your computer and use it in GitHub Desktop.
Save lhemerly/5e2f91741560d6d8751ca69f5e63e92c to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=builtin&optimize=true&runs=200&gist=
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405261012c600055600780546001600160a01b03199081167329540536e574f23e7749a4facbab3d496f78530e1790915560088054821673bceb9f31a6bb34a969db5247c2d476beadac408f179055600980549091167326ee92f9813b45344afcc908fbb37b4a615a5d5d17905534801561007c57600080fd5b506107e38061008c6000396000f3fe6080604052600436106100dc5760003560e01c80634367ac7c1161007f578063ba14f26a11610059578063ba14f26a146101f6578063c8f33c9114610223578063f75b8c5f14610239578063f8b2cb4f1461024f57600080fd5b80634367ac7c146101aa5780637b0a47ee146101c05780639e447fc6146101d657600080fd5b80632e1a7d4d116100bb5780632e1a7d4d146101555780633a4b66f1146101775780633d18b9121461017f5780633eaaf86b1461019457600080fd5b80628cc262146100e15780630700037d14610113578063228cb73314610140575b600080fd5b3480156100ed57600080fd5b506101016100fc3660046106de565b610285565b60405190815260200160405180910390f35b34801561011f57600080fd5b5061010161012e3660046106de565b60046020526000908152604090205481565b34801561014c57600080fd5b50610101610302565b34801561016157600080fd5b5061017561017036600461070e565b610360565b005b610175610557565b34801561018b57600080fd5b506101756105dc565b3480156101a057600080fd5b5061010160065481565b3480156101b657600080fd5b5061010160025481565b3480156101cc57600080fd5b5061010160005481565b3480156101e257600080fd5b506101756101f136600461070e565b61065e565b34801561020257600080fd5b506101016102113660046106de565b60036020526000908152604090205481565b34801561022f57600080fd5b5061010160015481565b34801561024557600080fd5b5061010160055481565b34801561025b57600080fd5b5061010161026a3660046106de565b6001600160a01b03166000908152600a602052604090205490565b6001600160a01b0381166000908152600460209081526040808320546003909252822054670de0b6b3a7640000906102bb610302565b6102c59190610780565b6001600160a01b0385166000908152600a60205260409020546102e89190610761565b6102f2919061073f565b6102fc9190610727565b92915050565b6000600654600014156103155750600090565b6006546000546001546103289042610780565b6103329190610761565b61034490670de0b6b3a7640000610761565b61034e919061073f565b60025461035b9190610727565b905090565b33610369610302565b6002554260015561037981610285565b6001600160a01b0382166000908152600460209081526040808320939093556002546003909152918120919091556103af6106c1565b905060006127106103c08386610761565b6103ca919061073f565b9050600060646103db836008610761565b6103e5919061073f565b905060006103f38284610780565b905085600660008282546104079190610780565b9091555050336000908152600a60205260408120805488929061042b908490610780565b9250508190555081600660008282546104449190610727565b90915550506006546005556007546001600160a01b03166108fc61046960038461073f565b6040518115909202916000818181858888f19350505050158015610491573d6000803e3d6000fd5b506008546001600160a01b03166108fc6104ac60038461073f565b6040518115909202916000818181858888f193505050501580156104d4573d6000803e3d6000fd5b506009546001600160a01b03166108fc6104ef60038461073f565b6040518115909202916000818181858888f19350505050158015610517573d6000803e3d6000fd5b50336108fc6105268589610780565b6040518115909202916000818181858888f1935050505015801561054e573d6000803e3d6000fd5b50505050505050565b33610560610302565b6002554260015561057081610285565b6001600160a01b038216600090815260046020908152604080832093909355600254600390915291812091909155600680543492906105b0908490610727565b9091555050336000908152600a6020526040812080543492906105d4908490610727565b909155505050565b336105e5610302565b600255426001556105f581610285565b6001600160a01b0382166000908152600460208181526040808420949094556002546003825284842055338084529190528282208054908390559251909183156108fc02918491818181858888f19350505050158015610659573d6000803e3d6000fd5b505050565b6007546001600160a01b031633146106bc5760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c7920746865206465762063616e206368616e6765207468617421000000604482015260640160405180910390fd5b600055565b6000806005546006546106d49190610780565b5061025892915050565b6000602082840312156106f057600080fd5b81356001600160a01b038116811461070757600080fd5b9392505050565b60006020828403121561072057600080fd5b5035919050565b6000821982111561073a5761073a610797565b500190565b60008261075c57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561077b5761077b610797565b500290565b60008282101561079257610792610797565b500390565b634e487b7160e01b600052601160045260246000fdfea264697066735822122005b52cd3f7250418624f91042912023658a88f298be06d75629d68290f10f18364736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH2 0x12C PUSH1 0x0 SSTORE PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH20 0x29540536E574F23E7749A4FACBAB3D496F78530E OR SWAP1 SWAP2 SSTORE PUSH1 0x8 DUP1 SLOAD DUP3 AND PUSH20 0xBCEB9F31A6BB34A969DB5247C2D476BEADAC408F OR SWAP1 SSTORE PUSH1 0x9 DUP1 SLOAD SWAP1 SWAP2 AND PUSH20 0x26EE92F9813B45344AFCC908FBB37B4A615A5D5D OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7E3 DUP1 PUSH2 0x8C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4367AC7C GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xBA14F26A GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xBA14F26A EQ PUSH2 0x1F6 JUMPI DUP1 PUSH4 0xC8F33C91 EQ PUSH2 0x223 JUMPI DUP1 PUSH4 0xF75B8C5F EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0xF8B2CB4F EQ PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4367AC7C EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0x7B0A47EE EQ PUSH2 0x1C0 JUMPI DUP1 PUSH4 0x9E447FC6 EQ PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2E1A7D4D GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0x3A4B66F1 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x3D18B912 EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x3EAAF86B EQ PUSH2 0x194 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0x8CC262 EQ PUSH2 0xE1 JUMPI DUP1 PUSH4 0x700037D EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0x228CB733 EQ PUSH2 0x140 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x101 PUSH2 0xFC CALLDATASIZE PUSH1 0x4 PUSH2 0x6DE JUMP JUMPDEST PUSH2 0x285 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x101 PUSH2 0x12E CALLDATASIZE PUSH1 0x4 PUSH2 0x6DE JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x101 PUSH2 0x302 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x175 PUSH2 0x170 CALLDATASIZE PUSH1 0x4 PUSH2 0x70E JUMP JUMPDEST PUSH2 0x360 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x175 PUSH2 0x557 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x175 PUSH2 0x5DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x101 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x101 PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x101 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x175 PUSH2 0x1F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x70E JUMP JUMPDEST PUSH2 0x65E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x101 PUSH2 0x211 CALLDATASIZE PUSH1 0x4 PUSH2 0x6DE JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x101 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x245 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x101 PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x101 PUSH2 0x26A CALLDATASIZE PUSH1 0x4 PUSH2 0x6DE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x3 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH8 0xDE0B6B3A7640000 SWAP1 PUSH2 0x2BB PUSH2 0x302 JUMP JUMPDEST PUSH2 0x2C5 SWAP2 SWAP1 PUSH2 0x780 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2E8 SWAP2 SWAP1 PUSH2 0x761 JUMP JUMPDEST PUSH2 0x2F2 SWAP2 SWAP1 PUSH2 0x73F JUMP JUMPDEST PUSH2 0x2FC SWAP2 SWAP1 PUSH2 0x727 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x315 JUMPI POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0x328 SWAP1 TIMESTAMP PUSH2 0x780 JUMP JUMPDEST PUSH2 0x332 SWAP2 SWAP1 PUSH2 0x761 JUMP JUMPDEST PUSH2 0x344 SWAP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x761 JUMP JUMPDEST PUSH2 0x34E SWAP2 SWAP1 PUSH2 0x73F JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x35B SWAP2 SWAP1 PUSH2 0x727 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH2 0x369 PUSH2 0x302 JUMP JUMPDEST PUSH1 0x2 SSTORE TIMESTAMP PUSH1 0x1 SSTORE PUSH2 0x379 DUP2 PUSH2 0x285 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x2 SLOAD PUSH1 0x3 SWAP1 SWAP2 MSTORE SWAP2 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x3AF PUSH2 0x6C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2710 PUSH2 0x3C0 DUP4 DUP7 PUSH2 0x761 JUMP JUMPDEST PUSH2 0x3CA SWAP2 SWAP1 PUSH2 0x73F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x64 PUSH2 0x3DB DUP4 PUSH1 0x8 PUSH2 0x761 JUMP JUMPDEST PUSH2 0x3E5 SWAP2 SWAP1 PUSH2 0x73F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3F3 DUP3 DUP5 PUSH2 0x780 JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x6 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x407 SWAP2 SWAP1 PUSH2 0x780 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP9 SWAP3 SWAP1 PUSH2 0x42B SWAP1 DUP5 SWAP1 PUSH2 0x780 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x6 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x444 SWAP2 SWAP1 PUSH2 0x727 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x6 SLOAD PUSH1 0x5 SSTORE PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8FC PUSH2 0x469 PUSH1 0x3 DUP5 PUSH2 0x73F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 ISZERO SWAP1 SWAP3 MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x491 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8FC PUSH2 0x4AC PUSH1 0x3 DUP5 PUSH2 0x73F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 ISZERO SWAP1 SWAP3 MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x4D4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8FC PUSH2 0x4EF PUSH1 0x3 DUP5 PUSH2 0x73F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 ISZERO SWAP1 SWAP3 MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x517 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP CALLER PUSH2 0x8FC PUSH2 0x526 DUP6 DUP10 PUSH2 0x780 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 ISZERO SWAP1 SWAP3 MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x54E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH2 0x560 PUSH2 0x302 JUMP JUMPDEST PUSH1 0x2 SSTORE TIMESTAMP PUSH1 0x1 SSTORE PUSH2 0x570 DUP2 PUSH2 0x285 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x2 SLOAD PUSH1 0x3 SWAP1 SWAP2 MSTORE SWAP2 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x6 DUP1 SLOAD CALLVALUE SWAP3 SWAP1 PUSH2 0x5B0 SWAP1 DUP5 SWAP1 PUSH2 0x727 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD CALLVALUE SWAP3 SWAP1 PUSH2 0x5D4 SWAP1 DUP5 SWAP1 PUSH2 0x727 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP POP JUMP JUMPDEST CALLER PUSH2 0x5E5 PUSH2 0x302 JUMP JUMPDEST PUSH1 0x2 SSTORE TIMESTAMP PUSH1 0x1 SSTORE PUSH2 0x5F5 DUP2 PUSH2 0x285 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0x2 SLOAD PUSH1 0x3 DUP3 MSTORE DUP5 DUP5 KECCAK256 SSTORE CALLER DUP1 DUP5 MSTORE SWAP2 SWAP1 MSTORE DUP3 DUP3 KECCAK256 DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE SWAP3 MLOAD SWAP1 SWAP2 DUP4 ISZERO PUSH2 0x8FC MUL SWAP2 DUP5 SWAP2 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x659 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C7920746865206465762063616E206368616E6765207468617421000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH2 0x6D4 SWAP2 SWAP1 PUSH2 0x780 JUMP JUMPDEST POP PUSH2 0x258 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x707 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x73A JUMPI PUSH2 0x73A PUSH2 0x797 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x75C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x77B JUMPI PUSH2 0x77B PUSH2 0x797 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x792 JUMPI PUSH2 0x792 PUSH2 0x797 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SDIV 0xB5 0x2C 0xD3 0xF7 0x25 DIV XOR PUSH3 0x4F9104 0x29 SLT MUL CALLDATASIZE PC 0xA8 DUP16 0x29 DUP12 0xE0 PUSH14 0x75629D68290F10F18364736F6C63 NUMBER STOP ADDMOD SMOD STOP CALLER ",
"sourceMap": "64:2738:0:-:0;;;109:3;84:28;;337:69;;;-1:-1:-1;;;;;;337:69:0;;;364:42;337:69;;;;412;;;;;439:42;412:69;;;487;;;;;;514:42;487:69;;;64:2738;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_getTax_326": {
"entryPoint": 1729,
"id": 326,
"parameterSlots": 0,
"returnSlots": 1
},
"@_totalSupply_20": {
"entryPoint": null,
"id": 20,
"parameterSlots": 0,
"returnSlots": 0
},
"@earned_90": {
"entryPoint": 645,
"id": 90,
"parameterSlots": 1,
"returnSlots": 1
},
"@getBalance_281": {
"entryPoint": null,
"id": 281,
"parameterSlots": 1,
"returnSlots": 1
},
"@getReward_269": {
"entryPoint": 1500,
"id": 269,
"parameterSlots": 0,
"returnSlots": 0
},
"@lastSupply_18": {
"entryPoint": null,
"id": 18,
"parameterSlots": 0,
"returnSlots": 0
},
"@lastUpdateTime_6": {
"entryPoint": null,
"id": 6,
"parameterSlots": 0,
"returnSlots": 0
},
"@rewardRate_4": {
"entryPoint": null,
"id": 4,
"parameterSlots": 0,
"returnSlots": 0
},
"@rewardStored_8": {
"entryPoint": null,
"id": 8,
"parameterSlots": 0,
"returnSlots": 0
},
"@reward_62": {
"entryPoint": 770,
"id": 62,
"parameterSlots": 0,
"returnSlots": 1
},
"@rewards_16": {
"entryPoint": null,
"id": 16,
"parameterSlots": 0,
"returnSlots": 0
},
"@setRewardRate_299": {
"entryPoint": 1630,
"id": 299,
"parameterSlots": 1,
"returnSlots": 0
},
"@stake_141": {
"entryPoint": 1367,
"id": 141,
"parameterSlots": 0,
"returnSlots": 0
},
"@userRewardPaid_12": {
"entryPoint": null,
"id": 12,
"parameterSlots": 0,
"returnSlots": 0
},
"@withdraw_238": {
"entryPoint": 864,
"id": 238,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_tuple_t_address": {
"entryPoint": 1758,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 1806,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_d4a2604287895d0f8b032d3108efebcb88c3b6d7d5f80464a220135d9db92628__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 1831,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_div_t_uint256": {
"entryPoint": 1855,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_mul_t_uint256": {
"entryPoint": 1889,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_sub_t_uint256": {
"entryPoint": 1920,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 1943,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1817:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "84:216:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "130:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "139:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "142:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "132:6:1"
},
"nodeType": "YulFunctionCall",
"src": "132:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "132:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "105:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "114:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "101:3:1"
},
"nodeType": "YulFunctionCall",
"src": "101:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "126:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "97:3:1"
},
"nodeType": "YulFunctionCall",
"src": "97:32:1"
},
"nodeType": "YulIf",
"src": "94:52:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "155:36:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "181:9:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "168:12:1"
},
"nodeType": "YulFunctionCall",
"src": "168:23:1"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "159:5:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "254:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "263:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "266:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "256:6:1"
},
"nodeType": "YulFunctionCall",
"src": "256:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "256:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "213:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "224:5:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "239:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "244:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "235:3:1"
},
"nodeType": "YulFunctionCall",
"src": "235:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "248:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "231:3:1"
},
"nodeType": "YulFunctionCall",
"src": "231:19:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "220:3:1"
},
"nodeType": "YulFunctionCall",
"src": "220:31:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "210:2:1"
},
"nodeType": "YulFunctionCall",
"src": "210:42:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "203:6:1"
},
"nodeType": "YulFunctionCall",
"src": "203:50:1"
},
"nodeType": "YulIf",
"src": "200:70:1"
},
{
"nodeType": "YulAssignment",
"src": "279:15:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "289:5:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "279:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "50:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "61:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "73:6:1",
"type": ""
}
],
"src": "14:286:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "375:110:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "421:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "430:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "433:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "423:6:1"
},
"nodeType": "YulFunctionCall",
"src": "423:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "423:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "396:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "405:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "392:3:1"
},
"nodeType": "YulFunctionCall",
"src": "392:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "417:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "388:3:1"
},
"nodeType": "YulFunctionCall",
"src": "388:32:1"
},
"nodeType": "YulIf",
"src": "385:52:1"
},
{
"nodeType": "YulAssignment",
"src": "446:33:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "469:9:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "456:12:1"
},
"nodeType": "YulFunctionCall",
"src": "456:23:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "446:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "341:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "352:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "364:6:1",
"type": ""
}
],
"src": "305:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "664:179:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "681:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "692:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "674:6:1"
},
"nodeType": "YulFunctionCall",
"src": "674:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "674:21:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "715:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "726:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "711:3:1"
},
"nodeType": "YulFunctionCall",
"src": "711:18:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "731:2:1",
"type": "",
"value": "29"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "704:6:1"
},
"nodeType": "YulFunctionCall",
"src": "704:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "704:30:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "754:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "765:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "750:3:1"
},
"nodeType": "YulFunctionCall",
"src": "750:18:1"
},
{
"hexValue": "4f6e6c7920746865206465762063616e206368616e6765207468617421",
"kind": "string",
"nodeType": "YulLiteral",
"src": "770:31:1",
"type": "",
"value": "Only the dev can change that!"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "743:6:1"
},
"nodeType": "YulFunctionCall",
"src": "743:59:1"
},
"nodeType": "YulExpressionStatement",
"src": "743:59:1"
},
{
"nodeType": "YulAssignment",
"src": "811:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "823:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "834:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "819:3:1"
},
"nodeType": "YulFunctionCall",
"src": "819:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "811:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_d4a2604287895d0f8b032d3108efebcb88c3b6d7d5f80464a220135d9db92628__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "641:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "655:4:1",
"type": ""
}
],
"src": "490:353:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "949:76:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "959:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "971:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "982:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "967:3:1"
},
"nodeType": "YulFunctionCall",
"src": "967:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "959:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1001:9:1"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1012:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "994:6:1"
},
"nodeType": "YulFunctionCall",
"src": "994:25:1"
},
"nodeType": "YulExpressionStatement",
"src": "994:25:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "918:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "929:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "940:4:1",
"type": ""
}
],
"src": "848:177:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1078:80:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1105:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "1107:16:1"
},
"nodeType": "YulFunctionCall",
"src": "1107:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "1107:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1094:1:1"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1101:1:1"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "1097:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1097:6:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1091:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1091:13:1"
},
"nodeType": "YulIf",
"src": "1088:39:1"
},
{
"nodeType": "YulAssignment",
"src": "1136:16:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1147:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1150:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1143:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1143:9:1"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "1136:3:1"
}
]
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "1061:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "1064:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "1070:3:1",
"type": ""
}
],
"src": "1030:128:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1209:171:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1240:111:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1261:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1268:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1273:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1264:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1264:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1254:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1254:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "1254:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1305:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1308:4:1",
"type": "",
"value": "0x12"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1298:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1298:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "1298:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1333:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1336:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1326:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1326:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "1326:15:1"
}
]
},
"condition": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1229:1:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1222:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1222:9:1"
},
"nodeType": "YulIf",
"src": "1219:132:1"
},
{
"nodeType": "YulAssignment",
"src": "1360:14:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1369:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1372:1:1"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "1365:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1365:9:1"
},
"variableNames": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "1360:1:1"
}
]
}
]
},
"name": "checked_div_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "1194:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "1197:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "r",
"nodeType": "YulTypedName",
"src": "1203:1:1",
"type": ""
}
],
"src": "1163:217:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1437:116:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1496:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "1498:16:1"
},
"nodeType": "YulFunctionCall",
"src": "1498:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "1498:18:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1468:1:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1461:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1461:9:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1454:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1454:17:1"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1476:1:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1487:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "1483:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1483:6:1"
},
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1491:1:1"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "1479:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1479:14:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1473:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1473:21:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1450:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1450:45:1"
},
"nodeType": "YulIf",
"src": "1447:71:1"
},
{
"nodeType": "YulAssignment",
"src": "1527:20:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1542:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1545:1:1"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "1538:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1538:9:1"
},
"variableNames": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "1527:7:1"
}
]
}
]
},
"name": "checked_mul_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "1416:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "1419:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "product",
"nodeType": "YulTypedName",
"src": "1425:7:1",
"type": ""
}
],
"src": "1385:168:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1607:76:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1629:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "1631:16:1"
},
"nodeType": "YulFunctionCall",
"src": "1631:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "1631:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1623:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1626:1:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "1620:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1620:8:1"
},
"nodeType": "YulIf",
"src": "1617:34:1"
},
{
"nodeType": "YulAssignment",
"src": "1660:17:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1672:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1675:1:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1668:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1668:9:1"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "1660:4:1"
}
]
}
]
},
"name": "checked_sub_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "1589:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "1592:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "1598:4:1",
"type": ""
}
],
"src": "1558:125:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1720:95:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1737:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1744:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1749:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1740:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1740:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1730:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1730:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "1730:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1777:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1780:4:1",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1770:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1770:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "1770:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1801:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1804:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1794:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1794:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "1794:15:1"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "1688:127:1"
}
]
},
"contents": "{\n { }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_d4a2604287895d0f8b032d3108efebcb88c3b6d7d5f80464a220135d9db92628__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Only the dev can change that!\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n product := mul(x, y)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052600436106100dc5760003560e01c80634367ac7c1161007f578063ba14f26a11610059578063ba14f26a146101f6578063c8f33c9114610223578063f75b8c5f14610239578063f8b2cb4f1461024f57600080fd5b80634367ac7c146101aa5780637b0a47ee146101c05780639e447fc6146101d657600080fd5b80632e1a7d4d116100bb5780632e1a7d4d146101555780633a4b66f1146101775780633d18b9121461017f5780633eaaf86b1461019457600080fd5b80628cc262146100e15780630700037d14610113578063228cb73314610140575b600080fd5b3480156100ed57600080fd5b506101016100fc3660046106de565b610285565b60405190815260200160405180910390f35b34801561011f57600080fd5b5061010161012e3660046106de565b60046020526000908152604090205481565b34801561014c57600080fd5b50610101610302565b34801561016157600080fd5b5061017561017036600461070e565b610360565b005b610175610557565b34801561018b57600080fd5b506101756105dc565b3480156101a057600080fd5b5061010160065481565b3480156101b657600080fd5b5061010160025481565b3480156101cc57600080fd5b5061010160005481565b3480156101e257600080fd5b506101756101f136600461070e565b61065e565b34801561020257600080fd5b506101016102113660046106de565b60036020526000908152604090205481565b34801561022f57600080fd5b5061010160015481565b34801561024557600080fd5b5061010160055481565b34801561025b57600080fd5b5061010161026a3660046106de565b6001600160a01b03166000908152600a602052604090205490565b6001600160a01b0381166000908152600460209081526040808320546003909252822054670de0b6b3a7640000906102bb610302565b6102c59190610780565b6001600160a01b0385166000908152600a60205260409020546102e89190610761565b6102f2919061073f565b6102fc9190610727565b92915050565b6000600654600014156103155750600090565b6006546000546001546103289042610780565b6103329190610761565b61034490670de0b6b3a7640000610761565b61034e919061073f565b60025461035b9190610727565b905090565b33610369610302565b6002554260015561037981610285565b6001600160a01b0382166000908152600460209081526040808320939093556002546003909152918120919091556103af6106c1565b905060006127106103c08386610761565b6103ca919061073f565b9050600060646103db836008610761565b6103e5919061073f565b905060006103f38284610780565b905085600660008282546104079190610780565b9091555050336000908152600a60205260408120805488929061042b908490610780565b9250508190555081600660008282546104449190610727565b90915550506006546005556007546001600160a01b03166108fc61046960038461073f565b6040518115909202916000818181858888f19350505050158015610491573d6000803e3d6000fd5b506008546001600160a01b03166108fc6104ac60038461073f565b6040518115909202916000818181858888f193505050501580156104d4573d6000803e3d6000fd5b506009546001600160a01b03166108fc6104ef60038461073f565b6040518115909202916000818181858888f19350505050158015610517573d6000803e3d6000fd5b50336108fc6105268589610780565b6040518115909202916000818181858888f1935050505015801561054e573d6000803e3d6000fd5b50505050505050565b33610560610302565b6002554260015561057081610285565b6001600160a01b038216600090815260046020908152604080832093909355600254600390915291812091909155600680543492906105b0908490610727565b9091555050336000908152600a6020526040812080543492906105d4908490610727565b909155505050565b336105e5610302565b600255426001556105f581610285565b6001600160a01b0382166000908152600460208181526040808420949094556002546003825284842055338084529190528282208054908390559251909183156108fc02918491818181858888f19350505050158015610659573d6000803e3d6000fd5b505050565b6007546001600160a01b031633146106bc5760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c7920746865206465762063616e206368616e6765207468617421000000604482015260640160405180910390fd5b600055565b6000806005546006546106d49190610780565b5061025892915050565b6000602082840312156106f057600080fd5b81356001600160a01b038116811461070757600080fd5b9392505050565b60006020828403121561072057600080fd5b5035919050565b6000821982111561073a5761073a610797565b500190565b60008261075c57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561077b5761077b610797565b500290565b60008282101561079257610792610797565b500390565b634e487b7160e01b600052601160045260246000fdfea264697066735822122005b52cd3f7250418624f91042912023658a88f298be06d75629d68290f10f18364736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4367AC7C GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xBA14F26A GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xBA14F26A EQ PUSH2 0x1F6 JUMPI DUP1 PUSH4 0xC8F33C91 EQ PUSH2 0x223 JUMPI DUP1 PUSH4 0xF75B8C5F EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0xF8B2CB4F EQ PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4367AC7C EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0x7B0A47EE EQ PUSH2 0x1C0 JUMPI DUP1 PUSH4 0x9E447FC6 EQ PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2E1A7D4D GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0x3A4B66F1 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x3D18B912 EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x3EAAF86B EQ PUSH2 0x194 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0x8CC262 EQ PUSH2 0xE1 JUMPI DUP1 PUSH4 0x700037D EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0x228CB733 EQ PUSH2 0x140 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x101 PUSH2 0xFC CALLDATASIZE PUSH1 0x4 PUSH2 0x6DE JUMP JUMPDEST PUSH2 0x285 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x101 PUSH2 0x12E CALLDATASIZE PUSH1 0x4 PUSH2 0x6DE JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x101 PUSH2 0x302 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x175 PUSH2 0x170 CALLDATASIZE PUSH1 0x4 PUSH2 0x70E JUMP JUMPDEST PUSH2 0x360 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x175 PUSH2 0x557 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x175 PUSH2 0x5DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x101 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x101 PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x101 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x175 PUSH2 0x1F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x70E JUMP JUMPDEST PUSH2 0x65E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x101 PUSH2 0x211 CALLDATASIZE PUSH1 0x4 PUSH2 0x6DE JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x101 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x245 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x101 PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x101 PUSH2 0x26A CALLDATASIZE PUSH1 0x4 PUSH2 0x6DE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x3 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH8 0xDE0B6B3A7640000 SWAP1 PUSH2 0x2BB PUSH2 0x302 JUMP JUMPDEST PUSH2 0x2C5 SWAP2 SWAP1 PUSH2 0x780 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2E8 SWAP2 SWAP1 PUSH2 0x761 JUMP JUMPDEST PUSH2 0x2F2 SWAP2 SWAP1 PUSH2 0x73F JUMP JUMPDEST PUSH2 0x2FC SWAP2 SWAP1 PUSH2 0x727 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x315 JUMPI POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0x328 SWAP1 TIMESTAMP PUSH2 0x780 JUMP JUMPDEST PUSH2 0x332 SWAP2 SWAP1 PUSH2 0x761 JUMP JUMPDEST PUSH2 0x344 SWAP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x761 JUMP JUMPDEST PUSH2 0x34E SWAP2 SWAP1 PUSH2 0x73F JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x35B SWAP2 SWAP1 PUSH2 0x727 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH2 0x369 PUSH2 0x302 JUMP JUMPDEST PUSH1 0x2 SSTORE TIMESTAMP PUSH1 0x1 SSTORE PUSH2 0x379 DUP2 PUSH2 0x285 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x2 SLOAD PUSH1 0x3 SWAP1 SWAP2 MSTORE SWAP2 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x3AF PUSH2 0x6C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2710 PUSH2 0x3C0 DUP4 DUP7 PUSH2 0x761 JUMP JUMPDEST PUSH2 0x3CA SWAP2 SWAP1 PUSH2 0x73F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x64 PUSH2 0x3DB DUP4 PUSH1 0x8 PUSH2 0x761 JUMP JUMPDEST PUSH2 0x3E5 SWAP2 SWAP1 PUSH2 0x73F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3F3 DUP3 DUP5 PUSH2 0x780 JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x6 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x407 SWAP2 SWAP1 PUSH2 0x780 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP9 SWAP3 SWAP1 PUSH2 0x42B SWAP1 DUP5 SWAP1 PUSH2 0x780 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x6 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x444 SWAP2 SWAP1 PUSH2 0x727 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x6 SLOAD PUSH1 0x5 SSTORE PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8FC PUSH2 0x469 PUSH1 0x3 DUP5 PUSH2 0x73F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 ISZERO SWAP1 SWAP3 MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x491 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8FC PUSH2 0x4AC PUSH1 0x3 DUP5 PUSH2 0x73F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 ISZERO SWAP1 SWAP3 MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x4D4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8FC PUSH2 0x4EF PUSH1 0x3 DUP5 PUSH2 0x73F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 ISZERO SWAP1 SWAP3 MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x517 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP CALLER PUSH2 0x8FC PUSH2 0x526 DUP6 DUP10 PUSH2 0x780 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 ISZERO SWAP1 SWAP3 MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x54E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH2 0x560 PUSH2 0x302 JUMP JUMPDEST PUSH1 0x2 SSTORE TIMESTAMP PUSH1 0x1 SSTORE PUSH2 0x570 DUP2 PUSH2 0x285 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x2 SLOAD PUSH1 0x3 SWAP1 SWAP2 MSTORE SWAP2 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x6 DUP1 SLOAD CALLVALUE SWAP3 SWAP1 PUSH2 0x5B0 SWAP1 DUP5 SWAP1 PUSH2 0x727 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD CALLVALUE SWAP3 SWAP1 PUSH2 0x5D4 SWAP1 DUP5 SWAP1 PUSH2 0x727 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP POP JUMP JUMPDEST CALLER PUSH2 0x5E5 PUSH2 0x302 JUMP JUMPDEST PUSH1 0x2 SSTORE TIMESTAMP PUSH1 0x1 SSTORE PUSH2 0x5F5 DUP2 PUSH2 0x285 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0x2 SLOAD PUSH1 0x3 DUP3 MSTORE DUP5 DUP5 KECCAK256 SSTORE CALLER DUP1 DUP5 MSTORE SWAP2 SWAP1 MSTORE DUP3 DUP3 KECCAK256 DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE SWAP3 MLOAD SWAP1 SWAP2 DUP4 ISZERO PUSH2 0x8FC MUL SWAP2 DUP5 SWAP2 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x659 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C7920746865206465762063616E206368616E6765207468617421000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 SLOAD PUSH1 0x6 SLOAD PUSH2 0x6D4 SWAP2 SWAP1 PUSH2 0x780 JUMP JUMPDEST POP PUSH2 0x258 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x707 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x73A JUMPI PUSH2 0x73A PUSH2 0x797 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x75C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x77B JUMPI PUSH2 0x77B PUSH2 0x797 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x792 JUMPI PUSH2 0x792 PUSH2 0x797 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SDIV 0xB5 0x2C 0xD3 0xF7 0x25 DIV XOR PUSH3 0x4F9104 0x29 SLT MUL CALLDATASIZE PC 0xA8 DUP16 0x29 DUP12 0xE0 PUSH14 0x75629D68290F10F18364736F6C63 NUMBER STOP ADDMOD SMOD STOP CALLER ",
"sourceMap": "64:2738:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;868:211;;;;;;;;;;-1:-1:-1;868:211:0;;;;;:::i;:::-;;:::i;:::-;;;994:25:1;;;982:2;967:18;868:211:0;;;;;;;233:39;;;;;;;;;;-1:-1:-1;233:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;616:246;;;;;;;;;;;;;:::i;1467:568::-;;;;;;;;;;-1:-1:-1;1467:568:0;;;;;:::i;:::-;;:::i;:::-;;1316:145;;;:::i;2041:200::-;;;;;;;;;;;;;:::i;307:24::-;;;;;;;;;;;;;;;;150;;;;;;;;;;;;;;;;84:28;;;;;;;;;;;;;;;;2378:183;;;;;;;;;;-1:-1:-1;2378:183:0;;;;;:::i;:::-;;:::i;181:46::-;;;;;;;;;;-1:-1:-1;181:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;118:26;;;;;;;;;;;;;;;;278:22;;;;;;;;;;;;;;;;2251:117;;;;;;;;;;-1:-1:-1;2251:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;2343:18:0;2309:7;2343:18;;;:9;:18;;;;;;;2251:117;868:211;-1:-1:-1;;;;;1056:16:0;;922:4;1056:16;;;:7;:16;;;;;;;;;1008:14;:23;;;;;;1036:4;;997:8;:6;:8::i;:::-;:34;;;;:::i;:::-;-1:-1:-1;;;;;959:18:0;;;;;;:9;:18;;;;;;:73;;;;:::i;:::-;958:82;;;;:::i;:::-;957:115;;;;:::i;:::-;938:134;868:211;-1:-1:-1;;868:211:0:o;616:246::-;655:4;675:12;;691:1;675:17;671:56;;;-1:-1:-1;715:1:0;;616:246::o;671:56::-;842:12;;821:10;;803:14;;785:32;;:15;:32;:::i;:::-;784:47;;;;:::i;:::-;:54;;834:4;784:54;:::i;:::-;783:71;;;;:::i;:::-;755:12;;:100;;;;:::i;:::-;736:119;;616:246;:::o;1467:568::-;1521:10;1149:8;:6;:8::i;:::-;1134:12;:23;1184:15;1167:14;:32;1229:15;1236:7;1229:6;:15::i;:::-;-1:-1:-1;;;;;1210:16:0;;;;;;:7;:16;;;;;;;;:34;;;;1280:12;;1254:14;:23;;;;;;:38;;;;1554:9:::1;:7;:9::i;:::-;1543:20:::0;-1:-1:-1;1573:13:0::1;1601:5;1589:11;1543:20:::0;1589:7;:11:::1;:::i;:::-;:17;;;;:::i;:::-;1573:33:::0;-1:-1:-1;1616:12:0::1;1642:3;1631:10;1573:33:::0;1640:1:::1;1631:10;:::i;:::-;:14;;;;:::i;:::-;1616:29:::0;-1:-1:-1;1655:11:0::1;1669:16;1616:29:::0;1669:8;:16:::1;:::i;:::-;1655:30;;1711:7;1695:12;;:23;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;1738:10:0::1;1728:21;::::0;;;:9:::1;:21;::::0;;;;:32;;1753:7;;1728:21;:32:::1;::::0;1753:7;;1728:32:::1;:::i;:::-;;;;;;;;1786:7;1770:12;;:23;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;1816:12:0::1;::::0;1803:10:::1;:25:::0;1846:10:::1;::::0;-1:-1:-1;;;;;1846:10:0::1;1838:38;1867:8;1874:1;1867:6:::0;:8:::1;:::i;:::-;1838:38;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;1894:10:0::1;::::0;-1:-1:-1;;;;;1894:10:0::1;1886:38;1915:8;1922:1;1915:6:::0;:8:::1;:::i;:::-;1886:38;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;1942:10:0::1;::::0;-1:-1:-1;;;;;1942:10:0::1;1934:38;1963:8;1970:1;1963:6:::0;:8:::1;:::i;:::-;1934:38;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;1990:10:0::1;1982:46;2011:16;2019:8:::0;2011:7;:16:::1;:::i;:::-;1982:46;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;1533:502;;;;1467:568:::0;;:::o;1316:145::-;1363:10;1149:8;:6;:8::i;:::-;1134:12;:23;1184:15;1167:14;:32;1229:15;1236:7;1229:6;:15::i;:::-;-1:-1:-1;;;;;1210:16:0;;;;;;:7;:16;;;;;;;;:34;;;;1280:12;;1254:14;:23;;;;;;:38;;;;1385:12:::1;:25:::0;;1401:9:::1;::::0;1210:16;1385:25:::1;::::0;1401:9;;1385:25:::1;:::i;:::-;::::0;;;-1:-1:-1;;1430:10:0::1;1420:21;::::0;;;:9:::1;:21;::::0;;;;:34;;1445:9:::1;::::0;1420:21;:34:::1;::::0;1445:9;;1420:34:::1;:::i;:::-;::::0;;;-1:-1:-1;;;1316:145:0:o;2041:200::-;2084:10;1149:8;:6;:8::i;:::-;1134:12;:23;1184:15;1167:14;:32;1229:15;1236:7;1229:6;:15::i;:::-;-1:-1:-1;;;;;1210:16:0;;;;;;:7;:16;;;;;;;;:34;;;;1280:12;;1254:14;:23;;;;;:38;2136:10:::1;2128:19:::0;;;;;;;;;;;2157:23;;;;2190:44;;2136:10;;2190:44;::::1;;;::::0;2128:19;;2190:44;1210:16;2190:44;2128:19;2136:10;2190:44;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;2096:145;2041:200:::0;:::o;2378:183::-;2467:10;;-1:-1:-1;;;;;2467:10:0;2453;:24;2445:66;;;;-1:-1:-1;;;2445:66:0;;692:2:1;2445:66:0;;;674:21:1;731:2;711:18;;;704:30;770:31;750:18;;;743:59;819:18;;2445:66:0;;;;;;;;2521:10;:24;2378:183::o;2571:228::-;2612:4;2627:10;2655;;2640:12;;:25;;;;:::i;:::-;-1:-1:-1;2687:3:0;;2775:4;-1:-1:-1;;2571:228:0:o;14:286:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;168:23;;-1:-1:-1;;;;;220:31:1;;210:42;;200:70;;266:1;263;256:12;200:70;289:5;14:286;-1:-1:-1;;;14:286:1:o;305:180::-;364:6;417:2;405:9;396:7;392:23;388:32;385:52;;;433:1;430;423:12;385:52;-1:-1:-1;456:23:1;;305:180;-1:-1:-1;305:180:1:o;1030:128::-;1070:3;1101:1;1097:6;1094:1;1091:13;1088:39;;;1107:18;;:::i;:::-;-1:-1:-1;1143:9:1;;1030:128::o;1163:217::-;1203:1;1229;1219:132;;1273:10;1268:3;1264:20;1261:1;1254:31;1308:4;1305:1;1298:15;1336:4;1333:1;1326:15;1219:132;-1:-1:-1;1365:9:1;;1163:217::o;1385:168::-;1425:7;1491:1;1487;1483:6;1479:14;1476:1;1473:21;1468:1;1461:9;1454:17;1450:45;1447:71;;;1498:18;;:::i;:::-;-1:-1:-1;1538:9:1;;1385:168::o;1558:125::-;1598:4;1626:1;1623;1620:8;1617:34;;;1631:18;;:::i;:::-;-1:-1:-1;1668:9:1;;1558:125::o;1688:127::-;1749:10;1744:3;1740:20;1737:1;1730:31;1780:4;1777:1;1770:15;1804:4;1801:1;1794:15"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "403800",
"executionCost": "95239",
"totalCost": "499039"
},
"external": {
"_totalSupply()": "2372",
"earned(address)": "infinite",
"getBalance(address)": "2578",
"getReward()": "infinite",
"lastSupply()": "2349",
"lastUpdateTime()": "2327",
"reward()": "infinite",
"rewardRate()": "2328",
"rewardStored()": "2306",
"rewards(address)": "2518",
"setRewardRate(uint256)": "24531",
"stake()": "infinite",
"userRewardPaid(address)": "2494",
"withdraw(uint256)": "infinite"
},
"internal": {
"_getTax()": "4313"
}
},
"methodIdentifiers": {
"_totalSupply()": "3eaaf86b",
"earned(address)": "008cc262",
"getBalance(address)": "f8b2cb4f",
"getReward()": "3d18b912",
"lastSupply()": "f75b8c5f",
"lastUpdateTime()": "c8f33c91",
"reward()": "228cb733",
"rewardRate()": "7b0a47ee",
"rewardStored()": "4367ac7c",
"rewards(address)": "0700037d",
"setRewardRate(uint256)": "9e447fc6",
"stake()": "3a4b66f1",
"userRewardPaid(address)": "ba14f26a",
"withdraw(uint256)": "2e1a7d4d"
}
},
"abi": [
{
"inputs": [],
"name": "_totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "earned",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "getBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getReward",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "lastSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "lastUpdateTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "reward",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "rewardRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "rewardStored",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "rewards",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_rewardRate",
"type": "uint256"
}
],
"name": "setRewardRate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "stake",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "userRewardPaid",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"name": "_totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "earned",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "getBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getReward",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "lastSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "lastUpdateTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "reward",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "rewardRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "rewardStored",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "rewards",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_rewardRate",
"type": "uint256"
}
],
"name": "setRewardRate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "stake",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "userRewardPaid",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/test.sol": "bvb"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/test.sol": {
"keccak256": "0xe1a49732ede60578a7a879c513356c8e88ed8d0f997a08f204150db8ed5b2226",
"license": "UNLICENSED",
"urls": [
"bzz-raw://961419c97c885fe0d134ecf1170954206872041f36f85564a748dfc5291577b1",
"dweb:/ipfs/QmVGoVtoZaQtqF2QrHTjReJPMhyGKA68r2eFvnqYuNJh2z"
]
}
},
"version": 1
}
//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.4;
contract bvb {
uint public rewardRate = 300;
uint public lastUpdateTime;
uint public rewardStored;
mapping(address => uint) public userRewardPaid;
mapping(address => uint) public rewards;
uint public lastSupply;
uint public _totalSupply;
address private ceoWallet1=0x29540536e574F23E7749a4fACbAb3D496F78530E;
address private ceoWallet2=0xbceb9f31a6BB34a969Db5247C2d476BeadAc408F;
address private ceoWallet3=0x26eE92f9813b45344afCc908fBB37b4A615A5D5d;
mapping(address => uint) private _balances;
function reward() public view returns (uint) {
if (_totalSupply == 0) {
return 0;
}
return
rewardStored +
(((block.timestamp - lastUpdateTime) * rewardRate * 1e18) / _totalSupply);
}
function earned(address account) public view returns (uint) {
return
((_balances[account] *
(reward() - userRewardPaid[account])) / 1e18) +
rewards[account];
}
modifier updateReward(address account) {
rewardStored = reward();
lastUpdateTime = block.timestamp;
rewards[account] = earned(account);
userRewardPaid[account] = rewardStored;
_;
}
function stake() payable external updateReward(msg.sender) {
_totalSupply += msg.value;
_balances[msg.sender] += msg.value;
}
function withdraw(uint _amount) external updateReward(msg.sender) {
uint tax = _getTax();
uint totalTax = _amount*tax/10000;
uint restake = totalTax*8/100;
uint devTax = totalTax-restake;
_totalSupply -= _amount;
_balances[msg.sender] -= _amount;
_totalSupply += restake;
lastSupply = _totalSupply;
payable(ceoWallet1).transfer(devTax/3);
payable(ceoWallet2).transfer(devTax/3);
payable(ceoWallet3).transfer(devTax/3);
payable(msg.sender).transfer(_amount-totalTax);
}
function getReward() external updateReward(msg.sender) {
uint rewardWithdraw = rewards[msg.sender];
rewards[msg.sender] = 0;
payable(msg.sender).transfer(rewardWithdraw);
}
function getBalance(address account) public view returns (uint256) {
return
_balances[account];
}
function setRewardRate(uint _rewardRate) public {
require(msg.sender == ceoWallet1, "Only the dev can change that!");
rewardRate = _rewardRate;
}
function _getTax() private view returns (uint){
uint delta = _totalSupply - lastSupply;
uint _tax = 600;
if (delta < 0){
_tax = 2100;
}
return _tax;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment