test-contracts-sovryn
Version:
Smart contracts for the Sovryn protocol and external integrations.
1,149 lines (1,148 loc) • 39.7 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "ModuleCommonFunctionalities",
"sourceName": "contracts/mixins/ModuleCommonFunctionalities.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"constant": true,
"inputs": [],
"name": "admin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "affiliateFeePercent",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "affiliateRewardsHeld",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "affiliateTradingTokenFeePercent",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "affiliatesReferrerBalances",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "affiliatesUserReferrer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "borrowerNonce",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "borrowerOrders",
"outputs": [
{
"internalType": "uint256",
"name": "lockedAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "interestRate",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "minLoanTerm",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxLoanTerm",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "createdTimestamp",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "expirationTimestamp",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "borrowingFeePercent",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "borrowingFeeTokensHeld",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "borrowingFeeTokensPaid",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "delegatedManagers",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "feeRebatePercent",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "feesController",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "isOwner",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "lenderInterest",
"outputs": [
{
"internalType": "uint256",
"name": "principalTotal",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "owedPerDay",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "owedTotal",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "paidTotal",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "updatedTimestamp",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "lenderOrders",
"outputs": [
{
"internalType": "uint256",
"name": "lockedAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "interestRate",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "minLoanTerm",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxLoanTerm",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "createdTimestamp",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "expirationTimestamp",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "lendingFeePercent",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "lendingFeeTokensHeld",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "lendingFeeTokensPaid",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "liquidationIncentivePercent",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "loanInterest",
"outputs": [
{
"internalType": "uint256",
"name": "owedPerDay",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "depositTotal",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "updatedTimestamp",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "loanParams",
"outputs": [
{
"internalType": "bytes32",
"name": "id",
"type": "bytes32"
},
{
"internalType": "bool",
"name": "active",
"type": "bool"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "loanToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "minInitialMargin",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maintenanceMargin",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxLoanTerm",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "loanPoolToUnderlying",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "loans",
"outputs": [
{
"internalType": "bytes32",
"name": "id",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "loanParamsId",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "pendingTradesId",
"type": "bytes32"
},
{
"internalType": "bool",
"name": "active",
"type": "bool"
},
{
"internalType": "uint256",
"name": "principal",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "collateral",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "startTimestamp",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "endTimestamp",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "startMargin",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "startRate",
"type": "uint256"
},
{
"internalType": "address",
"name": "borrower",
"type": "address"
},
{
"internalType": "address",
"name": "lender",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "lockedSOVAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"name": "logicTargets",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "maxDisagreement",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "maxSwapSize",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "minReferralsToPayout",
"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": [],
"name": "pause",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "priceFeeds",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "protocolAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "protocolTokenAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "protocolTokenHeld",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "protocolTokenPaid",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "rolloverBaseReward",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "rolloverFlexFeePercent",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "sourceBuffer",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "sovTokenAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "sovrynSwapContractRegistryAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "specialRebates",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "supportedTokens",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "swapsImpl",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "tradingFeePercent",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "tradingFeeTokensHeld",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "tradingFeeTokensPaid",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"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": "underlyingToLoanPool",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "userNotFirstTradeFlag",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "wrbtcToken",
"outputs": [
{
"internalType": "contract IWrbtcERC20",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d0000060395560006100a96100fc60201b60201c565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610100565b3390565b610ead8061010f6000396000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c80638dc48ba51161019d578063cb6eacd1116100e9578063edab119f116100a2578063f589a3e71161007c578063f589a3e7146108ec578063f6ddc8b3146108f4578063f706b1f2146108fc578063f851a440146109045761030c565b8063edab119f146108b4578063f0e085f5146108bc578063f2fde38b146108c45761030c565b8063cb6eacd1146107db578063cd5d808d14610848578063d288208c14610876578063d473c2da1461087e578063d485045e14610886578063e8f62764146108ac5761030c565b8063afe8400911610156578063b9cffa3e11610130578063b9cffa3e1461071d578063ba4861e914610725578063bdee453c1461072d578063c4a90815146107535761030c565b8063afe84009146106c9578063b30643d9146106d1578063b7e15241146106f75761030c565b80638dc48ba51461065d5780638f32d59b1461068357806392d894f81461068b578063959083d3146106b1578063acc04348146106b9578063ae0a8530146106c15761030c565b80634699f8461161025c5780636e6637301161021557806378d849ed116101ef57806378d849ed1461063d5780637a8faeb8146106455780638456cb591461064d5780638da5cb5b146106555761030c565b80636e663730146106075780637420ca3e1461062d578063742e6798146106355761030c565b80634699f846146105355780634f28cac21461053d578063569fc1fb14610545578063574442cc1461058057806362fff3f61461058857806368c4ac26146105e15761030c565b80632a324027116102c95780633452d2d4116102a35780633452d2d4146104975780633fca506e146104bd5780634115a2b6146104e35780634203e3951461050f5761030c565b80632a3240271461045b5780632f470764146104635780633432423c1461046b5761030c565b8063065d810f146103115780630676c1b71461037057806317548b79146103945780631b7bde74146103bb578063218b39c6146103fb57806324cc574914610421575b600080fd5b61033d6004803603604081101561032757600080fd5b506001600160a01b03813516906020013561090c565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61037861094c565b604080516001600160a01b039092168252519081900360200190f35b610378600480360360208110156103aa57600080fd5b50356001600160e01b03191661095b565b6103e9600480360360408110156103d157600080fd5b506001600160a01b0381358116916020013516610976565b60408051918252519081900360200190f35b6103786004803603602081101561041157600080fd5b50356001600160a01b0316610993565b6104476004803603602081101561043757600080fd5b50356001600160a01b03166109ae565b604080519115158252519081900360200190f35b6103e96109c3565b6103e96109c9565b61033d6004803603604081101561048157600080fd5b506001600160a01b0381351690602001356109cf565b6103e9600480360360208110156104ad57600080fd5b50356001600160a01b0316610a0f565b6103e9600480360360208110156104d357600080fd5b50356001600160a01b0316610a21565b610447600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a33565b6103e96004803603602081101561052557600080fd5b50356001600160a01b0316610a53565b6103e9610a65565b6103e9610a6b565b6105626004803603602081101561055b57600080fd5b5035610a71565b60408051938452602084019290925282820152519081900360600190f35b6103e9610a92565b6105b66004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516610a98565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610447600480360360208110156105f757600080fd5b50356001600160a01b0316610ad2565b6103786004803603602081101561061d57600080fd5b50356001600160a01b0316610ae7565b610378610b02565b6103e9610b11565b610378610b17565b6103e9610b26565b610447610b2c565b610378610b35565b6103786004803603602081101561067357600080fd5b50356001600160a01b0316610b44565b610447610b5f565b6103e9600480360360208110156106a157600080fd5b50356001600160a01b0316610b85565b6103e9610b97565b6103e9610b9d565b6103e9610ba3565b610378610ba9565b6103e9600480360360208110156106e757600080fd5b50356001600160a01b0316610bb8565b6103e96004803603602081101561070d57600080fd5b50356001600160a01b0316610bca565b610378610bdc565b610378610beb565b6103e96004803603602081101561074357600080fd5b50356001600160a01b0316610bfa565b6107706004803603602081101561076957600080fd5b5035610c0c565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b6107f8600480360360208110156107f157600080fd5b5035610c7e565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b6103e96004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516610cd0565b610378610ced565b6103e9610cfc565b6103e96004803603602081101561089c57600080fd5b50356001600160a01b0316610d02565b610378610d14565b6103e9610d23565b6103e9610d29565b6108ea600480360360208110156108da57600080fd5b50356001600160a01b0316610d2f565b005b6103e9610d83565b6103e9610d89565b610378610d8f565b610378610d9e565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610b76610dad565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b610d37610b5f565b610d77576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610d8081610db1565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b3390565b6001600160a01b038116610df65760405162461bcd60e51b8152600401808060200182810382526026815260200180610e536026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158203b4c8ef15d408733af9760c610c5ffa98942da7bb79492c50d6ff4b293231d5b64736f6c63430005110032",
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061030c5760003560e01c80638dc48ba51161019d578063cb6eacd1116100e9578063edab119f116100a2578063f589a3e71161007c578063f589a3e7146108ec578063f6ddc8b3146108f4578063f706b1f2146108fc578063f851a440146109045761030c565b8063edab119f146108b4578063f0e085f5146108bc578063f2fde38b146108c45761030c565b8063cb6eacd1146107db578063cd5d808d14610848578063d288208c14610876578063d473c2da1461087e578063d485045e14610886578063e8f62764146108ac5761030c565b8063afe8400911610156578063b9cffa3e11610130578063b9cffa3e1461071d578063ba4861e914610725578063bdee453c1461072d578063c4a90815146107535761030c565b8063afe84009146106c9578063b30643d9146106d1578063b7e15241146106f75761030c565b80638dc48ba51461065d5780638f32d59b1461068357806392d894f81461068b578063959083d3146106b1578063acc04348146106b9578063ae0a8530146106c15761030c565b80634699f8461161025c5780636e6637301161021557806378d849ed116101ef57806378d849ed1461063d5780637a8faeb8146106455780638456cb591461064d5780638da5cb5b146106555761030c565b80636e663730146106075780637420ca3e1461062d578063742e6798146106355761030c565b80634699f846146105355780634f28cac21461053d578063569fc1fb14610545578063574442cc1461058057806362fff3f61461058857806368c4ac26146105e15761030c565b80632a324027116102c95780633452d2d4116102a35780633452d2d4146104975780633fca506e146104bd5780634115a2b6146104e35780634203e3951461050f5761030c565b80632a3240271461045b5780632f470764146104635780633432423c1461046b5761030c565b8063065d810f146103115780630676c1b71461037057806317548b79146103945780631b7bde74146103bb578063218b39c6146103fb57806324cc574914610421575b600080fd5b61033d6004803603604081101561032757600080fd5b506001600160a01b03813516906020013561090c565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61037861094c565b604080516001600160a01b039092168252519081900360200190f35b610378600480360360208110156103aa57600080fd5b50356001600160e01b03191661095b565b6103e9600480360360408110156103d157600080fd5b506001600160a01b0381358116916020013516610976565b60408051918252519081900360200190f35b6103786004803603602081101561041157600080fd5b50356001600160a01b0316610993565b6104476004803603602081101561043757600080fd5b50356001600160a01b03166109ae565b604080519115158252519081900360200190f35b6103e96109c3565b6103e96109c9565b61033d6004803603604081101561048157600080fd5b506001600160a01b0381351690602001356109cf565b6103e9600480360360208110156104ad57600080fd5b50356001600160a01b0316610a0f565b6103e9600480360360208110156104d357600080fd5b50356001600160a01b0316610a21565b610447600480360360408110156104f957600080fd5b50803590602001356001600160a01b0316610a33565b6103e96004803603602081101561052557600080fd5b50356001600160a01b0316610a53565b6103e9610a65565b6103e9610a6b565b6105626004803603602081101561055b57600080fd5b5035610a71565b60408051938452602084019290925282820152519081900360600190f35b6103e9610a92565b6105b66004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516610a98565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610447600480360360208110156105f757600080fd5b50356001600160a01b0316610ad2565b6103786004803603602081101561061d57600080fd5b50356001600160a01b0316610ae7565b610378610b02565b6103e9610b11565b610378610b17565b6103e9610b26565b610447610b2c565b610378610b35565b6103786004803603602081101561067357600080fd5b50356001600160a01b0316610b44565b610447610b5f565b6103e9600480360360208110156106a157600080fd5b50356001600160a01b0316610b85565b6103e9610b97565b6103e9610b9d565b6103e9610ba3565b610378610ba9565b6103e9600480360360208110156106e757600080fd5b50356001600160a01b0316610bb8565b6103e96004803603602081101561070d57600080fd5b50356001600160a01b0316610bca565b610378610bdc565b610378610beb565b6103e96004803603602081101561074357600080fd5b50356001600160a01b0316610bfa565b6107706004803603602081101561076957600080fd5b5035610c0c565b604080519c8d5260208d019b909b528b8b019990995296151560608b015260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526001600160a01b039081166101408501521661016083015251908190036101800190f35b6107f8600480360360208110156107f157600080fd5b5035610c7e565b6040805198895296151560208901526001600160a01b0395861688880152938516606088015291909316608086015260a085019290925260c084019190915260e083015251908190036101000190f35b6103e96004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516610cd0565b610378610ced565b6103e9610cfc565b6103e96004803603602081101561089c57600080fd5b50356001600160a01b0316610d02565b610378610d14565b6103e9610d23565b6103e9610d29565b6108ea600480360360208110156108da57600080fd5b50356001600160a01b0316610d2f565b005b6103e9610d83565b6103e9610d89565b610378610d8f565b610378610d9e565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b60185481565b601f5481565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b602a6020526000908152604090205481565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b60155481565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b6003546001600160a01b031681565b60355481565b6002546001600160a01b031681565b601e5481565b603d5460ff1681565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316610b76610dad565b6001600160a01b031614905090565b60176020526000908152604090205481565b602c5481565b602f5481565b60205481565b602d546001600160a01b031681565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b6014546001600160a01b031681565b601b5481565b60285481565b610d37610b5f565b610d77576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610d8081610db1565b50565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b3390565b6001600160a01b038116610df65760405162461bcd60e51b8152600401808060200182810382526026815260200180610e536026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158203b4c8ef15d408733af9760c610c5ffa98942da7bb79492c50d6ff4b293231d5b64736f6c63430005110032",
"linkReferences": {},
"deployedLinkReferences": {}
}