Files
protocol/packages/contract-artifacts/artifacts/StakingProxy.json

390 lines
43 KiB
JSON
Generated

{
"schemaVersion": "2.0.0",
"contractName": "StakingProxy",
"compilerOutput": {
"abi": [
{
"inputs": [{ "internalType": "address", "name": "_stakingContract", "type": "address" }],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "target", "type": "address" },
{ "indexed": true, "internalType": "address", "name": "caller", "type": "address" }
],
"name": "AuthorizedAddressAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "target", "type": "address" },
{ "indexed": true, "internalType": "address", "name": "caller", "type": "address" }
],
"name": "AuthorizedAddressRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" },
{ "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" }
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "newStakingContractAddress",
"type": "address"
}
],
"name": "StakingContractAttachedToProxy",
"type": "event"
},
{ "anonymous": false, "inputs": [], "name": "StakingContractDetachedFromProxy", "type": "event" },
{ "payable": true, "stateMutability": "payable", "type": "fallback" },
{
"constant": false,
"inputs": [{ "internalType": "address", "name": "target", "type": "address" }],
"name": "addAuthorizedAddress",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"name": "aggregatedStatsByEpoch",
"outputs": [
{ "internalType": "uint256", "name": "rewardsAvailable", "type": "uint256" },
{ "internalType": "uint256", "name": "numPoolsToFinalize", "type": "uint256" },
{ "internalType": "uint256", "name": "totalFeesCollected", "type": "uint256" },
{ "internalType": "uint256", "name": "totalWeightedStake", "type": "uint256" },
{ "internalType": "uint256", "name": "totalRewardsFinalized", "type": "uint256" }
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "assertValidStorageParams",
"outputs": [],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [{ "internalType": "address", "name": "_stakingContract", "type": "address" }],
"name": "attachStakingContract",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"name": "authorities",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [{ "internalType": "address", "name": "", "type": "address" }],
"name": "authorized",
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [{ "internalType": "bytes[]", "name": "data", "type": "bytes[]" }],
"name": "batchExecute",
"outputs": [{ "internalType": "bytes[]", "name": "batchReturnData", "type": "bytes[]" }],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "cobbDouglasAlphaDenominator",
"outputs": [{ "internalType": "uint32", "name": "", "type": "uint32" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "cobbDouglasAlphaNumerator",
"outputs": [{ "internalType": "uint32", "name": "", "type": "uint32" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "currentEpoch",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "currentEpochStartTimeInSeconds",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "detachStakingContract",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "epochDurationInSeconds",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getAuthorizedAddresses",
"outputs": [{ "internalType": "address[]", "name": "", "type": "address[]" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "lastPoolId",
"outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "minimumPoolStake",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [{ "internalType": "address", "name": "", "type": "address" }],
"name": "poolIdByMaker",
"outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{ "internalType": "bytes32", "name": "", "type": "bytes32" },
{ "internalType": "uint256", "name": "", "type": "uint256" }
],
"name": "poolStatsByEpoch",
"outputs": [
{ "internalType": "uint256", "name": "feesCollected", "type": "uint256" },
{ "internalType": "uint256", "name": "weightedStake", "type": "uint256" },
{ "internalType": "uint256", "name": "membersStake", "type": "uint256" }
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [{ "internalType": "address", "name": "target", "type": "address" }],
"name": "removeAuthorizedAddress",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{ "internalType": "address", "name": "target", "type": "address" },
{ "internalType": "uint256", "name": "index", "type": "uint256" }
],
"name": "removeAuthorizedAddressAtIndex",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "rewardDelegatedStakeWeight",
"outputs": [{ "internalType": "uint32", "name": "", "type": "uint32" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
"name": "rewardsByPoolId",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "stakingContract",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [{ "internalType": "address", "name": "", "type": "address" }],
"name": "validExchanges",
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "wethReservedForPoolRewards",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"methods": {
"addAuthorizedAddress(address)": {
"details": "Authorizes an address.",
"params": { "target": "Address to authorize." }
},
"assertValidStorageParams()": { "details": "Asserts that an epoch is between 5 and 30 days long." },
"attachStakingContract(address)": {
"details": "Attach a staking contract; future calls will be delegated to the staking contract. Note that this is callable only by an authorized address.",
"params": { "_stakingContract": "Address of staking contract." }
},
"batchExecute(bytes[])": {
"details": "Batch executes a series of calls to the staking contract.",
"params": {
"data": "An array of data that encodes a sequence of functions to call in the staking contracts."
}
},
"constructor": {
"details": "Constructor.",
"params": { "_stakingContract": "Staking contract to delegate calls to." }
},
"detachStakingContract()": {
"details": "Detach the current staking contract. Note that this is callable only by an authorized address."
},
"getAuthorizedAddresses()": {
"details": "Gets all authorized addresses.",
"return": "Array of authorized addresses."
},
"removeAuthorizedAddress(address)": {
"details": "Removes authorizion of an address.",
"params": { "target": "Address to remove authorization from." }
},
"removeAuthorizedAddressAtIndex(address,uint256)": {
"details": "Removes authorizion of an address.",
"params": {
"index": "Index of target in authorities array.",
"target": "Address to remove authorization from."
}
}
}
},
"evm": {
"bytecode": {
"object": "0x60806040523480156200001157600080fd5b5060405162001ee938038062001ee983398101604081905262000034916200071a565b600080546001600160a01b031916339081179091556200005d906001600160e01b036200008e16565b62000071816001600160e01b036200019116565b620000873360006001600160e01b03620002b716565b50620007d0565b6001600160a01b038116620000c757620000c7620000b66200046060201b620012bd1760201c565b6200049860201b62000efc1760201c565b6001600160a01b03811660009081526001602052604090205460ff1615620001035762000103620000b682620004a060201b620012f41760201c565b6001600160a01b0381166000818152600160208190526040808320805460ff19168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b03191684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b600380546001600160a01b0319166001600160a01b0383161790556040517f048368388f801041f7690185c4e28b6f3505c740c47be8ac104b55df666bfc8490620001de90839062000786565b60405180910390a160035460408051600481526024810182526020810180516001600160e01b03167fe1c7392a0000000000000000000000000000000000000000000000000000000017905290516000926060926001600160a01b03909116916200024a91906200074a565b600060405180830381855af49150503d806000811462000287576040519150601f19603f3d011682016040523d82523d6000602084013e6200028c565b606091505b5091509150816200029f57805160208201fd5b620002b26001600160e01b036200050e16565b505050565b6001600160a01b03821660009081526001602052604090205460ff16620002f257620002f2620000b683620005e960201b62000e5d1760201c565b60025481106200031c576200031c620000b6826002805490506200060660201b6200130f1760201c565b816001600160a01b0316600282815481106200033457fe5b6000918252602090912001546001600160a01b0316146200038d576200038d620000b6600283815481106200036557fe5b600091825260209182902001546001600160a01b03169085906200132c62000677821b17901c565b6001600160a01b0382166000908152600160205260409020805460ff19169055600280546000198101908110620003c057fe5b600091825260209091200154600280546001600160a01b039092169183908110620003e757fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600280546000190190620004259082620006d8565b5060405133906001600160a01b038416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b60408051808201909152600481527f57654fe40000000000000000000000000000000000000000000000000000000060208201525b90565b805160208201fd5b606063de16f1a060e01b82604051602401620004bd919062000786565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b6011546206978081108062000525575062278d0081115b15620005465762000546620000b660046200069660201b6200118a1760201c565b60145463ffffffff6401000000008204811691168110806200056c575063ffffffff8116155b156200058d576200058d620000b660006200069660201b6200118a1760201c565b601254620f424063ffffffff9091161115620005be57620005be620000b660016200069660201b6200118a1760201c565b60026013541015620005e557620005e5620000b660036200069660201b6200118a1760201c565b5050565b606063eb5108a260e01b82604051602401620004bd919062000786565b606063e9f8377160e01b838360405160240162000625929190620007b4565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b606063140a84db60e01b8383604051602401620006259291906200079a565b60607ffc45bd1100000000000000000000000000000000000000000000000000000000826004811115620006c657fe5b604051602401620004bd9190620007c2565b815481835581811115620002b257600083815260209020620002b29181019083016200049591905b8082111562000716576000815560010162000700565b5090565b6000602082840312156200072c578081fd5b81516001600160a01b038116811462000743578182fd5b9392505050565b60008251815b818110156200076c576020818601810151858301520162000750565b818111156200077b5782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b918252602082015260400190565b60ff91909116815260200190565b61170980620007e06000396000f3fe6080604052600436106101ac5760003560e01c80638da5cb5b116100ec578063c6f3a4271161008a578063e8eeb3f811610064578063e8eeb3f814610511578063ee99205c14610526578063f18765321461053b578063f2fde38b1461055b576101ac565b8063c6f3a427146104c5578063d39de6e9146104da578063e0ee036e146104fc576101ac565b8063a657e579116100c6578063a657e5791461045b578063b053152414610470578063b918161114610485578063c18c9141146104a5576101ac565b80638da5cb5b146104115780639ad2674414610426578063a26171e214610446576101ac565b80635bd4ab73116101595780637071293911610133578063707129391461038d57806376671808146103ad57806381666796146103c2578063856a65eb146103e4576101ac565b80635bd4ab731461032b578063634038011461035857806366615d561461036d576101ac565b806342f1181e1161018a57806342f1181e146102bc578063494503d4146102dc578063587da02314610309576101ac565b80632a94c2791461023c57806337b006a61461027457806338229d931461028b575b60035460405160009160609173ffffffffffffffffffffffffffffffffffffffff909116906101de908490369061149b565b600060405180830381855af49150503d8060008114610219576040519150601f19603f3d011682016040523d82523d6000602084013e61021e565b606091505b5091509150816000811461023457815182602001f35b815182602001fd5b34801561024857600080fd5b5061025c61025736600461147a565b61057b565b60405161026b9392919061163e565b60405180910390f35b34801561028057600080fd5b506102896105a7565b005b34801561029757600080fd5b506102ab6102a6366004611462565b610602565b60405161026b959493929190611654565b3480156102c857600080fd5b506102896102d73660046113aa565b610631565b3480156102e857600080fd5b506102fc6102f7366004611462565b610645565b60405161026b91906114c7565b34801561031557600080fd5b5061031e610679565b60405161026b9190611627565b34801561033757600080fd5b5061034b6103463660046113aa565b61067f565b60405161026b919061161c565b34801561036457600080fd5b5061031e610694565b34801561037957600080fd5b506102896103883660046113aa565b61069a565b34801561039957600080fd5b506102896103a83660046113aa565b6106ab565b3480156103b957600080fd5b5061031e610765565b3480156103ce57600080fd5b506103d761076b565b60405161026b9190611677565b3480156103f057600080fd5b506104046103ff3660046113f6565b610777565b60405161026b9190611568565b34801561041d57600080fd5b506102fc610904565b34801561043257600080fd5b506102896104413660046113cc565b610920565b34801561045257600080fd5b5061031e610932565b34801561046757600080fd5b5061031e610938565b34801561047c57600080fd5b5061031e61093e565b34801561049157600080fd5b5061034b6104a03660046113aa565b610944565b3480156104b157600080fd5b5061031e6104c0366004611462565b610959565b3480156104d157600080fd5b5061028961096b565b3480156104e657600080fd5b506104ef610a04565b60405161026b919061150f565b34801561050857600080fd5b506103d7610a74565b34801561051d57600080fd5b506103d7610a80565b34801561053257600080fd5b506102fc610a94565b34801561054757600080fd5b5061031e6105563660046113aa565b610ab0565b34801561056757600080fd5b506102896105763660046113aa565b610ac2565b601560209081526000928352604080842090915290825290208054600182015460029092015490919083565b6105af610b65565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556040517f6caedcb22a5c22c8ebd0caf751fec1228a6e006e6ee37169321e02d31ecc818390600090a1565b601660205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b610639610b8a565b61064281610bd1565b50565b6002818154811061065257fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b600d5481565b60106020526000908152604090205460ff1681565b60115481565b6106a2610b65565b61064281610d02565b6106b3610b8a565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff166106f1576106f16106ec82610e5d565b610efc565b60005b600254811015610761578173ffffffffffffffffffffffffffffffffffffffff166002828154811061072257fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415610759576107548282610f04565b610761565b6001016106f4565b5050565b600c5481565b60145463ffffffff1681565b604080518281526020808402820101909152606090600090829084908180156107b457816020015b606081526020019060019003908161079f5790505b5060035490945073ffffffffffffffffffffffffffffffffffffffff16806107e1576107e16106ec611153565b60005b8281146108f8578173ffffffffffffffffffffffffffffffffffffffff1688888381811061080e57fe5b6020028201905080357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe13684900301811261084857600080fd5b9091016020810191503567ffffffffffffffff81111561086757600080fd5b3681900382131561087757600080fd5b60405161088592919061149b565b600060405180830381855af49150503d80600081146108c0576040519150601f19603f3d011682016040523d82523d6000602084013e6108c5565b606091505b509095509350846108d857835184602001fd5b838682815181106108e557fe5b60209081029190910101526001016107e4565b50505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b610928610b8a565b6107618282610f04565b60135481565b60085481565b60175481565b60016020526000908152604090205460ff1681565b600b6020526000908152604090205481565b60115462069780811080610981575062278d0081115b15610993576109936106ec600461118a565b60145463ffffffff6401000000008204811691168110806109b8575063ffffffff8116155b156109ca576109ca6106ec600061118a565b601254620f424063ffffffff90911611156109ec576109ec6106ec600161118a565b60026013541015610761576107616106ec600361118a565b60606002805480602002602001604051908101604052809291908181526020018280548015610a6957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a3e575b505050505090505b90565b60125463ffffffff1681565b601454640100000000900463ffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60096020526000908152604090205481565b610aca610b8a565b73ffffffffffffffffffffffffffffffffffffffff8116610af557610af06106ec6111c9565b610642565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b3360009081526001602052604090205460ff16610b8857610b886106ec33611200565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b8857600054610b88906106ec90339073ffffffffffffffffffffffffffffffffffffffff1661121b565b73ffffffffffffffffffffffffffffffffffffffff8116610bf757610bf76106ec6112bd565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1615610c3157610c316106ec826112f4565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790556040517f048368388f801041f7690185c4e28b6f3505c740c47be8ac104b55df666bfc8490610d729083906114c7565b60405180910390a160035460408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe1c7392a00000000000000000000000000000000000000000000000000000000179052905160009260609273ffffffffffffffffffffffffffffffffffffffff90911691610dfe91906114ab565b600060405180830381855af49150503d8060008114610e39576040519150601f19603f3d011682016040523d82523d6000602084013e610e3e565b606091505b509150915081610e5057805160208201fd5b610e5861096b565b505050565b606063eb5108a260e01b82604051602401610e7891906114c7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b805160208201fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16610f3d57610f3d6106ec83610e5d565b6002548110610f5857610f586106ec8260028054905061130f565b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110610f7c57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610fde57610fde6106ec60028381548110610fb657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff168461132c565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061105957fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff909216918390811061108c57fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061110b9082611349565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b60408051808201909152600481527f6eff828500000000000000000000000000000000000000000000000000000000602082015290565b60607ffc45bd11000000000000000000000000000000000000000000000000000000008260048111156111b957fe5b604051602401610e789190611688565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b606063b65a25b960e01b82604051602401610e7891906114c7565b6060631de45ad160e01b83836040516024016112389291906114e8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b60408051808201909152600481527f57654fe400000000000000000000000000000000000000000000000000000000602082015290565b606063de16f1a060e01b82604051602401610e7891906114c7565b606063e9f8377160e01b8383604051602401611238929190611630565b606063140a84db60e01b83836040516024016112389291906114e8565b815481835581811115610e5857600083815260209020610e58918101908301610a7191905b80821115611382576000815560010161136e565b5090565b803573ffffffffffffffffffffffffffffffffffffffff811681146108fe57600080fd5b6000602082840312156113bb578081fd5b6113c58383611386565b9392505050565b600080604083850312156113de578081fd5b6113e88484611386565b946020939093013593505050565b60008060208385031215611408578182fd5b823567ffffffffffffffff8082111561141f578384fd5b81850186601f820112611430578485fd5b8035925081831115611440578485fd5b8660208085028301011115611453578485fd5b60200196919550909350505050565b600060208284031215611473578081fd5b5035919050565b6000806040838503121561148c578182fd5b50508035926020909101359150565b6000828483379101908152919050565b600082516114bd818460208701611696565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b602080825282518282018190526000918401906040840190835b8181101561155d57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101611529565b509095945050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b8281101561160f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452815180518087526115d2818989018a8501611696565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169590950186019450928501929085019060010161158d565b5092979650505050505050565b901515815260200190565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b948552602085019390935260408401919091526060830152608082015260a00190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b60005b838110156116b1578181015183820152602001611699565b838111156116c0576000848401525b5050505056fea365627a7a72315820234dbfb1979e729e4b90ba58749ef12a931b7df77beb672b5d45d410d232fff36c6578706572696d656e74616cf564736f6c634300050c0040"
},
"deployedBytecode": {
"object": "0x6080604052600436106101ac5760003560e01c80638da5cb5b116100ec578063c6f3a4271161008a578063e8eeb3f811610064578063e8eeb3f814610511578063ee99205c14610526578063f18765321461053b578063f2fde38b1461055b576101ac565b8063c6f3a427146104c5578063d39de6e9146104da578063e0ee036e146104fc576101ac565b8063a657e579116100c6578063a657e5791461045b578063b053152414610470578063b918161114610485578063c18c9141146104a5576101ac565b80638da5cb5b146104115780639ad2674414610426578063a26171e214610446576101ac565b80635bd4ab73116101595780637071293911610133578063707129391461038d57806376671808146103ad57806381666796146103c2578063856a65eb146103e4576101ac565b80635bd4ab731461032b578063634038011461035857806366615d561461036d576101ac565b806342f1181e1161018a57806342f1181e146102bc578063494503d4146102dc578063587da02314610309576101ac565b80632a94c2791461023c57806337b006a61461027457806338229d931461028b575b60035460405160009160609173ffffffffffffffffffffffffffffffffffffffff909116906101de908490369061149b565b600060405180830381855af49150503d8060008114610219576040519150601f19603f3d011682016040523d82523d6000602084013e61021e565b606091505b5091509150816000811461023457815182602001f35b815182602001fd5b34801561024857600080fd5b5061025c61025736600461147a565b61057b565b60405161026b9392919061163e565b60405180910390f35b34801561028057600080fd5b506102896105a7565b005b34801561029757600080fd5b506102ab6102a6366004611462565b610602565b60405161026b959493929190611654565b3480156102c857600080fd5b506102896102d73660046113aa565b610631565b3480156102e857600080fd5b506102fc6102f7366004611462565b610645565b60405161026b91906114c7565b34801561031557600080fd5b5061031e610679565b60405161026b9190611627565b34801561033757600080fd5b5061034b6103463660046113aa565b61067f565b60405161026b919061161c565b34801561036457600080fd5b5061031e610694565b34801561037957600080fd5b506102896103883660046113aa565b61069a565b34801561039957600080fd5b506102896103a83660046113aa565b6106ab565b3480156103b957600080fd5b5061031e610765565b3480156103ce57600080fd5b506103d761076b565b60405161026b9190611677565b3480156103f057600080fd5b506104046103ff3660046113f6565b610777565b60405161026b9190611568565b34801561041d57600080fd5b506102fc610904565b34801561043257600080fd5b506102896104413660046113cc565b610920565b34801561045257600080fd5b5061031e610932565b34801561046757600080fd5b5061031e610938565b34801561047c57600080fd5b5061031e61093e565b34801561049157600080fd5b5061034b6104a03660046113aa565b610944565b3480156104b157600080fd5b5061031e6104c0366004611462565b610959565b3480156104d157600080fd5b5061028961096b565b3480156104e657600080fd5b506104ef610a04565b60405161026b919061150f565b34801561050857600080fd5b506103d7610a74565b34801561051d57600080fd5b506103d7610a80565b34801561053257600080fd5b506102fc610a94565b34801561054757600080fd5b5061031e6105563660046113aa565b610ab0565b34801561056757600080fd5b506102896105763660046113aa565b610ac2565b601560209081526000928352604080842090915290825290208054600182015460029092015490919083565b6105af610b65565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556040517f6caedcb22a5c22c8ebd0caf751fec1228a6e006e6ee37169321e02d31ecc818390600090a1565b601660205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b610639610b8a565b61064281610bd1565b50565b6002818154811061065257fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b600d5481565b60106020526000908152604090205460ff1681565b60115481565b6106a2610b65565b61064281610d02565b6106b3610b8a565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff166106f1576106f16106ec82610e5d565b610efc565b60005b600254811015610761578173ffffffffffffffffffffffffffffffffffffffff166002828154811061072257fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415610759576107548282610f04565b610761565b6001016106f4565b5050565b600c5481565b60145463ffffffff1681565b604080518281526020808402820101909152606090600090829084908180156107b457816020015b606081526020019060019003908161079f5790505b5060035490945073ffffffffffffffffffffffffffffffffffffffff16806107e1576107e16106ec611153565b60005b8281146108f8578173ffffffffffffffffffffffffffffffffffffffff1688888381811061080e57fe5b6020028201905080357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe13684900301811261084857600080fd5b9091016020810191503567ffffffffffffffff81111561086757600080fd5b3681900382131561087757600080fd5b60405161088592919061149b565b600060405180830381855af49150503d80600081146108c0576040519150601f19603f3d011682016040523d82523d6000602084013e6108c5565b606091505b509095509350846108d857835184602001fd5b838682815181106108e557fe5b60209081029190910101526001016107e4565b50505050505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b610928610b8a565b6107618282610f04565b60135481565b60085481565b60175481565b60016020526000908152604090205460ff1681565b600b6020526000908152604090205481565b60115462069780811080610981575062278d0081115b15610993576109936106ec600461118a565b60145463ffffffff6401000000008204811691168110806109b8575063ffffffff8116155b156109ca576109ca6106ec600061118a565b601254620f424063ffffffff90911611156109ec576109ec6106ec600161118a565b60026013541015610761576107616106ec600361118a565b60606002805480602002602001604051908101604052809291908181526020018280548015610a6957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a3e575b505050505090505b90565b60125463ffffffff1681565b601454640100000000900463ffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60096020526000908152604090205481565b610aca610b8a565b73ffffffffffffffffffffffffffffffffffffffff8116610af557610af06106ec6111c9565b610642565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b3360009081526001602052604090205460ff16610b8857610b886106ec33611200565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b8857600054610b88906106ec90339073ffffffffffffffffffffffffffffffffffffffff1661121b565b73ffffffffffffffffffffffffffffffffffffffff8116610bf757610bf76106ec6112bd565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff1615610c3157610c316106ec826112f4565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790556040517f048368388f801041f7690185c4e28b6f3505c740c47be8ac104b55df666bfc8490610d729083906114c7565b60405180910390a160035460408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe1c7392a00000000000000000000000000000000000000000000000000000000179052905160009260609273ffffffffffffffffffffffffffffffffffffffff90911691610dfe91906114ab565b600060405180830381855af49150503d8060008114610e39576040519150601f19603f3d011682016040523d82523d6000602084013e610e3e565b606091505b509150915081610e5057805160208201fd5b610e5861096b565b505050565b606063eb5108a260e01b82604051602401610e7891906114c7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b805160208201fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16610f3d57610f3d6106ec83610e5d565b6002548110610f5857610f586106ec8260028054905061130f565b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110610f7c57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614610fde57610fde6106ec60028381548110610fb657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff168461132c565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061105957fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff909216918390811061108c57fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061110b9082611349565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b60408051808201909152600481527f6eff828500000000000000000000000000000000000000000000000000000000602082015290565b60607ffc45bd11000000000000000000000000000000000000000000000000000000008260048111156111b957fe5b604051602401610e789190611688565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b606063b65a25b960e01b82604051602401610e7891906114c7565b6060631de45ad160e01b83836040516024016112389291906114e8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b60408051808201909152600481527f57654fe400000000000000000000000000000000000000000000000000000000602082015290565b606063de16f1a060e01b82604051602401610e7891906114c7565b606063e9f8377160e01b8383604051602401611238929190611630565b606063140a84db60e01b83836040516024016112389291906114e8565b815481835581811115610e5857600083815260209020610e58918101908301610a7191905b80821115611382576000815560010161136e565b5090565b803573ffffffffffffffffffffffffffffffffffffffff811681146108fe57600080fd5b6000602082840312156113bb578081fd5b6113c58383611386565b9392505050565b600080604083850312156113de578081fd5b6113e88484611386565b946020939093013593505050565b60008060208385031215611408578182fd5b823567ffffffffffffffff8082111561141f578384fd5b81850186601f820112611430578485fd5b8035925081831115611440578485fd5b8660208085028301011115611453578485fd5b60200196919550909350505050565b600060208284031215611473578081fd5b5035919050565b6000806040838503121561148c578182fd5b50508035926020909101359150565b6000828483379101908152919050565b600082516114bd818460208701611696565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b602080825282518282018190526000918401906040840190835b8181101561155d57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101611529565b509095945050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b8281101561160f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452815180518087526115d2818989018a8501611696565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169590950186019450928501929085019060010161158d565b5092979650505050505050565b901515815260200190565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b948552602085019390935260408401919091526060830152608082015260a00190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b60005b838110156116b1578181015183820152602001611699565b838111156116c0576000848401525b5050505056fea365627a7a72315820234dbfb1979e729e4b90ba58749ef12a931b7df77beb672b5d45d410d232fff36c6578706572696d656e74616cf564736f6c634300050c0040"
}
}
},
"compiler": {
"name": "solc",
"version": "soljson-v0.5.12+commit.7709ece9.js",
"settings": {
"optimizer": {
"enabled": true,
"runs": 1000000,
"details": { "yul": true, "deduplicate": true, "cse": true, "constantOptimizer": true }
},
"outputSelection": {
"*": {
"*": [
"abi",
"devdoc",
"evm.bytecode.object",
"evm.bytecode.sourceMap",
"evm.deployedBytecode.object",
"evm.deployedBytecode.sourceMap"
]
}
},
"evmVersion": "constantinople"
}
},
"networks": {}
}