@intercroneswap/v2-staking
Version:
🎚 Staking smart contracts for interacting with InterCroneswap V2 Staking
803 lines • 196 kB
JSON
{
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_rewardsDistribution",
"type": "address"
},
{
"internalType": "address",
"name": "_rewardsToken",
"type": "address"
},
{
"internalType": "address",
"name": "_stakingToken",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "DepositFee",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "FeeWithdrawal",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "reward",
"type": "uint256"
}
],
"name": "RewardAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "reward",
"type": "uint256"
}
],
"name": "RewardPaid",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Staked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Withdrawn",
"type": "event"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "totalSupply",
"type": "uint256"
}
],
"name": "calcRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "changefee",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "changereferalfee",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "depositFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "earned",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "exit",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "fee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "feeEarning",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "getFeeWithdrawal",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "getReward",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getRewardForDuration",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "owneraddr",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "getRewardamount",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getduration",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "lastTimeRewardApplicable",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "lastUpdateTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "lockaddress",
"type": "address"
},
{
"internalType": "bool",
"name": "lock",
"type": "bool"
}
],
"name": "lockunlockreferal",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "lockaddress",
"type": "address"
},
{
"internalType": "bool",
"name": "lock",
"type": "bool"
}
],
"name": "lockunlockreward",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "reward",
"type": "uint256"
}
],
"name": "notifyRewardAmount",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "periodFinish",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "rewardPerToken",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "rewardPerTokenStored",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "rewardRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "rewardpercentage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "rewards",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "rewardsDistribution",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "rewardsDuration",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "rewardsToken",
"outputs": [
{
"internalType": "contract ITRC20",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "referal",
"type": "address"
}
],
"name": "stake",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "stakeInfos",
"outputs": [
{
"internalType": "uint256",
"name": "totalStaked",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalunstaked",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "gainreward",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "referalreward",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "earnreferalreward",
"type": "uint256"
},
{
"internalType": "bool",
"name": "stake",
"type": "bool"
},
{
"internalType": "address",
"name": "ref",
"type": "address"
},
{
"internalType": "bool",
"name": "rewardlock",
"type": "bool"
},
{
"internalType": "bool",
"name": "referallock",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "stakeWithPermit",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "stakingToken",
"outputs": [
{
"internalType": "contract ITRC20",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "started",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalstakeuser",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "userRewardPerTokenPaid",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "withdraw",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "60806040526000600455600060055560006006556283d6006007556000600855600060095534801561003057600080fd5b5060405161261d38038061261d8339818101604052606081101561005357600080fd5b508051602082015160409092015160018055600280546001600160a01b038086166001600160a01b0319928316179092556003805483851690831617905560008054928516929091169190911790559091906100ad6101f9565b604051806101200160405280600081526020016000815260200160008152602001600081526020016000815260200160011515815260200160006001600160a01b031681526020016000151581526020016000151581525090508060156000866001600160a01b03166001600160a01b03168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a8154816001600160a01b0302191690836001600160a01b0316021790555060e08201518160050160156101000a81548160ff0219169083151502179055506101008201518160050160166101000a81548160ff02191690831515021790555090505050505050610254565b604051806101200160405280600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681526020016000151581526020016000151581525090565b6123ba806102636000396000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806380faa57d11610160578063ddca3f43116100d8578063ebe2b12b1161008c578063ed6c355d11610071578063ed6c355d14610673578063f867540f14610690578063f8fa35bc146106c957610276565b8063ebe2b12b14610633578063ecd9ba821461063b57610276565b8063dfbf9def116100bd578063dfbf9def1461055a578063e3762aa2146105f0578063e9fad8ee1461062b57610276565b8063ddca3f431461054a578063df136d651461055257610276565b8063c8f1ab461161012f578063ca43849911610114578063ca4384991461051d578063cd3daf9d1461053a578063d1af0c7d1461054257610276565b8063c8f1ab461461050d578063c8f33c911461051557610276565b806380faa57d14610482578063871f1df51461048a5780638b876347146104bd578063bf129819146104f057610276565b80633d18b912116101f357806370a08231116101c25780637acb7757116101a75780637acb77571461040e5780637b0a47ee1461044757806380352cfd1461044f57610276565b806370a08231146103d357806372f702f31461040657610276565b80633d18b912146103575780633fc6df6e1461035f5780634b21a971146103905780636ca994b5146103cb57610276565b80631f2698ab1161024a5780632f88c2c71161022f5780632f88c2c71461032a578063386a9525146103325780633c6b16ab1461033a57610276565b80631f2698ab146103035780632e1a7d4d1461030b57610276565b80628cc2621461027b5780630700037d146102c057806318160ddd146102f35780631c1f78eb146102fb575b600080fd5b6102ae6004803603602081101561029157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106d1565b60408051918252519081900360200190f35b6102ae600480360360208110156102d657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610781565b6102ae610793565b6102ae61079a565b6102ae6107b8565b6103286004803603602081101561032157600080fd5b50356107be565b005b6102ae6109dd565b6102ae6109e3565b6103286004803603602081101561035057600080fd5b50356109e9565b610328610cbd565b610367610fb4565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610328600480360360408110156103a657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610fd0565b6102ae6110b2565b6102ae600480360360208110156103e957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166110b8565b6103676110e0565b6103286004803603604081101561042457600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff166110fc565b6102ae6115be565b6102ae6004803603602081101561046557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166115c4565b6102ae6115d6565b610328600480360360208110156104a057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166115e4565b6102ae600480360360208110156104d357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166116e3565b6103286004803603602081101561050657600080fd5b50356116f5565b6102ae61176a565b6102ae611770565b6102ae6004803603602081101561053357600080fd5b5035611776565b6102ae6117ba565b6103676117f9565b6102ae611815565b6102ae61181b565b61058d6004803603602081101561057057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611821565b60408051998a5260208a01989098528888019690965260608801949094526080870192909252151560a086015273ffffffffffffffffffffffffffffffffffffffff1660c0850152151560e0840152151561010083015251908190036101200190f35b6103286004803603604081101561060657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013515156118af565b610328611992565b6102ae6119b5565b610328600480360360a081101561065157600080fd5b5080359060208101359060ff60408201351690606081013590608001356119bb565b6103286004803603602081101561068957600080fd5b5035611bc8565b610328600480360360408110156106a657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611c3d565b6102ae611d4d565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260106020908152604080832054600f90925282205461077b919061076f90670de0b6b3a76400009061076390610731906107256117ba565b9063ffffffff611d5316565b73ffffffffffffffffffffffffffffffffffffffff88166000908152601360205260409020549063ffffffff611dca16565b9063ffffffff611e4416565b9063ffffffff611ec816565b92915050565b60106020526000908152604090205481565b6012545b90565b60006107b3600754600554611dca90919063ffffffff16565b905090565b600b5481565b60018054810190819055336107d16117ba565b600d556107dc6115d6565b600c5573ffffffffffffffffffffffffffffffffffffffff81161561083d57610804816106d1565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260106020908152604080832093909355600d54600f909152919020555b600083116108ac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f43616e6e6f742077697468647261772030000000000000000000000000000000604482015290519081900360640190fd5b6012546108bf908463ffffffff611d5316565b601255336000908152601360205260409020546108e2908463ffffffff611d5316565b3360008181526013602052604090209190915560035461091b9173ffffffffffffffffffffffffffffffffffffffff9091169085611f3c565b33600081815260156020908152604091829020600101805487019055815186815291517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59281900390910190a25060015481146109d957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b5050565b600e5481565b60075481565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061235c602a913960400191505060405180910390fd5b6000610a636117ba565b600d55610a6e6115d6565b600c5573ffffffffffffffffffffffffffffffffffffffff811615610acf57610a96816106d1565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260106020908152604080832093909355600d54600f909152919020555b6004544210610af457600754610aec90839063ffffffff611e4416565b600555610b43565b600454600090610b0a904263ffffffff611d5316565b90506000610b2360055483611dca90919063ffffffff16565b600754909150610b3d90610763868463ffffffff611ec816565b60055550505b600254604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015610bb457600080fd5b505afa158015610bc8573d6000803e3d6000fd5b505050506040513d6020811015610bde57600080fd5b5051600754909150610bf790829063ffffffff611e4416565b6005541115610c6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f50726f76696465642072657761726420746f6f20686967680000000000000000604482015290519081900360640190fd5b42600c819055600754610c8190829063ffffffff611ec816565b6004556040805185815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a150505050565b6001805481019081905533610cd06117ba565b600d55610cdb6115d6565b600c5573ffffffffffffffffffffffffffffffffffffffff811615610d3c57610d03816106d1565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260106020908152604080832093909355600d54600f909152919020555b336000908152601060205260409020548015801590610d875750336000908152601560205260409020600501547501000000000000000000000000000000000000000000900460ff16155b15610f3f57336000908152601060205260408120819055600954606490610db590849063ffffffff611dca16565b81610dbc57fe5b0490506000610dd1838363ffffffff611d5316565b600254909150610dfe9073ffffffffffffffffffffffffffffffffffffffff16338363ffffffff611f3c16565b33600090815260156020526040902060050154610100900473ffffffffffffffffffffffffffffffffffffffff168015610e8f57600254610e5c9073ffffffffffffffffffffffffffffffffffffffff16828563ffffffff611f3c16565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601560205260409020600401805484019055610eee565b600054600254610ebf9173ffffffffffffffffffffffffffffffffffffffff91821691168563ffffffff611f3c16565b6000805473ffffffffffffffffffffffffffffffffffffffff1681526015602052604090206004018054840190555b33600081815260156020908152604091829020600201805486019055815187815291517fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e04869281900390910190a25050505b50506001548114610fb157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b50565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314611040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061235c602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff909116600090815260156020526040902060050180549115157501000000000000000000000000000000000000000000027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff909216919091179055565b60095481565b73ffffffffffffffffffffffffffffffffffffffff1660009081526013602052604090205490565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b600180548101908190553361110f6117ba565b600d5561111a6115d6565b600c5573ffffffffffffffffffffffffffffffffffffffff81161561117b57611142816106d1565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260106020908152604080832093909355600d54600f909152919020555b600084116111ea57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f43616e6e6f74207374616b652030000000000000000000000000000000000000604482015290519081900360640190fd5b6000606461120360085487611dca90919063ffffffff16565b8161120a57fe5b6000805473ffffffffffffffffffffffffffffffffffffffff1681526011602052604090208054929091049182019055905061124c858263ffffffff611d5316565b601254909550611262908663ffffffff611ec816565b60125533600090815260136020526040902054611285908663ffffffff611ec816565b336000818152601360205260409020919091556112d490306112ad888563ffffffff611ec816565b60035473ffffffffffffffffffffffffffffffffffffffff1692919063ffffffff611fc916565b3360009081526015602052604090206005015460ff16151560011415611317573360009081526015602052604090208054860190556006805460010190556114da565b61131f6122a8565b604080516101208101825233600090815260156020529190912054819061134c908963ffffffff611ec816565b815260006020808301829052604080840183905260608085018490526080808601859052600160a080880182905273ffffffffffffffffffffffffffffffffffffffff808f1660c0808b019190915260e0808b018a90526101009a8b018a9052338a5260158952988790208b518155978b01519388019390935594890151600287015592880151600386015590870151600485015590860151600590930180549187015194870151968601511515760100000000000000000000000000000000000000000000027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff9715157501000000000000000000000000000000000000000000027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff969094169096027fffffffffffffffffffffff0000000000000000000000000000000000000000ff9415157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0093909316929092179390931617929092169190911792909216179055505b60408051868152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a26040805182815290516000917fe978212c025bb06e911a95dea3ce2ab103251bfb63891d729191b249fa2dddfc919081900360200190a2505060015481146115b957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b505050565b60055481565b60116020526000908152604090205481565b60006107b342600454612064565b60005473ffffffffffffffffffffffffffffffffffffffff163314611654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061235c602a913960400191505060405180910390fd5b3360008181526011602052604090205460035490916116909173ffffffffffffffffffffffffffffffffffffffff16908363ffffffff611f3c16565b600a80548201905533600081815260116020908152604080832092909255815184815291517fee33a3a9cb48e4ff209f8b1c67c4632f1dbbf55aeff8e6f17d957ade7a6fb17c9281900390910190a25050565b600f6020526000908152604090205481565b60005473ffffffffffffffffffffffffffffffffffffffff163314611765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061235c602a913960400191505060405180910390fd5b600855565b60065481565b600c5481565b600061077b6117ab83610763670de0b6b3a764000061179f60055461179f600c546107256115d6565b9063ffffffff611dca16565b600d549063ffffffff611ec816565b6000601254600014156117d05750600d54610797565b6107b36117ab601254610763670de0b6b3a764000061179f60055461179f600c546107256115d6565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b600d5481565b601560205260009081526040902080546001820154600283015460038401546004850154600590950154939492939192909160ff8082169173ffffffffffffffffffffffffffffffffffffffff610100820416917501000000000000000000000000000000000000000000820481169176010000000000000000000000000000000000000000000090041689565b60005473ffffffffffffffffffffffffffffffffffffffff16331461191f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061235c602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff90911660009081526015602052604090206005018054911515760100000000000000000000000000000000000000000000027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b336000908152601360205260409020546119ab906107be565b6119b3610cbd565b565b60045481565b60018054810190819055336119ce6117ba565b600d556119d96115d6565b600c5573ffffffffffffffffffffffffffffffffffffffff811615611a3a57611a01816106d1565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260106020908152604080832093909355600d54600f909152919020555b60008711611aa957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f43616e6e6f74207374616b652030000000000000000000000000000000000000604482015290519081900360640190fd5b601254611abc908863ffffffff611ec816565b60125533600090815260136020526040902054611adf908863ffffffff611ec816565b33600081815260136020526040902091909155600354611b199173ffffffffffffffffffffffffffffffffffffffff90911690308a611fc9565b60408051888152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a2506001548114611bc057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611c38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061235c602a913960400191505060405180910390fd5b600955565b60005473ffffffffffffffffffffffffffffffffffffffff163314611cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061235c602a913960400191505060405180910390fd5b6000611cb76117ba565b600d55611cc26115d6565b600c5573ffffffffffffffffffffffffffffffffffffffff811615611d2357611cea816106d1565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260106020908152604080832093909355600d54600f909152919020555b6002546115b99073ffffffffffffffffffffffffffffffffffffffff16848463ffffffff611f3c16565b600a5481565b600082821115611dc457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082611dd95750600061077b565b82820282848281611de657fe5b0414611e3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806123116021913960400191505060405180910390fd5b9392505050565b6000808211611eb457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481611ebf57fe5b04949350505050565b600082820183811015611e3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526115b990849061207a565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261205e90859061207a565b50505050565b60008183106120735781611e3d565b5090919050565b612083826122a2565b6120ee57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5361666554524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061215757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161211a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146121b9576040519150601f19603f3d011682016040523d82523d6000602084013e6121be565b606091505b50915091508161222f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5361666554524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561205e5780806020019051602081101561224b57600080fd5b505161205e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612332602a913960400191505060405180910390fd5b3b151590565b6040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152602001600015158152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666554524332303a205452433230206f7065726174696f6e20646964206e6f74207375636365656443616c6c6572206973206e6f742052657761726473446973747269627574696f6e20636f6e7472616374a265627a7a723158201eda00b13d49026230b2186a343b68ca51e74834e0db86e429e28dede0af278f64736f6c634300050c0032",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0x4 SSTORE PUSH1 0x0 PUSH1 0x5 SSTORE PUSH1 0x0 PUSH1 0x6 SSTORE PUSH3 0x83D600 PUSH1 0x7 SSTORE PUSH1 0x0 PUSH1 0x8 SSTORE PUSH1 0x0 PUSH1 0x9 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x261D CODESIZE SUB DUP1 PUSH2 0x261D DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD PUSH1 0x1 DUP1 SSTORE PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x3 DUP1 SLOAD DUP4 DUP6 AND SWAP1 DUP4 AND OR SWAP1 SSTORE PUSH1 0x0 DUP1 SLOAD SWAP3 DUP6 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE SWAP1 SWAP2 SWAP1 PUSH2 0xAD PUSH2 0x1F9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 POP DUP1 PUSH1 0x15 PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD SSTORE PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0xC0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xE0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x15 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x100 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x16 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP SWAP1 POP POP POP POP POP POP PUSH2 0x254 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH2 0x23BA DUP1 PUSH2 0x263 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x276 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80FAA57D GT PUSH2 0x160 JUMPI DUP1 PUSH4 0xDDCA3F43 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xEBE2B12B GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xED6C355D GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xED6C355D EQ PUSH2 0x673 JUMPI DUP1 PUSH4 0xF867540F EQ PUSH2 0x690 JUMPI DUP1 PUSH4 0xF8FA35BC EQ PUSH2 0x6C9 JUMPI PUSH2 0x276 JUMP JUMPDEST DUP1 PUSH4 0xEBE2B12B EQ PUSH2 0x633 JUMPI DUP1 PUSH4 0xECD9BA82 EQ PUSH2 0x63B JUMPI PUSH2 0x276 JUMP JUMPDEST DUP1 PUSH4 0xDFBF9DEF GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xDFBF9DEF EQ PUSH2 0x55A JUMPI DUP1 PUSH4 0xE3762AA2 EQ PUSH2 0x5F0 JUMPI DUP1 PUSH4 0xE9FAD8EE EQ PUSH2 0x62B JUMPI PUSH2 0x276 JUMP JUMPDEST DUP1 PUSH4 0xDDCA3F43 EQ PUSH2 0x54A JUMPI DUP1 PUSH4 0xDF136D65 EQ PUSH2 0x552 JUMPI PUSH2 0x276 JUMP JUMPDEST DUP1 PUSH4 0xC8F1AB46 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0xCA438499 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xCA438499 EQ PUSH2 0x51D JUMPI DUP1 PUSH4 0xCD3DAF9D EQ PUSH2 0x53A JUMPI DUP1 PUSH4 0xD1AF0C7D EQ PUSH2 0x542 JUMPI PUSH2 0x276 JUMP JUMPDEST DUP1 PUSH4 0xC8F1AB46 EQ PUSH2 0x50D JUMPI DUP1 PUSH4 0xC8F33C91 EQ PUSH2 0x515 JUMPI PUSH2 0x276 JUMP JUMPDEST DUP1 PUSH4 0x80FAA57D EQ PUSH2 0x482 JUMPI DUP1 PUSH4 0x871F1DF5 EQ PUSH2 0x48A JUMPI DUP1 PUSH4 0x8B876347 EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0xBF129819 EQ PUSH2 0x4F0 JUMPI PUSH2 0x276 JUMP JUMPDEST DUP1 PUSH4 0x3D18B912 GT PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x70A08231 GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x7ACB7757 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x7ACB7757 EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0x7B0A47EE EQ PUSH2 0x447 JUMPI DUP1 PUSH4 0x80352CFD EQ PUSH2 0x44F JUMPI PUSH2 0x276 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x3D3 JUMPI DUP1 PUSH4 0x72F702F3 EQ PUSH2 0x406 JUMPI PUSH2 0x276 JUMP JUMPDEST DUP1 PUSH4 0x3D18B912 EQ PUSH2 0x357 JUMPI DUP1 PUSH4 0x3FC6DF6E EQ PUSH2 0x35F JUMPI DUP1 PUSH4 0x4B21A971 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0x6CA994B5 EQ PUSH2 0x3CB JUMPI PUSH2 0x276 JUMP JUMPDEST DUP1 PUSH4 0x1F2698AB GT PUSH2 0x24A JUMPI DUP1 PUSH4 0x2F88C2C7 GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x2F88C2C7 EQ PUSH2 0x32A JUMPI DUP1 PUSH4 0x386A9525 EQ PUSH2 0x332 JUMPI DUP1 PUSH4 0x3C6B16AB EQ PUSH2 0x33A JUMPI PUSH2 0x276 JUMP JUMPDEST DUP1 PUSH4 0x1F2698AB EQ PUSH2 0x303 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x30B JUMPI PUSH2 0x276 JUMP JUMPDEST DUP1 PUSH3 0x8CC262 EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0x700037D EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0x1C1F78EB EQ PUSH2 0x2FB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6D1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x781 JUMP JUMPDEST PUSH2 0x2AE PUSH2 0x793 JUMP JUMPDEST PUSH2 0x2AE PUSH2 0x79A JUMP JUMPDEST PUSH2 0x2AE PUSH2 0x7B8 JUMP JUMPDEST PUSH2 0x328 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x321 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7BE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2AE PUSH2 0x9DD JUMP JUMPDEST PUSH2 0x2AE PUSH2 0x9E3 JUMP JUMPDEST PUSH2 0x328 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x350 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9E9 JUMP JUMPDEST PUSH2 0x328 PUSH2 0xCBD JUMP JUMPDEST PUSH2 0x367 PUSH2 0xFB4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x328 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xFD0 JUMP JUMPDEST PUSH2 0x2AE PUSH2 0x10B2 JUMP JUMPDEST PUSH2 0x2AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x10B8 JUMP JUMPDEST PUSH2 0x367 PUSH2 0x10E0 JUMP JUMPDEST PUSH2 0x328 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x10FC JUMP JUMPDEST PUSH2 0x2AE PUSH2 0x15BE JUMP JUMPDEST PUSH2 0x2AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x15C4 JUMP JUMPDEST PUSH2 0x2AE PUSH2 0x15D6 JUMP JUMPDEST PUSH2 0x328 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x15E4 JUMP JUMPDEST PUSH2 0x2AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x16E3 JUMP JUMPDEST PUSH2 0x328 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x506 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x16F5 JUMP JUMPDEST PUSH2 0x2AE PUSH2 0x176A JUMP JUMPDEST PUSH2 0x2AE PUSH2 0x1770 JUMP JUMPDEST PUSH2 0x2AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x533 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1776 JUMP JUMPDEST PUSH2 0x2AE PUSH2 0x17BA JUMP JUMPDEST PUSH2 0x367 PUSH2 0x17F9 JUMP JUMPDEST PUSH2 0x2AE PUSH2 0x1815 JUMP JUMPDEST PUSH2 0x2AE PUSH2 0x181B JUMP JUMPDEST PUSH2 0x58D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1821 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP10 DUP11 MSTORE PUSH1 0x20 DUP11 ADD SWAP9 SWAP1 SWAP9 MSTORE DUP9 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x60 DUP9 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x80 DUP8 ADD SWAP3 SWAP1 SWAP3 MSTORE ISZERO ISZERO PUSH1 0xA0 DUP7 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xC0 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0xE0 DUP5 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x120 ADD SWAP1 RETURN JUMPDEST PUSH2 0x328 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x606 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x18AF JUMP JUMPDEST PUSH2 0x328 PUSH2 0x1992 JUMP JUMPDEST PUSH2 0x2AE PUSH2 0x19B5 JUMP JUMPDEST PUSH2 0x328 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x651 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x19BB JUMP JUMPDEST PUSH2 0x328 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1BC8 JUMP JUMPDEST PUSH2 0x328 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1C3D JUMP JUMPDEST PUSH2 0x2AE PUSH2 0x1D4D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0xF SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD PUSH2 0x77B SWAP2 SWAP1 PUSH2 0x76F SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 PUSH2 0x763 SWAP1 PUSH2 0x731 SWAP1 PUSH2 0x725 PUSH2 0x17BA JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1D53 AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1DCA AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1E44 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x1EC8 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x12 SLOAD JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B3 PUSH1 0x7 SLOAD PUSH1 0x5 SLOAD PUSH2 0x1DCA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD DUP2 ADD SWAP1 DUP2 SWAP1 SSTORE CALLER PUSH2 0x7D1 PUSH2 0x17BA JUMP JUMPDEST PUSH1 0xD SSTORE PUSH2 0x7DC PUSH2 0x15D6 JUMP JUMPDEST PUSH1 0xC SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x83D JUMPI PUSH2 0x804 DUP2 PUSH2 0x6D1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x10 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0xD SLOAD PUSH1 0xF SWAP1 SWAP2 MSTORE SWAP2 SWAP1 KECCAK256 SSTORE JUMPDEST PUSH1 0x0 DUP4 GT PUSH2 0x8AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742077697468647261772030000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x12 SLOAD PUSH2 0x8BF SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1D53 AND JUMP JUMPDEST PUSH1 0x12 SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x8E2 SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x1D53 AND JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x3 SLOAD PUSH2 0x91B SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP6 PUSH2 0x1F3C JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x15 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD DUP8 ADD