test-contracts-sovryn
Version:
Smart contracts for the Sovryn protocol and external integrations.
649 lines (648 loc) • 38.4 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "PriceFeedsLocal",
"sourceName": "contracts/feeds/testnet/PriceFeedsLocal.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_wrbtcTokenAddress",
"type": "address"
},
{
"internalType": "address",
"name": "_protocolTokenAddress",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": true,
"internalType": "bool",
"name": "isPaused",
"type": "bool"
}
],
"name": "GlobalPricingPaused",
"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"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "tokenAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "amountInEth",
"outputs": [
{
"internalType": "uint256",
"name": "ethAmount",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "baseToken",
"outputs": [
{
"internalType": "contract IWrbtcERC20",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "sourceToken",
"type": "address"
},
{
"internalType": "address",
"name": "destToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "sourceAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "destAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxSlippage",
"type": "uint256"
}
],
"name": "checkPriceDisagreement",
"outputs": [
{
"internalType": "uint256",
"name": "sourceToDestSwapRate",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "decimals",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "loanToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "loanAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "collateralAmount",
"type": "uint256"
}
],
"name": "getCurrentMargin",
"outputs": [
{
"internalType": "uint256",
"name": "currentMargin",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "collateralToLoanRate",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "loanToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "loanAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "collateralAmount",
"type": "uint256"
}
],
"name": "getCurrentMarginAndCollateralSize",
"outputs": [
{
"internalType": "uint256",
"name": "currentMargin",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "collateralInEthAmount",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "loanToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "loanAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "collateralAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "margin",
"type": "uint256"
}
],
"name": "getMaxDrawdown",
"outputs": [
{
"internalType": "uint256",
"name": "maxDrawdown",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "globalPricingPaused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"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": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "pricesFeeds",
"outputs": [
{
"internalType": "contract IPriceFeedsExt",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "protocolTokenEthPrice",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "sourceToken",
"type": "address"
},
{
"internalType": "address",
"name": "destToken",
"type": "address"
}
],
"name": "queryPrecision",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "sourceToken",
"type": "address"
},
{
"internalType": "address",
"name": "destToken",
"type": "address"
}
],
"name": "queryRate",
"outputs": [
{
"internalType": "uint256",
"name": "rate",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "precision",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "sourceToken",
"type": "address"
},
{
"internalType": "address",
"name": "destToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "sourceAmount",
"type": "uint256"
}
],
"name": "queryReturn",
"outputs": [
{
"internalType": "uint256",
"name": "destAmount",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "rates",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "contract IERC20[]",
"name": "tokens",
"type": "address[]"
}
],
"name": "setDecimals",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "bool",
"name": "isPaused",
"type": "bool"
}
],
"name": "setGlobalPricingPaused",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address[]",
"name": "tokens",
"type": "address[]"
},
{
"internalType": "contract IPriceFeedsExt[]",
"name": "feeds",
"type": "address[]"
}
],
"name": "setPriceFeed",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "newPrice",
"type": "uint256"
}
],
"name": "setProtocolTokenEthPrice",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "sourceToken",
"type": "address"
},
{
"internalType": "address",
"name": "destToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "rate",
"type": "uint256"
}
],
"name": "setRates",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "loanToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "loanAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "collateralAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maintenanceMargin",
"type": "uint256"
}
],
"name": "shouldLiquidate",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"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": [],
"name": "wrbtcToken",
"outputs": [
{
"internalType": "contract IWrbtcERC20",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x608060405265b5e620f480006006556007805460ff191690553480156200002557600080fd5b506040516200196938038062001969833981810160405260408110156200004b57600080fd5b50805160209091015181818160006200006c6001600160e01b036200014016565b600380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600560205260127f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc8190556001600160a01b038416600090815260409020556200010d836001600160e01b036200014416565b62000121826001600160e01b03620001b916565b62000135816001600160e01b036200022e16565b5050505050620002f5565b3390565b6200015a81620002b860201b620015671760201c565b620001975760405162461bcd60e51b8152600401808060200182810382526021815260200180620019246021913960400191505060405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b620001cf81620002b860201b620015671760201c565b6200020c5760405162461bcd60e51b8152600401808060200182810382526024815260200180620019456024913960400191505060405180910390fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6200024481620002b860201b620015671760201c565b62000296576040805162461bcd60e51b815260206004820181905260248201527f5f62617365546f6b656e41646472657373206e6f74206120636f6e7472616374604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590620002ed57508115155b949350505050565b61161f80620003056000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80638da5cb5b116100c3578063d138f9a11161007c578063d138f9a114610522578063d449a83214610558578063d601e3ff1461057e578063ecc5382d14610586578063f2fde38b146105c2578063f80b25fb146105e857610158565b80638da5cb5b146104665780638f32d59b1461046e578063aa2ec71014610476578063afe84009146104e6578063b2cf54ea146104ee578063c55dae631461051a57610158565b80632ff0d012116101155780632ff0d012146102b7578063502fad5f146102f35780635034709c14610329578063524efd4b146103eb5780637b0cf44d146104195780637c2badb71461044757610158565b806310f541661461015d5780631e2c62d31461017c57806322340070146101d057806329d5277c146101d85780632a8877021461021f5780632d485c5c14610275575b600080fd5b61017a6004803603602081101561017357600080fd5b503561062a565b005b6101be600480360360a081101561019257600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608001356106b9565b60408051918252519081900360200190f35b6101be6107bd565b610206600480360360408110156101ee57600080fd5b506001600160a01b03813581169160200135166107c3565b6040805192835260208301919091528051918290030190f35b610261600480360360a081101561023557600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608001356107dc565b604080519115158252519081900360200190f35b61029b6004803603602081101561028b57600080fd5b50356001600160a01b03166107fa565b604080516001600160a01b039092168252519081900360200190f35b610206600480360360808110156102cd57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610815565b61017a6004803603606081101561030957600080fd5b506001600160a01b038135811691602081013590911690604001356108ee565b61017a6004803603604081101561033f57600080fd5b81019060208101813564010000000081111561035a57600080fd5b82018360208201111561036c57600080fd5b8035906020019184602083028401116401000000008311171561038e57600080fd5b9193909290916020810190356401000000008111156103ac57600080fd5b8201836020820111156103be57600080fd5b803590602001918460208302840111640100000000831117156103e057600080fd5b5090925090506109bc565b6101be6004803603604081101561040157600080fd5b506001600160a01b0381358116916020013516610acd565b6101be6004803603604081101561042f57600080fd5b506001600160a01b0381358116916020013516610b0a565b61017a6004803603602081101561045d57600080fd5b50351515610b27565b61029b610bbf565b610261610bce565b61017a6004803603602081101561048c57600080fd5b8101906020810181356401000000008111156104a757600080fd5b8201836020820111156104b957600080fd5b803590602001918460208302840111640100000000831117156104db57600080fd5b509092509050610bf4565b61029b610d05565b6101be6004803603604081101561050457600080fd5b506001600160a01b038135169060200135610d14565b61029b610d6e565b6101be6004803603606081101561053857600080fd5b506001600160a01b03813581169160208101359091169060400135610d7d565b6101be6004803603602081101561056e57600080fd5b50356001600160a01b0316610dc5565b610261610dd7565b6102066004803603608081101561059c57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610de0565b61017a600480360360208110156105d857600080fd5b50356001600160a01b0316610e07565b6101be600480360360a08110156105fe57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060800135610e58565b610632610bce565b610672576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b806106b4576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c696420707269636560981b604482015290519081900360640190fd5b600655565b60075460009060ff1615610708576040805162461bcd60e51b81526020600482015260116024820152701c1c9a58da5b99c81a5cc81c185d5cd959607a1b604482015290519081900360640190fd5b6000806107158888610ef6565b909250905061073a8661072e878463ffffffff61112516565b9063ffffffff61117e16565b9250828211156107b2578282036107648461072e8368056bc75e2d6310000063ffffffff61112516565b9050848111156107b0576040805162461bcd60e51b81526020600482015260126024820152711c1c9a58d948191a5cd859dc99595b595b9d60721b604482015290519081900360640190fd5b505b505095945050505050565b60065481565b6000806107d08484610ef6565b915091505b9250929050565b6000806107eb87878787610815565b50909210159695505050505050565b6004602052600090815260409020546001600160a01b031681565b6000806000866001600160a01b0316866001600160a01b031614156108465750670de0b6b3a7640000905082610895565b600061085287896107c3565b90935090506108738161072e85670de0b6b3a764000063ffffffff61112516565b9250610891670de0b6b3a764000061072e878663ffffffff61112516565b9150505b84158015906108a45750848110155b156108df576108d68561072e68056bc75e2d631000006108ca858463ffffffff6111c016565b9063ffffffff61112516565b92506108e59050565b50600091505b94509492505050565b6108f6610bce565b610936576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b816001600160a01b0316836001600160a01b0316146109b7576001600160a01b0380841660009081526008602090815260408083209386168352929052208190556109906ec097ce7bc90715b34b9f10000000008261117e565b6001600160a01b038084166000908152600860209081526040808320938816835292905220555b505050565b6109c4610bce565b610a04576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b828114610a49576040805162461bcd60e51b815260206004820152600e60248201526d0c6deeadce840dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b60005b83811015610ac657828282818110610a6057fe5b905060200201356001600160a01b031660046000878785818110610a8057fe5b6001600160a01b03602091820293909301358316845283019390935260409091016000208054939091166001600160a01b03199093169290921790915550600101610a4c565b5050505050565b6000816001600160a01b0316836001600160a01b03161415610af757670de0b6b3a7640000610b01565b610b018383611202565b90505b92915050565b600860209081526000928352604080842090915290825290205481565b610b2f610bce565b610b6f576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60075460ff16151581151514610bbc576007805460ff191682151590811790915560405133907fd72570f3e3995824c4448eca84a22aed922dab8c58e23e9c5e60e74d0714f7f190600090a35b50565b6003546001600160a01b031690565b6003546000906001600160a01b0316610be561136c565b6001600160a01b031614905090565b610bfc610bce565b610c3c576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60005b818110156109b757828282818110610c5357fe5b905060200201356001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610c9b57600080fd5b505afa158015610caf573d6000803e3d6000fd5b505050506040513d6020811015610cc557600080fd5b505160ff1660056000858585818110610cda57fe5b602090810292909201356001600160a01b031683525081019190915260400160002055600101610c3f565b6000546001600160a01b031681565b600080546001600160a01b0384811691161415610d32575080610b04565b600080548190610d4c9086906001600160a01b03166107c3565b9092509050610d658161072e868563ffffffff61112516565b95945050505050565b6001546001600160a01b031681565b60075460009060ff1615610d9357506000610dbe565b600080610da08686610ef6565b9092509050610db98161072e868563ffffffff61112516565b925050505b9392505050565b60056020526000908152604090205481565b60075460ff1681565b600080610def86868686610815565b509150610dfc8584610d14565b905094509492505050565b610e0f610bce565b610e4f576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610bbc81611370565b600080866001600160a01b0316866001600160a01b03161415610e7c575083610ea7565b600080610e8989896107c3565b9092509050610ea28161072e898563ffffffff61112516565b925050505b6000610ed6610ec968056bc75e2d6310000061072e858863ffffffff61112516565b839063ffffffff61141116565b9050808511610ee6576000610eea565b8085035b98975050505050505050565b600754600090819060ff1615610f47576040805162461bcd60e51b81526020600482015260116024820152701c1c9a58da5b99c81a5cc81c185d5cd959607a1b604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b03161415610f735750670de0b6b3a76400009050806107d5565b6002546001600160a01b0385811691161415610f93576006549150611112565b6002546001600160a01b0384811691161415610fcb57610fc46ec097ce7bc90715b34b9f100000000060065461117e565b9150611112565b6001600160a01b0380851660009081526008602090815260408083209387168352929052205415611023576001600160a01b038085166000908152600860209081526040808320938716835292905220549150611112565b6001600160a01b038085166000908152600860209081526040808320835490941683529290529081205461105f57670de0b6b3a7640000611088565b6001600160a01b0380861660009081526008602090815260408083208354909416835292905220545b600080546001600160a01b0390811682526008602090815260408084209289168452919052812054919250906110c657670de0b6b3a76400006110ef565b600080546001600160a01b03908116825260086020908152604080842092891684529190529020545b905061110d670de0b6b3a764000061072e848463ffffffff61112516565b935050505b61111c8484611202565b90509250929050565b60008261113457506000610b04565b8282028284828161114157fe5b0414610b015760405162461bcd60e51b81526004018080602001828103825260218152602001806115ca6021913960400191505060405180910390fd5b6000610b0183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061146b565b6000610b0183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061150d565b6000816001600160a01b0316836001600160a01b0316141561122d5750670de0b6b3a7640000610b04565b6001600160a01b038316600090815260056020526040902054806112b657836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561128457600080fd5b505afa158015611298573d6000803e3d6000fd5b505050506040513d60208110156112ae57600080fd5b505160ff1690505b6001600160a01b0383166000908152600560205260409020548061133f57836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561130d57600080fd5b505afa158015611321573d6000803e3d6000fd5b505050506040513d602081101561133757600080fd5b505160ff1690505b81811061135f5761135360128383036111c0565b600a0a92505050610b04565b6113536012828403611411565b3390565b6001600160a01b0381166113b55760405162461bcd60e51b81526004018080602001828103825260268152602001806115a46026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b600082820183811015610b01576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081836114f75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114bc5781810151838201526020016114a4565b50505050905090810190601f1680156114e95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161150357fe5b0495945050505050565b6000818484111561155f5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156114bc5781810151838201526020016114a4565b505050900390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061159b57508115155b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a723158205f9614dfb69c67b5e776f639c8305e4c3ee4a54c421f908c474a072d8a25679364736f6c634300051100325f7772627463546f6b656e41646472657373206e6f74206120636f6e74726163745f70726f746f636f6c546f6b656e41646472657373206e6f74206120636f6e7472616374",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101585760003560e01c80638da5cb5b116100c3578063d138f9a11161007c578063d138f9a114610522578063d449a83214610558578063d601e3ff1461057e578063ecc5382d14610586578063f2fde38b146105c2578063f80b25fb146105e857610158565b80638da5cb5b146104665780638f32d59b1461046e578063aa2ec71014610476578063afe84009146104e6578063b2cf54ea146104ee578063c55dae631461051a57610158565b80632ff0d012116101155780632ff0d012146102b7578063502fad5f146102f35780635034709c14610329578063524efd4b146103eb5780637b0cf44d146104195780637c2badb71461044757610158565b806310f541661461015d5780631e2c62d31461017c57806322340070146101d057806329d5277c146101d85780632a8877021461021f5780632d485c5c14610275575b600080fd5b61017a6004803603602081101561017357600080fd5b503561062a565b005b6101be600480360360a081101561019257600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608001356106b9565b60408051918252519081900360200190f35b6101be6107bd565b610206600480360360408110156101ee57600080fd5b506001600160a01b03813581169160200135166107c3565b6040805192835260208301919091528051918290030190f35b610261600480360360a081101561023557600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608001356107dc565b604080519115158252519081900360200190f35b61029b6004803603602081101561028b57600080fd5b50356001600160a01b03166107fa565b604080516001600160a01b039092168252519081900360200190f35b610206600480360360808110156102cd57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610815565b61017a6004803603606081101561030957600080fd5b506001600160a01b038135811691602081013590911690604001356108ee565b61017a6004803603604081101561033f57600080fd5b81019060208101813564010000000081111561035a57600080fd5b82018360208201111561036c57600080fd5b8035906020019184602083028401116401000000008311171561038e57600080fd5b9193909290916020810190356401000000008111156103ac57600080fd5b8201836020820111156103be57600080fd5b803590602001918460208302840111640100000000831117156103e057600080fd5b5090925090506109bc565b6101be6004803603604081101561040157600080fd5b506001600160a01b0381358116916020013516610acd565b6101be6004803603604081101561042f57600080fd5b506001600160a01b0381358116916020013516610b0a565b61017a6004803603602081101561045d57600080fd5b50351515610b27565b61029b610bbf565b610261610bce565b61017a6004803603602081101561048c57600080fd5b8101906020810181356401000000008111156104a757600080fd5b8201836020820111156104b957600080fd5b803590602001918460208302840111640100000000831117156104db57600080fd5b509092509050610bf4565b61029b610d05565b6101be6004803603604081101561050457600080fd5b506001600160a01b038135169060200135610d14565b61029b610d6e565b6101be6004803603606081101561053857600080fd5b506001600160a01b03813581169160208101359091169060400135610d7d565b6101be6004803603602081101561056e57600080fd5b50356001600160a01b0316610dc5565b610261610dd7565b6102066004803603608081101561059c57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610de0565b61017a600480360360208110156105d857600080fd5b50356001600160a01b0316610e07565b6101be600480360360a08110156105fe57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060800135610e58565b610632610bce565b610672576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b806106b4576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c696420707269636560981b604482015290519081900360640190fd5b600655565b60075460009060ff1615610708576040805162461bcd60e51b81526020600482015260116024820152701c1c9a58da5b99c81a5cc81c185d5cd959607a1b604482015290519081900360640190fd5b6000806107158888610ef6565b909250905061073a8661072e878463ffffffff61112516565b9063ffffffff61117e16565b9250828211156107b2578282036107648461072e8368056bc75e2d6310000063ffffffff61112516565b9050848111156107b0576040805162461bcd60e51b81526020600482015260126024820152711c1c9a58d948191a5cd859dc99595b595b9d60721b604482015290519081900360640190fd5b505b505095945050505050565b60065481565b6000806107d08484610ef6565b915091505b9250929050565b6000806107eb87878787610815565b50909210159695505050505050565b6004602052600090815260409020546001600160a01b031681565b6000806000866001600160a01b0316866001600160a01b031614156108465750670de0b6b3a7640000905082610895565b600061085287896107c3565b90935090506108738161072e85670de0b6b3a764000063ffffffff61112516565b9250610891670de0b6b3a764000061072e878663ffffffff61112516565b9150505b84158015906108a45750848110155b156108df576108d68561072e68056bc75e2d631000006108ca858463ffffffff6111c016565b9063ffffffff61112516565b92506108e59050565b50600091505b94509492505050565b6108f6610bce565b610936576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b816001600160a01b0316836001600160a01b0316146109b7576001600160a01b0380841660009081526008602090815260408083209386168352929052208190556109906ec097ce7bc90715b34b9f10000000008261117e565b6001600160a01b038084166000908152600860209081526040808320938816835292905220555b505050565b6109c4610bce565b610a04576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b828114610a49576040805162461bcd60e51b815260206004820152600e60248201526d0c6deeadce840dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b60005b83811015610ac657828282818110610a6057fe5b905060200201356001600160a01b031660046000878785818110610a8057fe5b6001600160a01b03602091820293909301358316845283019390935260409091016000208054939091166001600160a01b03199093169290921790915550600101610a4c565b5050505050565b6000816001600160a01b0316836001600160a01b03161415610af757670de0b6b3a7640000610b01565b610b018383611202565b90505b92915050565b600860209081526000928352604080842090915290825290205481565b610b2f610bce565b610b6f576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60075460ff16151581151514610bbc576007805460ff191682151590811790915560405133907fd72570f3e3995824c4448eca84a22aed922dab8c58e23e9c5e60e74d0714f7f190600090a35b50565b6003546001600160a01b031690565b6003546000906001600160a01b0316610be561136c565b6001600160a01b031614905090565b610bfc610bce565b610c3c576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60005b818110156109b757828282818110610c5357fe5b905060200201356001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610c9b57600080fd5b505afa158015610caf573d6000803e3d6000fd5b505050506040513d6020811015610cc557600080fd5b505160ff1660056000858585818110610cda57fe5b602090810292909201356001600160a01b031683525081019190915260400160002055600101610c3f565b6000546001600160a01b031681565b600080546001600160a01b0384811691161415610d32575080610b04565b600080548190610d4c9086906001600160a01b03166107c3565b9092509050610d658161072e868563ffffffff61112516565b95945050505050565b6001546001600160a01b031681565b60075460009060ff1615610d9357506000610dbe565b600080610da08686610ef6565b9092509050610db98161072e868563ffffffff61112516565b925050505b9392505050565b60056020526000908152604090205481565b60075460ff1681565b600080610def86868686610815565b509150610dfc8584610d14565b905094509492505050565b610e0f610bce565b610e4f576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610bbc81611370565b600080866001600160a01b0316866001600160a01b03161415610e7c575083610ea7565b600080610e8989896107c3565b9092509050610ea28161072e898563ffffffff61112516565b925050505b6000610ed6610ec968056bc75e2d6310000061072e858863ffffffff61112516565b839063ffffffff61141116565b9050808511610ee6576000610eea565b8085035b98975050505050505050565b600754600090819060ff1615610f47576040805162461bcd60e51b81526020600482015260116024820152701c1c9a58da5b99c81a5cc81c185d5cd959607a1b604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b03161415610f735750670de0b6b3a76400009050806107d5565b6002546001600160a01b0385811691161415610f93576006549150611112565b6002546001600160a01b0384811691161415610fcb57610fc46ec097ce7bc90715b34b9f100000000060065461117e565b9150611112565b6001600160a01b0380851660009081526008602090815260408083209387168352929052205415611023576001600160a01b038085166000908152600860209081526040808320938716835292905220549150611112565b6001600160a01b038085166000908152600860209081526040808320835490941683529290529081205461105f57670de0b6b3a7640000611088565b6001600160a01b0380861660009081526008602090815260408083208354909416835292905220545b600080546001600160a01b0390811682526008602090815260408084209289168452919052812054919250906110c657670de0b6b3a76400006110ef565b600080546001600160a01b03908116825260086020908152604080842092891684529190529020545b905061110d670de0b6b3a764000061072e848463ffffffff61112516565b935050505b61111c8484611202565b90509250929050565b60008261113457506000610b04565b8282028284828161114157fe5b0414610b015760405162461bcd60e51b81526004018080602001828103825260218152602001806115ca6021913960400191505060405180910390fd5b6000610b0183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061146b565b6000610b0183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061150d565b6000816001600160a01b0316836001600160a01b0316141561122d5750670de0b6b3a7640000610b04565b6001600160a01b038316600090815260056020526040902054806112b657836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561128457600080fd5b505afa158015611298573d6000803e3d6000fd5b505050506040513d60208110156112ae57600080fd5b505160ff1690505b6001600160a01b0383166000908152600560205260409020548061133f57836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561130d57600080fd5b505afa158015611321573d6000803e3d6000fd5b505050506040513d602081101561133757600080fd5b505160ff1690505b81811061135f5761135360128383036111c0565b600a0a92505050610b04565b6113536012828403611411565b3390565b6001600160a01b0381166113b55760405162461bcd60e51b81526004018080602001828103825260268152602001806115a46026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b600082820183811015610b01576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081836114f75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114bc5781810151838201526020016114a4565b50505050905090810190601f1680156114e95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161150357fe5b0495945050505050565b6000818484111561155f5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156114bc5781810151838201526020016114a4565b505050900390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061159b57508115155b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a723158205f9614dfb69c67b5e776f639c8305e4c3ee4a54c421f908c474a072d8a25679364736f6c63430005110032",
"linkReferences": {},
"deployedLinkReferences": {}
}