@dolomite-exchange/dolomite-margin
Version:
Ethereum Smart Contracts and TypeScript library used for the DolomiteMargin trading protocol
384 lines • 438 kB
JSON
{
"contractName": "BorrowPositionProxyV2",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "dolomiteMargin",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_borrower",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "_borrowAccountNumber",
"type": "uint256"
}
],
"name": "BorrowPositionOpen",
"type": "event"
},
{
"constant": true,
"inputs": [],
"name": "DOLOMITE_MARGIN",
"outputs": [
{
"internalType": "contract IDolomiteMargin",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "_borrowAccountNumber",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_toAccountNumber",
"type": "uint256"
},
{
"internalType": "uint256[]",
"name": "_collateralMarketIds",
"type": "uint256[]"
}
],
"name": "closeBorrowPosition",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_caller",
"type": "address"
}
],
"name": "isCallerAuthorized",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "_fromAccountNumber",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_toAccountNumber",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_marketId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_amountWei",
"type": "uint256"
},
{
"internalType": "enum AccountBalanceLib.BalanceCheckFlag",
"name": "_balanceCheckFlag",
"type": "uint8"
}
],
"name": "openBorrowPosition",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "_fromAccountNumber",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_borrowAccountNumber",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_marketId",
"type": "uint256"
},
{
"internalType": "enum AccountBalanceLib.BalanceCheckFlag",
"name": "_balanceCheckFlag",
"type": "uint8"
}
],
"name": "repayAllForBorrowPosition",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_caller",
"type": "address"
},
{
"internalType": "bool",
"name": "_isAuthorized",
"type": "bool"
}
],
"name": "setIsCallerAuthorized",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "_fromAccountNumber",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_toAccountNumber",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_marketId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_amountWei",
"type": "uint256"
},
{
"internalType": "enum AccountBalanceLib.BalanceCheckFlag",
"name": "_balanceCheckFlag",
"type": "uint8"
}
],
"name": "transferBetweenAccounts",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_fromAccountOwner",
"type": "address"
},
{
"internalType": "uint256",
"name": "_fromAccountNumber",
"type": "uint256"
},
{
"internalType": "address",
"name": "_toAccountOwner",
"type": "address"
},
{
"internalType": "uint256",
"name": "_toAccountNumber",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_marketId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_amountWei",
"type": "uint256"
},
{
"internalType": "enum AccountBalanceLib.BalanceCheckFlag",
"name": "_balanceCheckFlag",
"type": "uint8"
}
],
"name": "openBorrowPositionWithDifferentAccounts",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_borrowAccountOwner",
"type": "address"
},
{
"internalType": "uint256",
"name": "_borrowAccountNumber",
"type": "uint256"
},
{
"internalType": "address",
"name": "_toAccountOwner",
"type": "address"
},
{
"internalType": "uint256",
"name": "_toAccountNumber",
"type": "uint256"
},
{
"internalType": "uint256[]",
"name": "_collateralMarketIds",
"type": "uint256[]"
}
],
"name": "closeBorrowPositionWithDifferentAccounts",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_fromAccountOwner",
"type": "address"
},
{
"internalType": "uint256",
"name": "_fromAccountNumber",
"type": "uint256"
},
{
"internalType": "address",
"name": "_toAccountOwner",
"type": "address"
},
{
"internalType": "uint256",
"name": "_toAccountNumber",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_marketId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_amountWei",
"type": "uint256"
},
{
"internalType": "enum AccountBalanceLib.BalanceCheckFlag",
"name": "_balanceCheckFlag",
"type": "uint8"
}
],
"name": "transferBetweenAccountsWithDifferentAccounts",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_fromAccountOwner",
"type": "address"
},
{
"internalType": "uint256",
"name": "_fromAccountNumber",
"type": "uint256"
},
{
"internalType": "address",
"name": "_borrowAccountOwner",
"type": "address"
},
{
"internalType": "uint256",
"name": "_borrowAccountNumber",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_marketId",
"type": "uint256"
},
{
"internalType": "enum AccountBalanceLib.BalanceCheckFlag",
"name": "_balanceCheckFlag",
"type": "uint8"
}
],
"name": "repayAllForBorrowPositionWithDifferentAccounts",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dolomiteMargin\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_borrower\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_borrowAccountNumber\",\"type\":\"uint256\"}],\"name\":\"BorrowPositionOpen\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOLOMITE_MARGIN\",\"outputs\":[{\"internalType\":\"contract IDolomiteMargin\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_borrowAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_toAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_collateralMarketIds\",\"type\":\"uint256[]\"}],\"name\":\"closeBorrowPosition\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_borrowAccountOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_borrowAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_toAccountOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_toAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_collateralMarketIds\",\"type\":\"uint256[]\"}],\"name\":\"closeBorrowPositionWithDifferentAccounts\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"isCallerAuthorized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_fromAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_toAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountWei\",\"type\":\"uint256\"},{\"internalType\":\"enum AccountBalanceLib.BalanceCheckFlag\",\"name\":\"_balanceCheckFlag\",\"type\":\"uint8\"}],\"name\":\"openBorrowPosition\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_fromAccountOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_fromAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_toAccountOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_toAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountWei\",\"type\":\"uint256\"},{\"internalType\":\"enum AccountBalanceLib.BalanceCheckFlag\",\"name\":\"_balanceCheckFlag\",\"type\":\"uint8\"}],\"name\":\"openBorrowPositionWithDifferentAccounts\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_fromAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_borrowAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketId\",\"type\":\"uint256\"},{\"internalType\":\"enum AccountBalanceLib.BalanceCheckFlag\",\"name\":\"_balanceCheckFlag\",\"type\":\"uint8\"}],\"name\":\"repayAllForBorrowPosition\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_fromAccountOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_fromAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_borrowAccountOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_borrowAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketId\",\"type\":\"uint256\"},{\"internalType\":\"enum AccountBalanceLib.BalanceCheckFlag\",\"name\":\"_balanceCheckFlag\",\"type\":\"uint8\"}],\"name\":\"repayAllForBorrowPositionWithDifferentAccounts\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isAuthorized\",\"type\":\"bool\"}],\"name\":\"setIsCallerAuthorized\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_fromAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_toAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountWei\",\"type\":\"uint256\"},{\"internalType\":\"enum AccountBalanceLib.BalanceCheckFlag\",\"name\":\"_balanceCheckFlag\",\"type\":\"uint8\"}],\"name\":\"transferBetweenAccounts\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_fromAccountOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_fromAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_toAccountOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_toAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountWei\",\"type\":\"uint256\"},{\"internalType\":\"enum AccountBalanceLib.BalanceCheckFlag\",\"name\":\"_balanceCheckFlag\",\"type\":\"uint8\"}],\"name\":\"transferBetweenAccountsWithDifferentAccounts\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Dolomite\",\"details\":\"Proxy contract for opening borrow positions. This makes indexing easier and lowers gas costs on Arbitrum by minimizing call data\",\"methods\":{},\"title\":\"BorrowPositionProxyV2\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/proxies/BorrowPositionProxyV2.sol\":\"BorrowPositionProxyV2\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/helpers/AuthorizationBase.sol\":{\"keccak256\":\"0x9e8714656c5aed3b5d613fba31aad7fe31aa29705b1aa5bcac1f6b212b981224\",\"urls\":[\"bzz-raw://f17b337718b8c9e11410fea50b39d167315c7e2fa9f49e3d7085a59ebee8b0ff\",\"dweb:/ipfs/Qmbbru5r6njELqeUJCifcnTvk63rT5rhnDCCr2iTLsjW1U\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/helpers/OnlyDolomiteMargin.sol\":{\"keccak256\":\"0xe40babc0a6dd2a767d76f3e0f0a22de124c4c480f2b2227a7b924b44e57526ea\",\"urls\":[\"bzz-raw://458f7f1f16eacd4faae597090503dc1e58446e9d371640c77b2e01e3e3113f17\",\"dweb:/ipfs/QmXqTG4sWJeDh5XA286KarbqHT4qJ7m3dphS16enpqtQiX\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IAuthorizationBase.sol\":{\"keccak256\":\"0x5f5f602ae759236163193b77c44ee72ef9de8f7824fd9b5aa77b187cbdbb8ef6\",\"urls\":[\"bzz-raw://309b4925df2804a2aa54ec193d10db4b88b7b61eb47d87e5bbb98b95adf71889\",\"dweb:/ipfs/QmdaJ1WJQiMo1sMhvpgmYZScVELoo8h5CTupXXSR2S5tsP\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IBorrowPositionProxyV1.sol\":{\"keccak256\":\"0x10ff4ee867126adf828ef826ceb76cd6f7c4421a1920972f8977563eb56cbbf2\",\"urls\":[\"bzz-raw://a9ead491560e582901ca7e4a9e5901d4809a5f4e2214ee345a35b67f7283c1f9\",\"dweb:/ipfs/QmRFcWG4GdTLwFCdan2qhyWwHLEHXrMphQEbU7qDdHz77q\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IBorrowPositionProxyV2.sol\":{\"keccak256\":\"0x506c533d153f9daa5568cfbfa6d242844781a666d29ef4fc3024dcba3280d2e6\",\"urls\":[\"bzz-raw://8876f7bb38fba35d2b47e45a9fbb2cb9fa2fbac236fcf41b99371cf2251d8dda\",\"dweb:/ipfs/QmdFERieZMz2VwzMnUcuCLxvYxXu6sRbTzLvbjAX3SFGas\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IExpiry.sol\":{\"keccak256\":\"0xa7b197139e570e823cab42c3b8500c9c5edc8a40110970a7d6fe60f05864ba10\",\"urls\":[\"bzz-raw://4f469be063d8f694c5277650bc53ac2c0d164f62e36c6a9ab7dad126479990a9\",\"dweb:/ipfs/Qme4sTbGi4T2QhsJSweqGzqm5rxQkypy27g1vLy8ipVijV\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/lib/AccountActionLib.sol\":{\"keccak256\":\"0x5488dd7eae5ce96e479445f19301d9dd44d292a2d6739b9da1fe948eeb41edc4\",\"urls\":[\"bzz-raw://06977e07aea4d893db696173f3ee01a84008770c4e0d81fb5eb82af3a597ceaa\",\"dweb:/ipfs/QmYiH8CsXEbHypJ2gN31LnZv2tfzd2RBuSKoRgx2EbBw26\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/lib/AccountBalanceLib.sol\":{\"keccak256\":\"0x76fd16d615fe7cfceaf775b4e6524fd0462606c802b082498c768a7a4ca01a20\",\"urls\":[\"bzz-raw://56068145e300cde1c77c22e38cb753378abf2f0d4613dcb203e33ff101f169e2\",\"dweb:/ipfs/QmXvMzr9n7vzMHdUPgnc58KX4mrbQAqkq4kDETaj5Y55ZY\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/proxies/BorrowPositionProxyV1.sol\":{\"keccak256\":\"0xf9b1ac2a1d35ca50e9c1cef4e5562d0f7f8beb484eca37a06337673fcc09e7ae\",\"urls\":[\"bzz-raw://0b9b3711b80aa310f66d10a1db3ad529083438f3aa4cb13acd984bd3f42a5beb\",\"dweb:/ipfs/QmZQ3JjxQcR3nvmnwc9f3iWq8kXDkFewHWYkfjM3TurJ6W\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/proxies/BorrowPositionProxyV2.sol\":{\"keccak256\":\"0xf6a1d6c456c922006e9598959ddf6afcd13df61a151f0d5a118bbae9be7d0fdc\",\"urls\":[\"bzz-raw://c22f91511c34de06509a5e25b7d63df167a85ed6b0f75bb7cc70c62f96988113\",\"dweb:/ipfs/QmSar7HMSDVoULVVExMSk4U8KdDWBb71TXU75oaXBTfb8y\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IAccountRiskOverrideSetter.sol\":{\"keccak256\":\"0x5b9fde139ddfdaae7b650b3c3f6699e0e44605f0d9d3daadc1622eb06ad4c3f8\",\"urls\":[\"bzz-raw://2dfd5af24b6de63f94519c99fd8777a264d7cd11266fa2d525c7d72d96a9c7cf\",\"dweb:/ipfs/QmPg9fjhbnmBayZMh6yTG79xsK1PWSoAHA5pfwSXfnKKjF\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol\":{\"keccak256\":\"0x7e86ed1ed04dc205245db9f4e7cf7cca60c3bfc46c57ade8129a463780647967\",\"urls\":[\"bzz-raw://f8fbd85afd334c12bdccbb6523ebea9172b27b7b4b132c4a48b4b4dd03ceeb2b\",\"dweb:/ipfs/QmU1srfSqBTz3kw7oz1KEzfTUJvphZiE4K8MRZcy9uJjv1\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IOracleSentinel.sol\":{\"keccak256\":\"0xa94499fda55ef112640daed2cb1d06062e72c51c7b925c323b4e0ffa9b456ce5\",\"urls\":[\"bzz-raw://18b4a16acac577590a57f34f7ec6583e3cb35f575c948abb928b308d29cac1ab\",\"dweb:/ipfs/QmR1jLkzj6w7SjrdZ7GVW4V2vofSdMJwzjTqKpeUKABvxu\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IPriceOracle.sol\":{\"keccak256\":\"0x3f7c3d1397390ea44c6d5e5730d49476431c3df3b28334fe38218de5edc31138\",\"urls\":[\"bzz-raw://63ebf926fca9ce33aaabaf93805686acc25daded1648d6dab59c8c4d05116918\",\"dweb:/ipfs/QmeGkDp7ycYstpfqCYBiqoCYwy876gabx8r42o5koj3H5A\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Account.sol\":{\"keccak256\":\"0x2059276ea5e478bd5ac7f2712e7b1b6c85d291c647a54b264909044844828e67\",\"urls\":[\"bzz-raw://f153777051d12131b13a57e5c3af10a2670927cfc7d22c9519ab20c9b4b9bc89\",\"dweb:/ipfs/QmQMP3qS5xDAVGYKDfNkbkSqBKozQGQsGqX4e8VyjRtxPS\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol\":{\"keccak256\":\"0x7b2fcf441c034952dd042b6c8b20b148359db771e7c9ac07d06369560a9f0301\",\"urls\":[\"bzz-raw://84665ee4a780360fe6160d197ba98f0bf0ab0d7c6ad87bfed6226bf2f88d8d30\",\"dweb:/ipfs/QmRDfRdAd8hSXeu4SAeeYKkKoXBhStu7n4uReYBce2JD5Z\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Bits.sol\":{\"keccak256\":\"0x6d9a641163b2dd25e648c65f5d9e4949a57938e29ddc4c9dddefd74a9964aeef\",\"urls\":[\"bzz-raw://67e5a04ed4055faafbc100d6ccca9c54448ed378a1a8c71171562edda7bcbf7c\",\"dweb:/ipfs/QmYRikK3Xbgiq3UBJkgoo2zNUSSrShVabpRHmQj6iQHhrc\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Cache.sol\":{\"keccak256\":\"0xe57c80a7621a77fcb2acb9f883fb5248e71a6dce03bc2db56df0db3fee332950\",\"urls\":[\"bzz-raw://28e221c04629674490b9a0041d4f9a5f15e669dc0cc192a5df6e2c701c36369f\",\"dweb:/ipfs/QmaL3oh8c7v9cx91pB175pyCEuzxnhNTab4UxmBMsDYfUx\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol\":{\"keccak256\":\"0xd9a348c2b1eec076609ba12bbec6b9c2e4ea135790a7ef4f5411feb050af2144\",\"urls\":[\"bzz-raw://d5bcff29e47d5cd02d7a9966e9f44c46ccbb4f0e4adfc4b0b86646880677db39\",\"dweb:/ipfs/QmRKfJD4FFM1AvTynSFNx1NcDg94o9SAcjz7dvMaJCfecp\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/DolomiteMarginMath.sol\":{\"keccak256\":\"0x53f205f6a779d579be29faa9412c806a892b3e605fff092dfd9d14d936fa019f\",\"urls\":[\"bzz-raw://0ff936f89602a63b8e6a4eb4ce8f87673c0f45b7ce29694920905a3f0b5a6a69\",\"dweb:/ipfs/QmbYME9BeEvPC1ndV8EaUDX5fDMghLc3rocNUxFtgHmg8m\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/EnumerableSet.sol\":{\"keccak256\":\"0x41a3460e34b7b8635d936e35e6568ceb5354b638f53b884530e0d4875fa0f151\",\"urls\":[\"bzz-raw://d1a5ba866ee95d455afe5075dadd91fc71c2806371f2c1b358a1f67c632bb0df\",\"dweb:/ipfs/QmW4qCjmsG8J3UJv97GwDLDM7wt1K4yLDKAwzWMY7TFYi5\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0x141a0ecb4a746f0e5767df4b99dbe33c6362df507ae9d5c02da1c1c17bc26df3\",\"urls\":[\"bzz-raw://9ff03e64a8ce5231acde07788624bf8c7a8ff55d90b157fa32f62fa887a0eff0\",\"dweb:/ipfs/QmUVxxWeE954RDXbmHJAYnHsXcit6rSXGqZUigu8t9oH2z\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol\":{\"keccak256\":\"0x5257274f2d4d3605f3e97ec45fb902111fe9a22506f0b4cf308ea933bc81bfe2\",\"urls\":[\"bzz-raw://85b8023b78805063a2ec8d376f1f5983994eabd96efd8ceadb0224dbb71c5678\",\"dweb:/ipfs/QmaDhzCzRqsuHuJfhToEC4pATQHwhh7yWWsjwfuRzFT1kG\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0x05a2a90b41b6a5f42f0a72da63d015fb0b406a9ba2172823352e522e8bf3a606\",\"urls\":[\"bzz-raw://19883f0c6d33266f756ec5c3d17539524aa24b993c46c33f8400801d09373a6c\",\"dweb:/ipfs/QmYX2fwK3vQQDSZLMrc5wMfeb8RWrcC9CGX8XECLty8QDk\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0x9c27f3cd52af28c9b6bca18097b1793f114d08284d78417467d0d05f67e9e2a9\",\"urls\":[\"bzz-raw://d1ed0e7a7f76d59f30572996d4e164ab8fb5b2ec4bfca127983f9e936b904813\",\"dweb:/ipfs/QmePVYbgrY8Yw3Vf76pmEvE9pX916Jaa9we4kjM8tGM4J1\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x87ee8d3c1d6e315a116426d8c8fc6f083e220fd14dda27fad4e8d7cab3dc7305\",\"urls\":[\"bzz-raw://7c20f2c52da682c3b5917fb6a19e81f43699b1d13c62b569ed723f34da72e766\",\"dweb:/ipfs/QmbXWYXi67nHBVNDKYUpo2E9ZaEVcHLvmXQkpYLMm1d5Vm\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0x095b5f8eb3665f6e246200311efc8a654fa3e90f9a1a522e27a4d089e8ab3917\",\"urls\":[\"bzz-raw://5db812b752a03d601d424e6e21be38153477082af0acf51b5c98eefa5553ed18\",\"dweb:/ipfs/QmbE549QUXYTurpx8hSMLBJvuBpfYqyNE6FBCgHJDY8PLf\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xe1bab8c8799d83e86c7a49aaf815d8e3bc8d09562d46d44d921500db5e98de0e\",\"urls\":[\"bzz-raw://8ea3d0cc4fdab6dd9bba545a792170f939b342d8d1a7051c1c6365009af72658\",\"dweb:/ipfs/QmaLJgbavu88eEit6JPqfWnw6NmGBDZfveMXxumgWywBFG\"]},\"@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\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb63221b23818d622bfd83d18e0968307e4fcb7a35536bdceded76e1cf8349acd\",\"urls\":[\"bzz-raw://44e1e8c22362c4708a8c3362735f1465f5b05e2f7315e16c7010d694ce019d73\",\"dweb:/ipfs/QmWj9g8X1hxkXRre2kwkEjLBetjuzmSbWHD81bsSojnBkS\"]}},\"version\":1}",
"bytecode": "0x60806040523480156200001157600080fd5b50604051620022d2380380620022d2833981016040819052620000349162000077565b600080546001600160a01b039092166001600160a01b0319928316811790915560018054909216179055620000cc565b80516200007181620000b2565b92915050565b6000602082840312156200008a57600080fd5b600062000098848462000064565b949350505050565b60006001600160a01b03821662000071565b620000bd81620000a0565b8114620000c957600080fd5b50565b6121f680620000dc6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80638fb8b6c711610081578063bef4ed581161005b578063bef4ed5814610180578063c2a4240714610193578063f697ae99146101a6576100c9565b80638fb8b6c714610147578063b0463d5c1461015a578063bb0a6fa51461016d576100c9565b806324bc3240116100b257806324bc3240146101015780634929d0811461011457806358e8cf0314610134576100c9565b806304567376146100ce57806315c14a4a146100e3575b600080fd5b6100e16100dc36600461190e565b6101b9565b005b6100eb6102ab565b6040516100f89190611fd1565b60405180910390f35b6100e161010f366004611995565b6102c7565b610127610122366004611800565b610383565b6040516100f89190611fc3565b6100e1610142366004611b36565b6103b2565b6100e1610155366004611a6d565b6103c6565b6100e1610168366004611ad5565b6105c4565b6100e161017b366004611b36565b610660565b6100e161018e36600461187e565b61069a565b6100e16101a1366004611995565b6108cd565b6100e16101b4366004611844565b6109b1565b336000818152600260205260409020546102189060ff167f417574686f72697a6174696f6e426173650000000000000000000000000000007f756e617574686f72697a6564000000000000000000000000000000000000000084610bb7565b600282600381111561022657fe5b1415610235576001915061024e565b600182600381111561024357fe5b141561024e57600291505b600154604080516080810190915260008082526102a29273ffffffffffffffffffffffffffffffffffffffff1691889188918c918c918a916020820190815260200160018152602001600081525089610cb6565b50505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b336000818152600260205260409020546103269060ff167f417574686f72697a6174696f6e426173650000000000000000000000000000007f756e617574686f72697a6564000000000000000000000000000000000000000084610bb7565b600154604080516080810190915260008082526103799273ffffffffffffffffffffffffffffffffffffffff16918b918b918b918b918b9160208201905b8152602001600081526020018b905289610cb6565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff165b919050565b6103bf8585858585610f25565b5050505050565b6040805160028082526060828101909352816020015b6103e4611684565b8152602001906001900390816103dc57905050905060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff168152602001868152508160008151811061043157fe5b602002602001018190525060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff168152602001858152508160018151811061047457fe5b602002602001018190525060008383905090506060816040519080825280602002602001820160405280156104c357816020015b6104b061169b565b8152602001906001900390816104a85790505b50905060005b8281101561053057610511600060018888858181106104e457fe5b905060200201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610f85565b82828151811061051d57fe5b60209081029190910101526001016104c9565b506000546040517fa67a6a4500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063a67a6a45906105899086908590600401611f9e565b600060405180830381600087803b1580156105a357600080fd5b505af11580156105b7573d6000803e3d6000fd5b5050505050505050505050565b60028160038111156105d257fe5b14156105e0575060016105f8565b60018160038111156105ee57fe5b14156105f8575060025b61065a6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16338533888760405180608001604052806000151581526020016000600181111561064357fe5b815260200160018152602001600081525088610cb6565b50505050565b604051849033907ffd9156bd20ce24a786c761efe71a3931de038c1f2620c1bb4720609bc742b58e90600090a36103bf8585858585610f25565b336000818152600260205260409020546106f99060ff167f417574686f72697a6174696f6e426173650000000000000000000000000000007f756e617574686f72697a6564000000000000000000000000000000000000000084610bb7565b6040805160028082526060828101909352816020015b610717611684565b81526020019060019003908161070f57905050905060405180604001604052808973ffffffffffffffffffffffffffffffffffffffff168152602001888152508160008151811061076457fe5b602002602001018190525060405180604001604052808773ffffffffffffffffffffffffffffffffffffffff16815260200186815250816001815181106107a757fe5b602002602001018190525060008484905090506060816040519080825280602002602001820160405280156107f657816020015b6107e361169b565b8152602001906001900390816107db5790505b50905060005b8281101561083657610817600060018989858181106104e457fe5b82828151811061082357fe5b60209081029190910101526001016107fc565b506001546040517fa67a6a4500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063a67a6a459061088f9086908590600401611f9e565b600060405180830381600087803b1580156108a957600080fd5b505af11580156108bd573d6000803e3d6000fd5b5050505050505050505050505050565b3360008181526002602052604090205461092c9060ff167f417574686f72697a6174696f6e426173650000000000000000000000000000007f756e617574686f72697a6564000000000000000000000000000000000000000084610bb7565b604051859073ffffffffffffffffffffffffffffffffffffffff8816907ffd9156bd20ce24a786c761efe71a3931de038c1f2620c1bb4720609bc742b58e90600090a3600154604080516080810190915260008082526103799273ffffffffffffffffffffffffffffffffffffffff16918b918b918b918b918b916020820190610364565b6001546040517f052f72d7000000000000000000000000000000000000000000000000000000008152610b619173ffffffffffffffffffffffffffffffffffffffff169063052f72d790610a09903390600401611f90565b60206040518083038186803b158015610a2157600080fd5b505afa158015610a35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a599190810190611a31565b80610b195750600154604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051339273ffffffffffffffffffffffffffffffffffffffff1691638da5cb5b916004808301926020929190829003018186803b158015610ac957600080fd5b505afa158015610add573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b019190810190611826565b73ffffffffffffffffffffffffffffffffffffffff16145b7f417574686f72697a6174696f6e426173650000000000000000000000000000007f756e617574686f72697a6564000000000000000000000000000000000000000085610bb7565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b8361065a57610bc58361107f565b7f3a20000000000000000000000000000000000000000000000000000000000000610bef8461107f565b7f203c000000000000000000000000000000000000000000000000000000000000610c1985611157565b604051610c4f9594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001611e98565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610cad91600401611fdf565b60405180910390fd5b6040805160028082526060828101909352816020015b610cd4611684565b815260200190600190039081610ccc57905050905060405180604001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018881525081600081518110610d2157fe5b602002602001018190525060405180604001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018681525081600181518110610d6457fe5b6020908102919091010152604080516001808252818301909252606091816020015b610d8e61169b565b815260200190600190039081610d8657505060408051610100810190915290915080600281526020016000815260200185815260200186815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600181526020016040518060200160405280600081525081525081600081518110610e1557fe5b60209081029190910101526040517fa67a6a4500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b169063a67a6a4590610e749085908590600401611f9e565b600060405180830381600087803b158015610e8e57600080fd5b505af1158015610ea2573d6000803e3d6000fd5b5060009250610eaf915050565b836003811115610ebb57fe5b1480610ed257506001836003811115610ed057fe5b145b15610ee357610ee38a8a8a886112ce565b6000836003811115610ef157fe5b1480610f0857506002836003811115610f0657fe5b145b15610f1957610f198a8888886112ce565b50505050505050505050565b6103bf6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff163387338888604051806080016040528060001515815260200160006001811115610f7057fe5b8152602001600081526020018a905288610cb6565b610f8d61169b565b610f956116fa565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831415610fea5760408051608081019091526001815260208101600081526020016001815260200160008152509050611011565b60408051608081019091526000808252602082019081526020016000815260200184905290505b604080516101008101909152806002815260200187815260200182815260200185815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200186815260200160405180602001604052806000815250815250915050949350505050565b606080826040516020016110939190611e83565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b801561113c5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909101908290829081106110ff57fe5b01602001517fff00000000000000000000000000000000000000000000000000000000000000161561113757600101815290506103ad565b6110c6565b5060408051600080825260208201909252905b509392505050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b816000815181106111a357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b816001815181106111e457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b601481101561114f576002810261122f600f851661141d565b83826029038151811061123e57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350611280600f851661141d565b83826028038151811061128f57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c91600101611216565b6112d6611684565b60405180604001604052808573ffffffffffffffffffffffffffffffffffffffff16815260200184815250905061130b611684565b6040517f47d1b53c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716906347d1b53c9061135f9085908790600401611ff0565b604080518083038186803b15801561137657600080fd5b505afa15801561138a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113ae9190810190611a4f565b90506114156113bc8261143f565b806113cb57506113cb8261146b565b7f4163636f756e7442616c616e63654c69620000000000000000000000000000007f6163636f756e742063616e6e6f7420676f206e65676174697665000000000000888888611485565b505050505050565b6000600a82101561143557506030810160f81b6103ad565b5060570160f81b90565b80516000908015611465575060208201516fffffffffffffffffffffffffffffffff1615155b92915050565b602001516fffffffffffffffffffffffffffffffff161590565b85611415576114938561107f565b7f3a200000000000000000000000000000000000000000000000000000000000006114bd8661107f565b7f203c0000000000000000000000000000000000000000000000000000000000006114e787611157565b7f2c2000000000000000000000000000000000000000000000000000000000000061151188611575565b7f2c2000000000000000000000000000000000000000000000000000000000000061153b89611575565b604051610c4f999897969594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001611ef6565b6060816115b6575060408051808201909152600181527f300000000000000000000000000000000000000000000000000000000000000060208201526103ad565b8160005b81156115ce57600101600a820491506115ba565b6060816040519080825280601f01601f1916602001820160405280156115fb576020820181803883390190505b508593509050815b801561167b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b82828151811061164157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350611603565b50949350505050565b604080518082019091526000808252602082015290565b6040805161010081018252600080825260208201529081016116bb6116fa565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b604080516080810190915260008082526020820190815260200160008152602001600081525090565b803561146581612177565b805161146581612177565b60008083601f84011261174b57600080fd5b50813567ffffffffffffffff81111561176357600080fd5b60208301915083602082028301111561177b57600080fd5b9250929050565b80356114658161218b565b80516114658161218b565b803561146581612194565b6000604082840312156117b557600080fd5b6117bf604061200b565b905060006117cd848461178d565b82525060206117de848483016117ea565b60208301525092915050565b8051611465816121a1565b8035611465816121aa565b60006020828403121561181257600080fd5b600061181e8484611723565b949350505050565b60006020828403121561183857600080fd5b600061181e848461172e565b6000806040838503121561185757600080fd5b60006118638585611723565b925050602061187485828601611782565b9150509250929050565b60008060008060008060a0878903121561189757600080fd5b60006118a38989611723565b96505060206118b489828a016117f5565b95505060406118c589828a01611723565b94505060606118d689828a016117f5565b935050608087013567ffffffffffffffff8111156118f357600080fd5b6118ff89828a01611739565b92509250509295509295509295565b60008060008060008060c0878903121561192757600080fd5b60006119338989611723565b965050602061194489828a016117f5565b955050604061195589828a01611723565b945050606061196689828a016117f5565b935050608061197789828a016117f5565b92505060a061198889828a01611798565b9150509295509295509295565b600080600080600080600060e0888a0312156119b057600080fd5b60006119bc8a8a611723565b97505060206119cd8a828b016117f5565b96505060406119de8a828b01611723565b95505060606119ef8a828b016117f5565b9450506080611a008a828b016117f5565b93505060a0611a118a828b016117f5565b92505060c0611a228a828b01611798565b91505092959891949750929550565b600060208284031215611a4357600080fd5b600061181e848461178d565b600060408284031215611a6157600080fd5b600061181e84846117a3565b60008060008060608587031215611a8357600080fd5b6000611a8f87876117f5565b9450506020611aa0878288016117f5565b935050604085013567ffffffffffffffff811115611abd57600080fd5b611ac987828801611739565b95989497509550505050565b60008060008060808587031215611aeb57600080fd5b6000611af787876117f5565b9450506020611b08878288016117f5565b9350506040611b19878288016117f5565b9250506060611b2a87828801611798565b91505092959194509250565b600080600080600060a08688031215611b4e57600080fd5b6000611b5a88886117f5565b9550506020611b6b888289016117f5565b9450506040611b7c888289016117f5565b9350506060611b8d888289016117f5565b9250506080611b9e88828901611798565b9150509295509295909350565b6000611bb78383611d65565b9392505050565b6000611bca8383611e5a565b505060400190565b611bdb816120e4565b82525050565b611bdb81612045565b6000611bf582612038565b611bff818561203c565b935083602082028501611c1185612032565b8060005b85811015611c4b5784840389528151611c2e8582611bab565b9450611c3983612032565b60209a909a0199925050600101611c15565b5091979650505050505050565b6000611c6382612038565b611c6d818561203c565b9350611c7883612032565b8060005b83811015611ca6578151611c908882611bbe565b9750611c9b83612032565b925050600101611c7c565b509495945050505050565b611bdb81612050565b611bdb611cc682612055565b61209f565b611bdb611cc68261207a565b611bdb611cc68261209f565b6000611cee82612038565b611cf881856103ad565b9350611d0881856020860161210c565b9290920192915050565b6000611d1d82612038565b611d27818561203c565b9350611d3781856020860161210c565b611d4081612138565b9093019392505050565b611bdb816120eb565b611bdb816120f6565b611bdb81612101565b8051600090610160840190611d7a8582611d53565b506020830151611d8d6020860182611e7a565b506040830151611da06040860182611e10565b506060830151611db360c0860182611e7a565b506080830151611dc660e0860182611e7a565b5060a0830151611dda610100860182611be1565b5060c0830151611dee610120860182611e7a565b5060e0830151848203610140860152611e078282611d12565b95945050505050565b80516080830190611e218482611cb1565b506020820151611e346020850182611d5c565b506040820151611e476040850182611d5c565b50606082015161065a6060850182611e7a565b80516040830190611e6b8482611be1565b50602082015161065a60208501825b611bdb8161209f565b6000611e8f8284611cd7565b50602001919050565b6000611ea48289611ce3565b9150611eb08288611ccb565b600282019150611ec08287611ce3565b9150611ecc8286611ccb565b600282019150611edc8285611ce3565b9150611ee88284611cba565b506001019695505050505050565b6000611f02828d611ce3565b9150611f0e828c611ccb565b600282019150611f1e828b611ce3565b9150611f2a828a611ccb565b600282019150611f3a8289611ce3565b9150611f468288611ccb565b600282019150611f568287611ce3565b9150611f628286611ccb565b600282019150611f728285611ce3565b9150611f7e8284611cba565b506001019a9950505050505050505050565b602081016114658284611bd2565b60408082528101611faf8185611c58565b9050818103602083015261181e8184611bea565b602081016114658284611cb1565b602081016114658284611d4a565b60208082528101611bb78184611d12565b60608101611ffe8285611e5a565b611bb76040830184611e7a565b60405181810167ffffffffffffffff8111828210171561202a57600080fd5b604052919050565b60200190565b5190565b90815260200190565b6000611465826120cb565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b806103ad81612160565b806103ad8161216d565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b6000611465825b600061146582612045565b6000611465826120a2565b6000611465826120ac565b60005b8381101561212757818101518382015260200161210f565b8381111561065a5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6009811061216a57fe5b50565b6002811061216a57fe5b61218081612045565b811461216a57600080fd5b61218081612050565b6004811061216a57600080fd5b612180816120b6565b6121808161209f56fea365627a7a7231582035a7620817550a61f15b2d7b5cc639de038f212a2cf3267ab2ab073f533fd7966c6578706572696d656e74616cf564736f6c63430005100040",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c80638fb8b6c711610081578063bef4ed581161005b578063bef4ed5814610180578063c2a4240714610193578063f697ae99146101a6576100c9565b80638fb8b6c714610147578063b0463d5c1461015a578063bb0a6fa51461016d576100c9565b806324bc3240116100b257806324bc3240146101015780634929d0811461011457806358e8cf0314610134576100c9565b806304567376146100ce57806315c14a4a146100e3575b600080fd5b6100e16100dc36600461190e565b6101b9565b005b6100eb6102ab565b6040516100f89190611fd1565b60405180910390f35b6100e161010f366004611995565b6102c7565b610127610122366004611800565b610383565b6040516100f89190611fc3565b6100e1610142366004611b36565b6103b2565b6100e1610155366004611a6d565b6103c6565b6100e1610168366004611ad5565b6105c4565b6100e161017b366004611b36565b610660565b6100e161018e36600461187e565b61069a565b6100e16101a1366004611995565b6108cd565b6100e16101b4366004611844565b6109b1565b336000818152600260205260409020546102189060ff167f417574686f72697a6174696f6e426173650000000000000000000000000000007f756e617574686f72697a6564000000000000000000000000000000000000000084610bb7565b600282600381111561022657fe5b1415610235576001915061024e565b600182600381111561024357fe5b141561024e57600291505b600154604080516080810190915260008082526102a29273ffffffffffffffffffffffffffffffffffffffff1691889188918c918c918a916020820190815260200160018152602001600081525089610cb6565b50505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b336000818152600260205260409020546103269060ff167f417574686f72697a6174696f6e426173650000000000000000000000000000007f756e617574686f72697a6564000000000000000000000000000000000000000084610bb7565b600154604080516080810190915260008082526103799273ffffffffffffffffffffffffffffffffffffffff16918b918b918b918b918b9160208201905b8152602001600081526020018b905289610cb6565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff165b919050565b6103bf8585858585610f25565b5050505050565b6040805160028082526060828101909352816020015b6103e4611684565b8152602001906001900390816103dc57905050905060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff168152602001868152508160008151811061043157fe5b602002602001018190525060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff168152602001858152508160018151811061047457fe5b602002602001018190525060008383905090506060816040519080825280602002602001820160405280156104c357816020015b6104b061169b565b8152602001906001900390816104a85790505b50905060005b8281101561053057610511600060018888858181106104e457fe5b905060200201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610f85565b82828151811061051d57fe5b60209081029190910101526001016104c9565b506000546040517fa67a6a4500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063a67a6a45906105899086908590600401611f9e565b600060405180830381600087803b1580156105a357600080fd5b505af11580156105b7573d6000803e3d6000fd5b5050505050505050505050565b60028160038111156105d257fe5b14156105e0575060016105f8565b60018160038111156105ee57fe5b14156105f8575060025b61065a6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16338533888760405180608001604052806000151581526020016000600181111561064357fe5b815260200160018152602001600081525088610cb6565b50505050565b604051849033907ffd9156bd20ce24a786c761efe71a3931de038c1f2620c1bb4720609bc742b58e90600090a36103bf8585858585610f25565b336000818152600260205260409020546106f99060ff167f417574686f72697a6174696f6e426173650000000000000000000000000000007f756e617574686f72697a6564000000000000000000000000000000000000000084610bb7565b6040805160028082526060828101909352816020015b610717611684565b81526020019060019003908161070f57905050905060405180604001604052808973ffffffffffffffffffffffffffffffffffffffff168152602001888152508160008151811061076457fe5b602002602001018190525060405180604001604052808773ffffffffffffffffffffffffffffffffffffffff16815260200186815250816001815181106107a757fe5b602002602001018190525060008484905090506060816040519080825280602002602001820160405280156107f657816020015b6107e361169b565b8152602001906001900390816107db5790505b50905060005b8281101561083657610817600060018989858181106104e457fe5b82828151811061082357fe5b60209081029190910101526001016107fc565b506001546040517fa67a6a4500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063a67a6a459061088f9086908590600401611f9e565b600060405180830381600087803b1580156108a957600080fd5b505af11580156108bd573d6000803e3d6000fd5b5050505050505050505050505050565b3360008181526002602052604090205461092c9060ff167f417574686f72697a6174696f6e426173650000000000000000000000000000007f756e617574686f72697a6564000000000000000000000000000000000000000084610bb7565b604051859073ffffffffffffffffffffffffffffffffffffffff8816907ffd9156bd20ce24a786c761efe71a3931