UNPKG

@dolomite-exchange/dolomite-margin

Version:

Ethereum Smart Contracts and TypeScript library used for the DolomiteMargin trading protocol

362 lines 219 kB
{ "contractName": "TestChainlinkPriceOracleV1", "abi": [ { "inputs": [ { "internalType": "address[]", "name": "_tokens", "type": "address[]" }, { "internalType": "address[]", "name": "_chainlinkAggregators", "type": "address[]" }, { "internalType": "uint8[]", "name": "_tokenDecimals", "type": "uint8[]" }, { "internalType": "address[]", "name": "_tokenPairs", "type": "address[]" }, { "internalType": "address", "name": "_dolomiteMargin", "type": "address" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint8", "name": "percent", "type": "uint8" } ], "name": "OverrideOraclePrice", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "stalenessDuration", "type": "uint256" } ], "name": "StalenessDurationUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "token", "type": "address" }, { "indexed": true, "internalType": "address", "name": "aggregator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "tokenPair", "type": "address" } ], "name": "TokenInsertedOrUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "token", "type": "address" } ], "name": "UnsetOverrideOraclePrice", "type": "event" }, { "constant": true, "inputs": [], "name": "DOLOMITE_MARGIN", "outputs": [ { "internalType": "contract IDolomiteMargin", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "ONE_DOLLAR", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "_token", "type": "address" } ], "name": "getAggregatorByToken", "outputs": [ { "internalType": "contract IChainlinkAggregator", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "_token", "type": "address" } ], "name": "getDecimalsByToken", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "_token", "type": "address" } ], "name": "getTokenPairByToken", "outputs": [ { "internalType": "address", "name": "_tokenPair", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "_token", "type": "address" }, { "internalType": "uint8", "name": "_tokenDecimals", "type": "uint8" }, { "internalType": "address", "name": "_chainlinkAggregator", "type": "address" }, { "internalType": "address", "name": "_tokenPair", "type": "address" } ], "name": "ownerInsertOrUpdateOracleToken", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint256", "name": "_stalenessThreshold", "type": "uint256" } ], "name": "ownerSetStalenessThreshold", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "stalenessThreshold", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "uint8", "name": "_tokenDecimals", "type": "uint8" }, { "internalType": "uint256", "name": "_value", "type": "uint256" }, { "internalType": "uint8", "name": "_valueDecimals", "type": "uint8" } ], "name": "standardizeNumberOfDecimals", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "pure", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "tokenToPercentChange", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint8", "name": "percent", "type": "uint8" } ], "name": "changeOraclePrice", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "getPrice", "outputs": [ { "components": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct Monetary.Price", "name": "", "type": "tuple" } ], "payable": false, "stateMutability": "view", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_tokens\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_chainlinkAggregators\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_tokenDecimals\",\"type\":\"uint8[]\"},{\"internalType\":\"address[]\",\"name\":\"_tokenPairs\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"_dolomiteMargin\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"percent\",\"type\":\"uint8\"}],\"name\":\"OverrideOraclePrice\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stalenessDuration\",\"type\":\"uint256\"}],\"name\":\"StalenessDurationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenPair\",\"type\":\"address\"}],\"name\":\"TokenInsertedOrUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"UnsetOverrideOraclePrice\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOLOMITE_MARGIN\",\"outputs\":[{\"internalType\":\"contract IDolomiteMargin\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ONE_DOLLAR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"percent\",\"type\":\"uint8\"}],\"name\":\"changeOraclePrice\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"getAggregatorByToken\",\"outputs\":[{\"internalType\":\"contract IChainlinkAggregator\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"getDecimalsByToken\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Price\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"getTokenPairByToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_tokenPair\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"_tokenDecimals\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"_chainlinkAggregator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenPair\",\"type\":\"address\"}],\"name\":\"ownerInsertOrUpdateOracleToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_stalenessThreshold\",\"type\":\"uint256\"}],\"name\":\"ownerSetStalenessThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"stalenessThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_tokenDecimals\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_valueDecimals\",\"type\":\"uint8\"}],\"name\":\"standardizeNumberOfDecimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenToPercentChange\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Dolomite * An implementation of the dYdX IPriceOracle interface that makes Chainlink prices compatible with the protocol.\",\"methods\":{\"changeOraclePrice(address,uint8)\":{\"params\":{\"percent\":\"The percent that should be applied to the current oracle price. Use 0 to unset. A value of 100 indicates no change. 90 is a 10% drop (0.9 times the price) and 110 is a 10% increase (1.1 times the price).\",\"token\":\"The token whose price should change\"}}},\"title\":\"ChainlinkPriceOracleV1\"},\"userdoc\":{\"methods\":{\"standardizeNumberOfDecimals(uint8,uint256,uint8)\":{\"notice\":\"Standardizes `value` to have `ONE_DOLLAR.decimals` - `tokenDecimals` number of decimals.\"}}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/testing/TestChainlinkPriceOracleV1.sol\":\"TestChainlinkPriceOracleV1\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/helpers/OnlyDolomiteMargin.sol\":{\"keccak256\":\"0xe40babc0a6dd2a767d76f3e0f0a22de124c4c480f2b2227a7b924b44e57526ea\",\"urls\":[\"bzz-raw://458f7f1f16eacd4faae597090503dc1e58446e9d371640c77b2e01e3e3113f17\",\"dweb:/ipfs/QmXqTG4sWJeDh5XA286KarbqHT4qJ7m3dphS16enpqtQiX\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IChainlinkAccessControlAggregator.sol\":{\"keccak256\":\"0xbb94dc91633d6fb20e1d7e2b5ce1f11346e89a6bfc8c3ac5d163c35a3e4ad60a\",\"urls\":[\"bzz-raw://264c7c039caf44b1866769feb237010651730d546b54bb6f2b7bc77cf3b6c9c9\",\"dweb:/ipfs/QmX8TTF8E2G8TT1yig6qHC8amWDwaq1GG6iaKYTTHsYsjo\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IChainlinkAggregator.sol\":{\"keccak256\":\"0x0209c9f35dbe82857a6441d8d61f271baeb5098549eabf5fc6d33503d0d3e073\",\"urls\":[\"bzz-raw://2f6af7b5198548a9a5e3d8a30203d7cd003eae93cca22b8466c10e0dcfcbc367\",\"dweb:/ipfs/Qme3bQ58ZoQLYDoJQHnvEeQZqgqyWTFBYBmMoiem7LPXmz\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IChainlinkPriceOracleV1.sol\":{\"keccak256\":\"0x9dc8cb0802ae0aaef49c0864220968e737e99c58aea1414b3451c32213b818df\",\"urls\":[\"bzz-raw://1124837a46ab2bbb07918f72c68adf7cdb13f146b92c48b1a0fadb39c37809e8\",\"dweb:/ipfs/QmSM21AJAfN3oRXebs6pc2YWGPgfZHbGPL6QkMCjG1vKiu\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/oracles/ChainlinkPriceOracleV1.sol\":{\"keccak256\":\"0x7fac9e3bb26fbc2dd84f360458b64e196d4e808abded417d811c01d6402ad575\",\"urls\":[\"bzz-raw://ff059990fede37df5977d620c1199f20395c8449e5413e163cc309f1c02d34b7\",\"dweb:/ipfs/QmS5C31EYoURS8MskJqaDFBAHs2YuPWhawGAY2G4xeBC1H\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IAccountRiskOverrideSetter.sol\":{\"keccak256\":\"0x5b9fde139ddfdaae7b650b3c3f6699e0e44605f0d9d3daadc1622eb06ad4c3f8\",\"urls\":[\"bzz-raw://2dfd5af24b6de63f94519c99fd8777a264d7cd11266fa2d525c7d72d96a9c7cf\",\"dweb:/ipfs/QmPg9fjhbnmBayZMh6yTG79xsK1PWSoAHA5pfwSXfnKKjF\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol\":{\"keccak256\":\"0x7e86ed1ed04dc205245db9f4e7cf7cca60c3bfc46c57ade8129a463780647967\",\"urls\":[\"bzz-raw://f8fbd85afd334c12bdccbb6523ebea9172b27b7b4b132c4a48b4b4dd03ceeb2b\",\"dweb:/ipfs/QmU1srfSqBTz3kw7oz1KEzfTUJvphZiE4K8MRZcy9uJjv1\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IOracleSentinel.sol\":{\"keccak256\":\"0xa94499fda55ef112640daed2cb1d06062e72c51c7b925c323b4e0ffa9b456ce5\",\"urls\":[\"bzz-raw://18b4a16acac577590a57f34f7ec6583e3cb35f575c948abb928b308d29cac1ab\",\"dweb:/ipfs/QmR1jLkzj6w7SjrdZ7GVW4V2vofSdMJwzjTqKpeUKABvxu\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IPriceOracle.sol\":{\"keccak256\":\"0x3f7c3d1397390ea44c6d5e5730d49476431c3df3b28334fe38218de5edc31138\",\"urls\":[\"bzz-raw://63ebf926fca9ce33aaabaf93805686acc25daded1648d6dab59c8c4d05116918\",\"dweb:/ipfs/QmeGkDp7ycYstpfqCYBiqoCYwy876gabx8r42o5koj3H5A\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Account.sol\":{\"keccak256\":\"0x2059276ea5e478bd5ac7f2712e7b1b6c85d291c647a54b264909044844828e67\",\"urls\":[\"bzz-raw://f153777051d12131b13a57e5c3af10a2670927cfc7d22c9519ab20c9b4b9bc89\",\"dweb:/ipfs/QmQMP3qS5xDAVGYKDfNkbkSqBKozQGQsGqX4e8VyjRtxPS\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol\":{\"keccak256\":\"0x7b2fcf441c034952dd042b6c8b20b148359db771e7c9ac07d06369560a9f0301\",\"urls\":[\"bzz-raw://84665ee4a780360fe6160d197ba98f0bf0ab0d7c6ad87bfed6226bf2f88d8d30\",\"dweb:/ipfs/QmRDfRdAd8hSXeu4SAeeYKkKoXBhStu7n4uReYBce2JD5Z\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Bits.sol\":{\"keccak256\":\"0x6d9a641163b2dd25e648c65f5d9e4949a57938e29ddc4c9dddefd74a9964aeef\",\"urls\":[\"bzz-raw://67e5a04ed4055faafbc100d6ccca9c54448ed378a1a8c71171562edda7bcbf7c\",\"dweb:/ipfs/QmYRikK3Xbgiq3UBJkgoo2zNUSSrShVabpRHmQj6iQHhrc\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Cache.sol\":{\"keccak256\":\"0xe57c80a7621a77fcb2acb9f883fb5248e71a6dce03bc2db56df0db3fee332950\",\"urls\":[\"bzz-raw://28e221c04629674490b9a0041d4f9a5f15e669dc0cc192a5df6e2c701c36369f\",\"dweb:/ipfs/QmaL3oh8c7v9cx91pB175pyCEuzxnhNTab4UxmBMsDYfUx\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol\":{\"keccak256\":\"0xd9a348c2b1eec076609ba12bbec6b9c2e4ea135790a7ef4f5411feb050af2144\",\"urls\":[\"bzz-raw://d5bcff29e47d5cd02d7a9966e9f44c46ccbb4f0e4adfc4b0b86646880677db39\",\"dweb:/ipfs/QmRKfJD4FFM1AvTynSFNx1NcDg94o9SAcjz7dvMaJCfecp\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/DolomiteMarginMath.sol\":{\"keccak256\":\"0x53f205f6a779d579be29faa9412c806a892b3e605fff092dfd9d14d936fa019f\",\"urls\":[\"bzz-raw://0ff936f89602a63b8e6a4eb4ce8f87673c0f45b7ce29694920905a3f0b5a6a69\",\"dweb:/ipfs/QmbYME9BeEvPC1ndV8EaUDX5fDMghLc3rocNUxFtgHmg8m\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/EnumerableSet.sol\":{\"keccak256\":\"0x41a3460e34b7b8635d936e35e6568ceb5354b638f53b884530e0d4875fa0f151\",\"urls\":[\"bzz-raw://d1a5ba866ee95d455afe5075dadd91fc71c2806371f2c1b358a1f67c632bb0df\",\"dweb:/ipfs/QmW4qCjmsG8J3UJv97GwDLDM7wt1K4yLDKAwzWMY7TFYi5\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0x141a0ecb4a746f0e5767df4b99dbe33c6362df507ae9d5c02da1c1c17bc26df3\",\"urls\":[\"bzz-raw://9ff03e64a8ce5231acde07788624bf8c7a8ff55d90b157fa32f62fa887a0eff0\",\"dweb:/ipfs/QmUVxxWeE954RDXbmHJAYnHsXcit6rSXGqZUigu8t9oH2z\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol\":{\"keccak256\":\"0x5257274f2d4d3605f3e97ec45fb902111fe9a22506f0b4cf308ea933bc81bfe2\",\"urls\":[\"bzz-raw://85b8023b78805063a2ec8d376f1f5983994eabd96efd8ceadb0224dbb71c5678\",\"dweb:/ipfs/QmaDhzCzRqsuHuJfhToEC4pATQHwhh7yWWsjwfuRzFT1kG\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0x05a2a90b41b6a5f42f0a72da63d015fb0b406a9ba2172823352e522e8bf3a606\",\"urls\":[\"bzz-raw://19883f0c6d33266f756ec5c3d17539524aa24b993c46c33f8400801d09373a6c\",\"dweb:/ipfs/QmYX2fwK3vQQDSZLMrc5wMfeb8RWrcC9CGX8XECLty8QDk\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0x9c27f3cd52af28c9b6bca18097b1793f114d08284d78417467d0d05f67e9e2a9\",\"urls\":[\"bzz-raw://d1ed0e7a7f76d59f30572996d4e164ab8fb5b2ec4bfca127983f9e936b904813\",\"dweb:/ipfs/QmePVYbgrY8Yw3Vf76pmEvE9pX916Jaa9we4kjM8tGM4J1\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x87ee8d3c1d6e315a116426d8c8fc6f083e220fd14dda27fad4e8d7cab3dc7305\",\"urls\":[\"bzz-raw://7c20f2c52da682c3b5917fb6a19e81f43699b1d13c62b569ed723f34da72e766\",\"dweb:/ipfs/QmbXWYXi67nHBVNDKYUpo2E9ZaEVcHLvmXQkpYLMm1d5Vm\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0x095b5f8eb3665f6e246200311efc8a654fa3e90f9a1a522e27a4d089e8ab3917\",\"urls\":[\"bzz-raw://5db812b752a03d601d424e6e21be38153477082af0acf51b5c98eefa5553ed18\",\"dweb:/ipfs/QmbE549QUXYTurpx8hSMLBJvuBpfYqyNE6FBCgHJDY8PLf\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xe1bab8c8799d83e86c7a49aaf815d8e3bc8d09562d46d44d921500db5e98de0e\",\"urls\":[\"bzz-raw://8ea3d0cc4fdab6dd9bba545a792170f939b342d8d1a7051c1c6365009af72658\",\"dweb:/ipfs/QmaLJgbavu88eEit6JPqfWnw6NmGBDZfveMXxumgWywBFG\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/testing/TestChainlinkPriceOracleV1.sol\":{\"keccak256\":\"0x4cbfa0294de01b3a61060dc58b4881101ed65f8827474ea54bfb4e9a24928ee4\",\"urls\":[\"bzz-raw://379cbe0afea8a513a2d78b5f61551f16b6c2559c259849111c9ece8d978acb42\",\"dweb:/ipfs/QmbEv1cA1CosnLpyEWyAaqvuctb9xt1iXqewuzdcLXjnkm\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}", "bytecode": "0x60806040523480156200001157600080fd5b506040516200281f3803806200281f8339810160408190526200003491620008e6565b848484848480806000806101000a8154816001600160a01b0302191690836001600160a01b0316021790555050620000ac8451865114600080516020620027ff8339815191527f496e76616c696420746f6b656e73206c656e6774680000000000000000000000620001e660201b620012ed1760201c565b620000f78351855114600080516020620027ff8339815191527f496e76616c69642061676772656761746f7273206c656e677468000000000000620001e660201b620012ed1760201c565b620001428251845114600080516020620027ff8339815191527f496e76616c696420646563696d616c73206c656e677468000000000000000000620001e660201b620012ed1760201c565b845160005b81811015620001bd57620001b48782815181106200016157fe5b60200260200101518683815181106200017657fe5b60200260200101518884815181106200018b57fe5b6020026020010151878581518110620001a057fe5b60200260200101516200026460201b60201c565b60010162000147565b50620001d56201fa406001600160e01b036200038c16565b505050505050505050505062000c4f565b826200025f5762000200826001600160e01b036200046a16565b6101d160f51b6200021a836001600160e01b036200046a16565b6040516020016200022e9392919062000a95565b60408051601f198184030181529082905262461bcd60e51b8252620002569160040162000b36565b60405180910390fd5b505050565b6001600160a01b03848116600090815260016020908152604080832080546001600160a01b03191687861617905560029091529020805460ff191660ff86161790558116156200033c576001600160a01b038181166000908152600160209081526040909120546200030d9216151590600080516020620027ff833981519152907124b73b30b634b2103a37b5b2b7103830b4b960711b908590620006b8620004f7821b17901c565b6001600160a01b03848116600090815260036020526040902080546001600160a01b0319169183169190911790555b806001600160a01b0316826001600160a01b0316856001600160a01b03167ff6dcff57d435662a867049d43b76e51e72ffba006347ec701ce100b59ee6da3760405160405180910390a450505050565b620003da62015180821015600080516020620027ff8339815191527f5374616c656e657373207468726573686f6c6420746f6f206c6f770000000000846200056760201b620013881760201c565b6200042862093a80821115600080516020620027ff8339815191527f5374616c656e657373207468726573686f6c6420746f6f206869676800000000846200056760201b620013881760201c565b60048190556040517f831d03dda5fa6d81b12a8581f2ee8a25cb44b61429b62e96787e0ba64628464e906200045f90839062000b50565b60405180910390a150565b6060808260405160200162000480919062000a7e565b60408051601f19818403018152919052905060205b8015620004da57815160001990910190829082908110620004b257fe5b01602001516001600160f81b03191615620004d45760010181529050620004f2565b62000495565b5060408051600080825260208201909252905b509150505b919050565b83620005615762000511836001600160e01b036200046a16565b6101d160f51b6200052b846001600160e01b036200046a16565b61080f60f21b62000545856001600160e01b03620005b516565b6040516200022e959493929190601f60f91b9060200162000acc565b50505050565b83620005615762000581836001600160e01b036200046a16565b6101d160f51b6200059b846001600160e01b036200046a16565b61080f60f21b62000545856001600160e01b03620006db16565b60408051602a80825260608281019093526001600160a01b038416918391602082018180388339019050509050603060f81b81600081518110620005f557fe5b60200101906001600160f81b031916908160001a905350607860f81b816001815181106200061f57fe5b60200101906001600160f81b031916908160001a90535060005b6014811015620004ed57600281026200065e600f85166001600160e01b03620007a016565b8382602903815181106200066e57fe5b60200101906001600160f81b031916908160001a90535060049390931c92620006a3600f85166001600160e01b03620007a016565b838260280381518110620006b357fe5b60200101906001600160f81b031916908160001a9053505060049290921c9160010162000639565b6060816200070257506040805180820190915260018152600360fc1b6020820152620004f2565b8160005b81156200071c57600101600a8204915062000706565b6060816040519080825280601f01601f1916602001820160405280156200074a576020820181803883390190505b508593509050815b8015620007975760001901600a840660300160f81b8282815181106200077457fe5b60200101906001600160f81b031916908160001a905350600a8404935062000752565b50949350505050565b6000600a821015620007ba57506030810160f81b620004f2565b5060570160f81b90565b8051620007d18162000c2a565b92915050565b600082601f830112620007e957600080fd5b815162000800620007fa8262000b87565b62000b60565b915081818352602084019350602081019050838560208402820111156200082657600080fd5b60005b838110156200085657816200083f8882620007c4565b845250602092830192919091019060010162000829565b5050505092915050565b600082601f8301126200087257600080fd5b815162000883620007fa8262000b87565b91508181835260208401935060208101905083856020840282011115620008a957600080fd5b60005b83811015620008565781620008c28882620008d9565b8452506020928301929190910190600101620008ac565b8051620007d18162000c44565b600080600080600060a08688031215620008ff57600080fd5b85516001600160401b038111156200091657600080fd5b6200092488828901620007d7565b95505060208601516001600160401b038111156200094157600080fd5b6200094f88828901620007d7565b94505060408601516001600160401b038111156200096c57600080fd5b6200097a8882890162000860565b93505060608601516001600160401b038111156200099757600080fd5b620009a588828901620007d7565b9250506080620009b888828901620007c4565b9150509295509295909350565b620009da620009d48262000bc2565b62000bdc565b82525050565b620009da620009d48262000bcf565b620009da620009d48262000bdc565b600062000a0b8262000ba8565b62000a178185620004f2565b935062000a2981856020860162000bf1565b9290920192915050565b600062000a408262000ba8565b62000a4c818562000bac565b935062000a5e81856020860162000bf1565b62000a698162000c20565b9093019392505050565b620009da8162000bdc565b600062000a8c8284620009ef565b50602001919050565b600062000aa38286620009fe565b915062000ab18285620009e0565b60028201915062000ac38284620009fe565b95945050505050565b600062000ada8289620009fe565b915062000ae88288620009e0565b60028201915062000afa8287620009fe565b915062000b088286620009e0565b60028201915062000b1a8285620009fe565b915062000b288284620009c5565b506001019695505050505050565b6020808252810162000b49818462000a33565b9392505050565b60208101620007d1828462000a73565b6040518181016001600160401b038111828210171562000b7f57600080fd5b604052919050565b60006001600160401b0382111562000b9e57600080fd5b5060209081020190565b5190565b90815260200190565b6000620007d18262000bdf565b6001600160f81b03191690565b6001600160f01b03191690565b90565b6001600160a01b031690565b60ff1690565b60005b8381101562000c0e57818101518382015260200162000bf4565b83811115620005615750506000910152565b601f01601f191690565b62000c358162000bb5565b811462000c4157600080fd5b50565b62000c358162000beb565b611ba08062000c5f6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806370363ed6116100815780639c489b0b1161005b5780639c489b0b146101ba578063a84f6ebb146101cd578063dc2614f0146101d5576100d4565b806370363ed61461017457806378f875b4146101875780638cfcee811461019a576100d4565b806348f8c5c2116100b257806348f8c5c21461012c57806356721d981461013f578063572ca9e71461015f576100d4565b806315c14a4a146100d95780633e30c051146100f757806341976e091461010c575b600080fd5b6100e16101e8565b6040516100ee91906119c8565b60405180910390f35b61010a61010536600461161b565b610204565b005b61011f61011a3660046115d7565b61041e565b6040516100ee91906119f7565b61010a61013a3660046116f2565b6104c2565b61015261014d3660046115d7565b61053a565b6040516100ee9190611a13565b610167610565565b6040516100ee9190611a05565b6100e16101823660046115d7565b610578565b6101676101953660046117a3565b6105a3565b6101ad6101a83660046115d7565b6105f4565b6040516100ee91906119ba565b61010a6101c8366004611655565b61061f565b61016761069d565b6101526101e33660046115d7565b6106a3565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b3361031d6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561026f57600080fd5b505afa158015610283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102a791908101906115fd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16147f4f6e6c79446f6c6f6d6974654d617267696e00000000000000000000000000007f4f6e6c7920446f6c6f6d697465206f776e65722063616e2063616c6c00000000846106b8565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8416908117909155158061037f57508160ff166064145b156103ca5760405173ffffffffffffffffffffffffffffffffffffffff8416907f5bf2ffcc89d60b76e34b290097d34468c102a3a2cbd7757fd1020963f016489d90600090a2610419565b8273ffffffffffffffffffffffffffffffffffffffff167fbc19bc42cf4b0260201ddccdd4058cef16ad086b114834e10d3049abedd6d641836040516104109190611a13565b60405180910390a25b505050565b610426611561565b61042e611561565b610437836107bd565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602052604090205490915060ff1680158061047357508060ff166064145b15610480575090506104bd565b60405180602001604052806104b660646104aa8560ff168760000151610d0c90919063ffffffff16565b9063ffffffff610d6916565b9052925050505b919050565b3361052d6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561026f57600080fd5b61053682610dab565b5050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205460ff1690565b6ec097ce7bc90715b34b9f100000000081565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600160205260409020541690565b600060ff8416600a0a816105cc6ec097ce7bc90715b34b9f10000000008363ffffffff610d6916565b905060ff8416600a0a6105e9816104aa888563ffffffff610d0c16565b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600360205260409020541690565b3361068a6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561026f57600080fd5b61069685858585610e8f565b5050505050565b60045481565b60056020526000908152604090205460ff1681565b836107b7576106c68361105c565b7f3a200000000000000000000000000000000000000000000000000000000000006106f08461105c565b7f203c00000000000000000000000000000000000000000000000000000000000061071a85611134565b6040516107509594939291907f3e000000000000000000000000000000000000000000000000000000000000009060200161195c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526107ae916004016119d6565b60405180910390fd5b50505050565b6107c5611561565b73ffffffffffffffffffffffffffffffffffffffff82811660009081526001602052604090205461083b911615157f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f496e76616c696420746f6b656e00000000000000000000000000000000000000856106b8565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600160205260408082205481517ffeaf968c00000000000000000000000000000000000000000000000000000000815291519316928291849163feaf968c9160048082019260a092909190829003018186803b1580156108b757600080fd5b505afa1580156108cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108ef9190810190611710565b5093505092505061095860045461090f83426112ab90919063ffffffff16565b107f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f436861696e6c696e6b2070726963652065787069726564000000000000000000886106b8565b60008373ffffffffffffffffffffffffffffffffffffffff1663245a7bfc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109a057600080fd5b505afa1580156109b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109d891908101906116b6565b9050610aa7838273ffffffffffffffffffffffffffffffffffffffff166322adbc786040518163ffffffff1660e01b815260040160206040518083038186803b158015610a2457600080fd5b505afa158015610a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a5c91908101906116d4565b60170b127f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f436861696e6c696e6b20707269636520746f6f206c6f770000000000000000006112ed565b610b748173ffffffffffffffffffffffffffffffffffffffff166370da2f676040518163ffffffff1660e01b815260040160206040518083038186803b158015610af057600080fd5b505afa158015610b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b2891908101906116d4565b60170b84127f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f436861696e6c696e6b20707269636520746f6f206869676800000000000000006112ed565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260036020908152604080832054600283528184205482517f313ce567000000000000000000000000000000000000000000000000000000008152925189969283169594610c3f9460ff909316938893908d169263313ce56792600480840193919291829003018186803b158015610c0757600080fd5b505afa158015610c1b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101959190810190611785565b905073ffffffffffffffffffffffffffffffffffffffff8216610c79576040518060200160405280828152509750505050505050506104bd565b6000610c848361041e565b5173ffffffffffffffffffffffffffffffffffffffff841660009081526002602052604081205491925090610cc690839060ff16600a0a63ffffffff610d0c16565b90506040518060200160405280610cf96ec097ce7bc90715b34b9f10000000006104aa8588610d0c90919063ffffffff16565b81525099505050505050505050506104bd565b600082610d1b57506000610d63565b82820282848281610d2857fe5b0414610d60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ae906119e7565b90505b92915050565b6000610d6083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611337565b610dfd620151808210157f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f5374616c656e657373207468726573686f6c6420746f6f206c6f77000000000084611388565b610e4f62093a808211157f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f5374616c656e657373207468726573686f6c6420746f6f20686967680000000084611388565b60048190556040517f831d03dda5fa6d81b12a8581f2ee8a25cb44b61429b62e96787e0ba64628464e90610e84908390611a05565b60405180910390a150565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020908152604080832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168786161790556002909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8616179055811615610fe55773ffffffffffffffffffffffffffffffffffffffff818116600090815260016020526040902054610f91911615157f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f496e76616c696420746f6b656e20706169720000000000000000000000000000846106b8565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260036020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169183169190911790555b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167ff6dcff57d435662a867049d43b76e51e72ffba006347ec701ce100b59ee6da3760405160405180910390a450505050565b606080826040516020016110709190611916565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b80156111195781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909101908290829081106110dc57fe5b01602001517fff00000000000000000000000000000000000000000000000000000000000000161561111457600101815290506104bd565b6110a3565b5060408051600080825260208201909252905b509392505050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b8160008151811061118057fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b816001815181106111c157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b601481101561112c576002810261120c600f85166113ea565b83826029038151811061121b57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c935061125d600f85166113ea565b83826028038151811061126c57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c916001016111f3565b6000610d6083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061140c565b82610419576112fb8261105c565b7f3a200000000000000000000000000000000000000000000000000000000000006113258361105c565b6040516020016107509392919061192b565b60008183611372576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ae91906119d6565b50600083858161137e57fe5b0495945050505050565b836107b7576113968361105c565b7f3a200000000000000000000000000000000000000000000000000000000000006113c08461105c565b7f203c00000000000000000000000000000000000000000000000000000000000061071a85611452565b6000600a82101561140257506030810160f81b6104bd565b5060570160f81b90565b6000818484111561144a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ae91906119d6565b505050900390565b606081611493575060408051808201909152600181527f300000000000000000000000000000000000000000000000000000000000000060208201526104bd565b8160005b81156114ab57600101600a82049150611497565b6060816040519080825280601f01601f1916602001820160405280156114d8576020820181803883390190505b508593509050815b8015611558577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b82828151811061151e57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a840493506114e0565b50949350505050565b6040518060200160405280600081525090565b8035610d6381611b19565b8051610d6381611b19565b8051610d6381611b30565b8051610d6381611b39565b8051610d6381611b42565b8035610d6381611b42565b8035610d6381611b4b565b8051610d6381611b54565b8051610d6381611b4b565b6000602082840312156115e957600080fd5b60006115f58484611574565b949350505050565b60006020828403121561160f57600080fd5b60006115f5848461157f565b6000806040838503121561162e57600080fd5b600061163a8585611574565b925050602061164b858286016115b6565b9150509250929050565b6000806000806080858703121561166b57600080fd5b60006116778787611574565b9450506020611688878288016115b6565b935050604061169987828801611574565b92505060606116aa87828801611574565b91505092959194509250565b6000602082840312156116c857600080fd5b60006115f5848461158a565b6000602082840312156116e657600080fd5b60006115f58484611595565b60006020828403121561170457600080fd5b60006115f584846115ab565b600080600080600060a0868803121561172857600080fd5b600061173488886115c1565b9550506020611745888289016115a0565b9450506040611756888289016115a0565b9350506060611767888289016115a0565b9250506080611778888289016115c1565b9150509295509295909350565b60006020828403121561179757600080fd5b60006115f584846115cc565b6000806000606084860312156117b857600080fd5b60006117c486866115b6565b93505060206117d5868287016115ab565b92505060406117e6868287016115b6565b9150509250925092565b6117f981611a2e565b82525050565b6117f961180b82611a39565b611a83565b6117f961180b82611a5e565b6117f961180b82611a83565b600061183382611a21565b61183d81856104bd565b935061184d818560208601611ac5565b9290920192915050565b6117f981611a86565b600061186b82611a21565b6118758185611a25565b9350611885818560208601611ac5565b61188e81611af1565b9093019392505050565b60006118a5602183611a25565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b805160208301906107b784825b6117f981611a83565b6117f981611ab0565b6000611922828461181c565b50602001919050565b60006119378286611828565b91506119438285611810565b6002820191506119538284611828565b95945050505050565b60006119688289611828565b91506119748288611810565b6002820191506119848287611828565b91506119908286611810565b6002820191506119a08285611828565b91506119ac82846117ff565b506001019695505050505050565b60208101610d6382846117f0565b60208101610d638284611857565b60208082528101610d608184611860565b60208082528101610d6381611898565b60208101610d6382846118f7565b60208101610d638284611904565b60208101610d63828461190d565b5190565b90815260200190565b6000610d6382611a97565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b6000610d6382611a2e565b60170b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b60ff1690565b69ffffffffffffffffffff1690565b60005b83811015611ae0578181015183820152602001611ac8565b838111156107b75750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b611b2281611a2e565b8114611b2d57600080fd5b50565b611b2281611a86565b611b2281611a91565b611b2281611a83565b611b2281611ab0565b611b2281611ab656fea365627a7a72315820eb6c3bf8968305f086241d4e3bf4d4277987471a0ab681f5530236344f02a02f6c6578706572696d656e74616cf564736f6c63430005100040436861696e6c696e6b50726963654f7261636c65563100000000000000000000", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100d45760003560e01c806370363ed6116100815780639c489b0b1161005b5780639c489b0b146101ba578063a84f6ebb146101cd578063dc2614f0146101d5576100d4565b806370363ed61461017457806378f875b4146101875780638cfcee811461019a576100d4565b806348f8c5c2116100b257806348f8c5c21461012c57806356721d981461013f578063572ca9e71461015f576100d4565b806315c14a4a146100d95780633e30c051146100f757806341976e091461010c575b600080fd5b6100e16101e8565b6040516100ee91906119c8565b60405180910390f35b61010a61010536600461161b565b610204565b005b61011f61011a3660046115d7565b61041e565b6040516100ee91906119f7565b61010a61013a3660046116f2565b6104c2565b61015261014d3660046115d7565b61053a565b6040516100ee9190611a13565b610167610565565b6040516100ee9190611a05565b6100e16101823660046115d7565b610578565b6101676101953660046117a3565b6105a3565b6101ad6101a83660046115d7565b6105f4565b6040516100ee91906119ba565b61010a6101c8366004611655565b61061f565b61016761069d565b6101526101e33660046115d7565b6106a3565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b3361031d6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561026f57600080fd5b505afa158015610283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102a791908101906115fd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16147f4f6e6c79446f6c6f6d6974654d617267696e00000000000000000000000000007f4f6e6c7920446f6c6f6d697465206f776e65722063616e2063616c6c00000000846106b8565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8416908117909155158061037f57508160ff166064145b156103ca5760405173ffffffffffffffffffffffffffffffffffffffff8416907f5bf2ffcc89d60b76e34b290097d34468c102a3a2cbd7757fd1020963f016489d90600090a2610419565b8273ffffffffffffffffffffffffffffffffffffffff167fbc19bc42cf4b0260201ddccdd4058cef16ad086b114834e10d3049abedd6d641836040516104109190611a13565b60405180910390a25b505050565b610426611561565b61042e611561565b610437836107bd565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602052604090205490915060ff1680158061047357508060ff166064145b15610480575090506104bd565b60405180602001604052806104b660646104aa8560ff168760000151610d0c90919063ffffffff16565b9063ffffffff610d6916565b9052925050505b919050565b3361052d6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561026f57600080fd5b61053682610dab565b5050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205460ff1690565b6ec097ce7bc90715b34b9f100000000081565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600160205260409020541690565b600060ff8416600a0a816105cc6ec097ce7bc90715b34b9f10000000008363ffffffff610d6916565b905060ff8416600a0a6105e9816104aa888563ffffffff610d0c16565b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600360205260409020541690565b3361068a6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561026f57600080fd5b61069685858585610e8f565b5050505050565b60045481565b60056020526000908152604090205460ff1681565b836107b7576106c68361105c565b7f3a200000000000000000000000000000000000000000000000000000000000006106f08461105c565b7f203c00000000000000000000000000000000000000000000000000000000000061071a85611134565b6040516107509594939291907f3e000000000000000000000000000000000000000000000000000000000000009060200161195c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526107ae916004016119d6565b60405180910390fd5b50505050565b6107c5611561565b73ffffffffffffffffffffffffffffffffffffffff82811660009081526001602052604090205461083b911615157f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f496e76616c696420746f6b656e00000000000000000000000000000000000000856106b8565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600160205260408082205481517ffeaf968c00000000000000000000000000000000000000000000000000000000815291519316928291849163feaf968c9160048082019260a092909190829003018186803b1580156108b757600080fd5b505afa1580156108cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108ef9190810190611710565b5093505092505061095860045461090f83426112ab90919063ffffffff16565b107f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f436861696e6c696e6b2070726963652065787069726564000000000000000000886106b8565b60008373ffffffffffffffffffffffffffffffffffffffff1663245a7bfc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109a057600080fd5b505afa1580156109b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109d891908101906116b6565b9050610aa7838273ffffffffffffffffffffffffffffffffffffffff166322adbc786040518163ffffffff1660e01b815260040160206040518083038186803b158015610a2457600080fd5b505afa158015610a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a5c91908101906116d4565b60170b127f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f436861696e6c696e6b20707269636520746f6f206c6f770000000000000000006112ed565b610b748173ffffffffffffffffffffffffffffffffffffffff166370da2f676040518163ffffffff1660e01b815260040160206040518083038186803b158015610af057600080fd5b505afa158015610b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b2891908101906116d4565b60170b84127f436861696e6c696e6b50726963654f7261636c655631000000000000000000007f436861696e6c696e6b20707269636520746f6f206869676800000000000000006112ed565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260036020908152604080832054600283528184205482517f313ce567000000000000000000000000000000000000000000000000000000008152925189969283169594610c3f9460ff909316938893908d169263313ce56792600480840193919291829003018186803b158015610c0757600080fd5b505afa158015610c