UNPKG

@dolomite-exchange/dolomite-margin

Version:

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

375 lines (374 loc) 73.1 kB
{ "contractName": "Operation", "abi": [ { "constant": false, "inputs": [ { "components": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "number", "type": "uint256" } ], "internalType": "struct Account.Info[]", "name": "accounts", "type": "tuple[]" }, { "components": [ { "internalType": "enum Actions.ActionType", "name": "actionType", "type": "uint8" }, { "internalType": "uint256", "name": "accountId", "type": "uint256" }, { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "enum Types.AssetDenomination", "name": "denomination", "type": "uint8" }, { "internalType": "enum Types.AssetReference", "name": "ref", "type": "uint8" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct Types.AssetAmount", "name": "amount", "type": "tuple" }, { "internalType": "uint256", "name": "primaryMarketId", "type": "uint256" }, { "internalType": "uint256", "name": "secondaryMarketId", "type": "uint256" }, { "internalType": "address", "name": "otherAddress", "type": "address" }, { "internalType": "uint256", "name": "otherAccountId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "internalType": "struct Actions.ActionArgs[]", "name": "actions", "type": "tuple[]" } ], "name": "operate", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info[]\",\"name\":\"accounts\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum Actions.ActionType\",\"name\":\"actionType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"accountId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"enum Types.AssetDenomination\",\"name\":\"denomination\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.AssetReference\",\"name\":\"ref\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.AssetAmount\",\"name\":\"amount\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"primaryMarketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryMarketId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"otherAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"otherAccountId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Actions.ActionArgs[]\",\"name\":\"actions\",\"type\":\"tuple[]\"}],\"name\":\"operate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"dYdX * Primary public function for allowing users and contracts to manage accounts within DolomiteMargin\",\"methods\":{\"operate((address,uint256)[],(uint8,uint256,(bool,uint8,uint8,uint256),uint256,uint256,address,uint256,bytes)[])\":{\"params\":{\"accounts\":\"A list of all accounts that will be used in this operation. Cannot contain duplicates. In each action, the relevant account will be referred-to by its index in the list.\",\"actions\":\"An ordered list of all actions that will be taken in this operation. The actions will be processed in order.\"}}},\"title\":\"Operation\"},\"userdoc\":{\"methods\":{\"operate((address,uint256)[],(uint8,uint256,(bool,uint8,uint8,uint256),uint256,uint256,address,uint256,bytes)[])\":{\"notice\":\"The main entry-point to DolomiteMargin that allows users and contracts to manage accounts. Take one or more actions on one or more accounts. The msg.sender must be the owner or operator of all accounts except for those being liquidated, vaporized, or traded with. One call to operate() is considered a singular \\\"operation\\\". Account collateralization is ensured only after the completion of the entire operation.\"}}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/Operation.sol\":\"Operation\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/HasState.sol\":{\"keccak256\":\"0x5b3ef0033e519ea3f2a7877f659d653465e51f944ee5bb1957c8a089a151f609\",\"urls\":[\"bzz-raw://0f7e2c3b46ea904552e101c7bfffb647afc56408960814bab1989f2c05a34092\",\"dweb:/ipfs/QmWP3jVoYx9UYajjbDdUTBjkJT84gdJXoxaq7npTR4qVb3\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/Operation.sol\":{\"keccak256\":\"0x7ba8838ee5773c34b6c11b175f6f31d33b6fe54cb83b815e01ea94be5009ea55\",\"urls\":[\"bzz-raw://776f2e7e207eb0f34d06f15093bf5e59bee5d527a4926f81e7849ccb78032118\",\"dweb:/ipfs/QmZDp8qnbDswHgZV99ZnXKFz7Bsb93cTqkgPW6hbTTRf6f\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/impl/CallImpl.sol\":{\"keccak256\":\"0x868f8c2ed6dfdf4714505719fc12839df3010f4e83d14daa3b068013e4bd8cca\",\"urls\":[\"bzz-raw://1ad15cf77619f7f2830de1dc1e2278fd4184da7100937b5ad46903a08b1e4e94\",\"dweb:/ipfs/QmYaGB1xqfDLHbWQRASWR6Yt7CxKM2da3QkCU9NZwb1fhB\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/impl/DepositImpl.sol\":{\"keccak256\":\"0x07eaed8d56d7b57a9b0ee9a76918a087d08ae10c999ffc12c7368ab5e8551fb4\",\"urls\":[\"bzz-raw://19f5a6045092355b4a2eca6a67118a737b2ff66f95e8ba816535c719b0479407\",\"dweb:/ipfs/QmZQVZKSCuk6C437jwnx8PX51xcDEZeM1aTJ5YcaViNQw4\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/impl/LiquidateOrVaporizeImpl.sol\":{\"keccak256\":\"0xc05fd822f0991a652f6c9bc0328370bb15ff5eb3ba89cbc1d9140e4835004e7a\",\"urls\":[\"bzz-raw://842e9c896073941e69fbdc32b21b50f873a8bb57c38c810ef70e7b64ee0c3ff7\",\"dweb:/ipfs/QmRBY47DUJQ3KQ7yKvCimv6vstkk6i3fFUQPtWXfG2mXHg\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/impl/OperationImpl.sol\":{\"keccak256\":\"0xbdd0cdd00dd22d00e26fe3bfea01bfe67ebfa960e50cfdd205dce6bbd988716e\",\"urls\":[\"bzz-raw://c3aa4b12cc57bb1766b97041440b8970f0f2d477f0333609f71e3a7ba864624b\",\"dweb:/ipfs/QmSCmEcnfEqPduWKNdSeNz5DVVXePDRrDQen7jUhBpHb1X\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/impl/TradeImpl.sol\":{\"keccak256\":\"0xa4b8a68b42ce6d5294832f77f30a289f6068c89b2cb3601c2894bf62cf597e91\",\"urls\":[\"bzz-raw://c0474a10ef5e0376ba068e2773e9f7807ded4fd787a6e3db3948288bd43c6fc9\",\"dweb:/ipfs/QmSxWWkbB2Gem27V1Kpbevy8eurr9e1jeA4JaeRZ7sRwsr\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/impl/TransferImpl.sol\":{\"keccak256\":\"0x21ca9d8697802f9e023ecabbce9e9c544c3dd1d6040f5eefb3466e672563b280\",\"urls\":[\"bzz-raw://3b773cb3b8334005070518d6044b555cec9ce79eb99fcc2cfb9d577ce6bf6def\",\"dweb:/ipfs/QmSnMbrerGz8h25Ms2K6pDNpaj8iVUCAGSjLhh6SqHU6zC\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/impl/WithdrawalImpl.sol\":{\"keccak256\":\"0x74c7497bc89d75c0719f98181aed2a63719f6e1d9235679c0e6b5582a772bf8b\",\"urls\":[\"bzz-raw://dcf6492d9b36ded7e109823c126875f0f792c56b2138b088d1f12532e29b8957\",\"dweb:/ipfs/QmSQLsgjUgKqEYA975jV9WjUAEH342F9wtASmmBnE7NjE7\"]},\"/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/IAutoTrader.sol\":{\"keccak256\":\"0x123b5d92696b180c60a838d3117a9fd571851911f37c78212969015e169e14fc\",\"urls\":[\"bzz-raw://cd5d9aeb5b4e3de18ac8a51a3b2320f3e7a247b959defa9c289ee6aaf2bfc348\",\"dweb:/ipfs/QmPdjeya5BDYHEUMuz6jiwZrKJa8p2uN1vumLAJ7nhG5cN\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/ICallee.sol\":{\"keccak256\":\"0x0b65209369307041e67c28634fc17a19e953199ac42a88198b76578f7fa9b0f8\",\"urls\":[\"bzz-raw://46618851882c2bc5a6212bb0a8ad095e0f38049f24ecf404163ad6b493c728a1\",\"dweb:/ipfs/QmRx4VabTaXTGSyMt8NCTZ7nMiWCHfrvqZjRaKNRir3zEe\"]},\"/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/IExchangeWrapper.sol\":{\"keccak256\":\"0x74799c3fac16738be41e270a70d3f7ad4f75d1dc7e5d8c58f0fe4c6128345112\",\"urls\":[\"bzz-raw://d9602af1001189d199736d17266d5fb34a32f71cd05fbcf4c0f97c0b3a642eee\",\"dweb:/ipfs/QmPto2DkZ1nKqicBMdMkaek7kGSSXqSKnf697h5zuthvsy\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IExternalCallback.sol\":{\"keccak256\":\"0xd8134eac006b0a59b71cbcca82dfce7ce092a57c13a8383ebf0e8bc90c0df3e7\",\"urls\":[\"bzz-raw://ccead8bdcc71402ae7b1d8fb9bc1527081a5eb14f98a5157f5c6f27f21f8ad31\",\"dweb:/ipfs/QmdnDvTiX3EDm93ahjnZabNNgoyQzGtKpfbQUNtJe7t8Ts\"]},\"/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/Events.sol\":{\"keccak256\":\"0x2345dcc1ebf53a3d5449dab083b1fb90b5362dae692f8ff3ad00078862894e9b\",\"urls\":[\"bzz-raw://ebd34c557c06caf0696774844f0ca9746412ecc452bdd978b3bca0fd71aefbde\",\"dweb:/ipfs/QmcwXXKgv77DqfhxABRg85WR6RBPTLmge5vJGp99o9kFf8\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/ExcessivelySafeCall.sol\":{\"keccak256\":\"0x9369468538c371057c907f84d438cec6b47673711fe289cc3779f8671314e06b\",\"urls\":[\"bzz-raw://0f59a670f4bc5cf1bd3dd58bdf6c31723d9d84d9da7d9283d6860cdf5f33b7c5\",\"dweb:/ipfs/QmTGuvD5WQD2z56GH35HoPJivKPeeEpbXidJVcbXZyT23C\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Exchange.sol\":{\"keccak256\":\"0x5952f2f78aa0adb88980d9eeec5626fecbec79103038841c3ad9e4f2c4ac556b\",\"urls\":[\"bzz-raw://2a358a8370fa8abba24db2a3337f5b397e51a686d84facaf70ced9cc32d65235\",\"dweb:/ipfs/QmY4vPNq3SMu176LL4XRxFPtDQf8QEztQNxerWvmoEALsR\"]},\"/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/SafeExternalCallback.sol\":{\"keccak256\":\"0xd308a1ab320de20780f7041ea5efd9568f8692e1ed6cf512b967ab63c791a8ff\",\"urls\":[\"bzz-raw://4a904b056f094be598396a90a5ba5297213934cfc2816848a494469ce249edd4\",\"dweb:/ipfs/QmcmeezMFPntDLNS1EY4j5THgRJUeyscgLv55WwxbFoiaY\"]},\"/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\"]},\"@openzeppelin/contracts/math/Math.sol\":{\"keccak256\":\"0x4b5aa451e4e8801478708f94b118a7821c0500d676255eaf89fc78c14856ce4e\",\"urls\":[\"bzz-raw://bed15b3f35ed05505efc8fb5cb01d06c52230fbcaadf4ed24a85b1ac2f15f33c\",\"dweb:/ipfs/QmS6tW81u8E4tvzVfVuqEuMCkdwAozQ6pKJPRBR4JEVmQp\"]},\"@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": "0x60806040526013805460ff191660011790556109ba806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063a67a6a4514610030575b600080fd5b61004361003e366004610462565b610045565b005b60135460ff1661008a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161008190610780565b60405180910390fd5b601380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517fbd76ecfd00000000000000000000000000000000000000000000000000000000815273__OperationImpl_________________________9063bd76ecfd906101079060009086908690600401610790565b60006040518083038186803b15801561011f57600080fd5b505af4158015610133573d6000803e3d6000fd5b5050601380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550505050565b803561017181610937565b92915050565b600082601f83011261018857600080fd5b813561019b610196826107eb565b6107c4565b81815260209384019390925082018360005b838110156101d957813586016101c388826102c5565b84525060209283019291909101906001016101ad565b5050505092915050565b600082601f8301126101f457600080fd5b8135610202610196826107eb565b9150818183526020840193506020810190508385604084028201111561022757600080fd5b60005b838110156101d9578161023d8882610410565b8452506020909201916040919091019060010161022a565b80356101718161094b565b600082601f83011261027157600080fd5b813561027f6101968261080c565b9150808252602083016020830185838301111561029b57600080fd5b6102a68382846108c0565b50505092915050565b803561017181610954565b803561017181610961565b600061016082840312156102d857600080fd5b6102e36101006107c4565b905060006102f184846102af565b825250602061030284848301610457565b6020830152506040610316848285016103a1565b60408301525060c061032a84828501610457565b60608301525060e061033e84828501610457565b60808301525061010061035384828501610166565b60a08301525061012061036884828501610457565b60c08301525061014082013567ffffffffffffffff81111561038957600080fd5b61039584828501610260565b60e08301525092915050565b6000608082840312156103b357600080fd5b6103bd60806107c4565b905060006103cb8484610255565b82525060206103dc848483016102ba565b60208301525060406103f0848285016102ba565b604083015250606061040484828501610457565b60608301525092915050565b60006040828403121561042257600080fd5b61042c60406107c4565b9050600061043a8484610166565b825250602061044b84848301610457565b60208301525092915050565b80356101718161096e565b6000806040838503121561047557600080fd5b823567ffffffffffffffff81111561048c57600080fd5b610498858286016101e3565b925050602083013567ffffffffffffffff8111156104b557600080fd5b6104c185828601610177565b9150509250929050565b60006104d78383610654565b9392505050565b60006104ea838361074f565b505060400190565b6104fb81610865565b82525050565b600061050c82610858565b610516818561085c565b93508360208202850161052885610852565b8060005b85811015610562578484038952815161054585826104cb565b945061055083610852565b60209a909a019992505060010161052c565b5091979650505050505050565b600061057a82610858565b610584818561085c565b935061058f83610852565b8060005b838110156105bd5781516105a788826104de565b97506105b283610852565b925050600101610593565b509495945050505050565b6104fb81610870565b60006105dc82610858565b6105e6818561085c565b93506105f68185602086016108cc565b6105ff816108f8565b9093019392505050565b6104fb816108aa565b6104fb816108b5565b6000610628601f8361085c565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815260200192915050565b80516000906101608401906106698582610609565b50602083015161067c6020860182610777565b50604083015161068f60408601826106ff565b5060608301516106a260c0860182610777565b5060808301516106b560e0860182610777565b5060a08301516106c96101008601826104f2565b5060c08301516106dd610120860182610777565b5060e08301518482036101408601526106f682826105d1565b95945050505050565b8051608083019061071084826105c8565b5060208201516107236020850182610612565b5060408201516107366040850182610612565b5060608201516107496060850182610777565b50505050565b8051604083019061076084826104f2565b5060208201516107496020850182610777565b9052565b6104fb816108a7565b602080825281016101718161061b565b6060810161079e8286610773565b81810360208301526107b0818561056f565b905081810360408301526106f68184610501565b60405181810167ffffffffffffffff811182821017156107e357600080fd5b604052919050565b600067ffffffffffffffff82111561080257600080fd5b5060209081020190565b600067ffffffffffffffff82111561082357600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b60006101718261088e565b151590565b8061087f81610920565b919050565b8061087f8161092d565b73ffffffffffffffffffffffffffffffffffffffff1690565b90565b600061017182610875565b600061017182610884565b82818337506000910152565b60005b838110156108e75781810151838201526020016108cf565b838111156107495750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6009811061092a57fe5b50565b6002811061092a57fe5b61094081610865565b811461092a57600080fd5b61094081610870565b6009811061092a57600080fd5b6002811061092a57600080fd5b610940816108a756fea365627a7a723158201bd7f2c732e8d1e8fe35d8b989ab74bbf1f02953427f6d80694e3bd06ceefd586c6578706572696d656e74616cf564736f6c63430005100040", "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063a67a6a4514610030575b600080fd5b61004361003e366004610462565b610045565b005b60135460ff1661008a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161008190610780565b60405180910390fd5b601380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517fbd76ecfd00000000000000000000000000000000000000000000000000000000815273__OperationImpl_________________________9063bd76ecfd906101079060009086908690600401610790565b60006040518083038186803b15801561011f57600080fd5b505af4158015610133573d6000803e3d6000fd5b5050601380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550505050565b803561017181610937565b92915050565b600082601f83011261018857600080fd5b813561019b610196826107eb565b6107c4565b81815260209384019390925082018360005b838110156101d957813586016101c388826102c5565b84525060209283019291909101906001016101ad565b5050505092915050565b600082601f8301126101f457600080fd5b8135610202610196826107eb565b9150818183526020840193506020810190508385604084028201111561022757600080fd5b60005b838110156101d9578161023d8882610410565b8452506020909201916040919091019060010161022a565b80356101718161094b565b600082601f83011261027157600080fd5b813561027f6101968261080c565b9150808252602083016020830185838301111561029b57600080fd5b6102a68382846108c0565b50505092915050565b803561017181610954565b803561017181610961565b600061016082840312156102d857600080fd5b6102e36101006107c4565b905060006102f184846102af565b825250602061030284848301610457565b6020830152506040610316848285016103a1565b60408301525060c061032a84828501610457565b60608301525060e061033e84828501610457565b60808301525061010061035384828501610166565b60a08301525061012061036884828501610457565b60c08301525061014082013567ffffffffffffffff81111561038957600080fd5b61039584828501610260565b60e08301525092915050565b6000608082840312156103b357600080fd5b6103bd60806107c4565b905060006103cb8484610255565b82525060206103dc848483016102ba565b60208301525060406103f0848285016102ba565b604083015250606061040484828501610457565b60608301525092915050565b60006040828403121561042257600080fd5b61042c60406107c4565b9050600061043a8484610166565b825250602061044b84848301610457565b60208301525092915050565b80356101718161096e565b6000806040838503121561047557600080fd5b823567ffffffffffffffff81111561048c57600080fd5b610498858286016101e3565b925050602083013567ffffffffffffffff8111156104b557600080fd5b6104c185828601610177565b9150509250929050565b60006104d78383610654565b9392505050565b60006104ea838361074f565b505060400190565b6104fb81610865565b82525050565b600061050c82610858565b610516818561085c565b93508360208202850161052885610852565b8060005b85811015610562578484038952815161054585826104cb565b945061055083610852565b60209a909a019992505060010161052c565b5091979650505050505050565b600061057a82610858565b610584818561085c565b935061058f83610852565b8060005b838110156105bd5781516105a788826104de565b97506105b283610852565b925050600101610593565b509495945050505050565b6104fb81610870565b60006105dc82610858565b6105e6818561085c565b93506105f68185602086016108cc565b6105ff816108f8565b9093019392505050565b6104fb816108aa565b6104fb816108b5565b6000610628601f8361085c565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815260200192915050565b80516000906101608401906106698582610609565b50602083015161067c6020860182610777565b50604083015161068f60408601826106ff565b5060608301516106a260c0860182610777565b5060808301516106b560e0860182610777565b5060a08301516106c96101008601826104f2565b5060c08301516106dd610120860182610777565b5060e08301518482036101408601526106f682826105d1565b95945050505050565b8051608083019061071084826105c8565b5060208201516107236020850182610612565b5060408201516107366040850182610612565b5060608201516107496060850182610777565b50505050565b8051604083019061076084826104f2565b5060208201516107496020850182610777565b9052565b6104fb816108a7565b602080825281016101718161061b565b6060810161079e8286610773565b81810360208301526107b0818561056f565b905081810360408301526106f68184610501565b60405181810167ffffffffffffffff811182821017156107e357600080fd5b604052919050565b600067ffffffffffffffff82111561080257600080fd5b5060209081020190565b600067ffffffffffffffff82111561082357600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b60006101718261088e565b151590565b8061087f81610920565b919050565b8061087f8161092d565b73ffffffffffffffffffffffffffffffffffffffff1690565b90565b600061017182610875565b600061017182610884565b82818337506000910152565b60005b838110156108e75781810151838201526020016108cf565b838111156107495750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6009811061092a57fe5b50565b6002811061092a57fe5b61094081610865565b811461092a57600080fd5b61094081610870565b6009811061092a57600080fd5b6002811061092a57600080fd5b610940816108a756fea365627a7a723158201bd7f2c732e8d1e8fe35d8b989ab74bbf1f02953427f6d80694e3bd06ceefd586c6578706572696d656e74616cf564736f6c63430005100040", "sourceMap": "1091:1249:66:-;;;1421:11:156;:18;;-1:-1:-1;;1421:18:156;1435:4;1421:18;;;1091:1249:66;;;;;;", "deployedSourceMap": "1091:1249:66:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1091:1249:66;;;;;;;;;;;;;;;;;;;2078:260;;;;;;;;;:::i;:::-;;;1934:11:156;;;;1926:55;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;;;;;2236:95:66;;;;;:13;;:21;;:95;;2070:5:156;;2292:8:66;;2314:7;;2236:95;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2236:95:66;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2230:11:156;:18;;;;2244:4;2230:18;;;-1:-1:-1;;;;2078:260:66:o;5:130:-1:-;72:20;;97:33;72:20;97:33;;;57:78;;;;;178:753;;320:3;313:4;305:6;301:17;297:27;287:2;;338:1;335;328:12;287:2;375:6;362:20;397:105;412:89;494:6;412:89;;;397:105;;;530:21;;;574:4;562:17;;;;388:114;;-1:-1;587:14;;562:17;682:1;667:258;692:6;689:1;686:13;667:258;;;775:3;762:17;754:6;750:30;799:62;857:3;845:10;799:62;;;787:75;;-1:-1;885:4;876:14;;;;904;;;;;714:1;707:9;667:258;;;671:14;280:651;;;;;;;;969:764;;1105:3;1098:4;1090:6;1086:17;1082:27;1072:2;;1123:1;1120;1113:12;1072:2;1160:6;1147:20;1182:99;1197:83;1273:6;1197:83;;1182:99;1173:108;;1298:5;1323:6;1316:5;1309:21;1353:4;1345:6;1341:17;1331:27;;1375:4;1370:3;1366:14;1359:21;;1428:6;1475:3;1467:4;1459:6;1455:17;1450:3;1446:27;1443:36;1440:2;;;1492:1;1489;1482:12;1440:2;1517:1;1502:225;1527:6;1524:1;1521:13;1502:225;;;1585:3;1607:56;1659:3;1647:10;1607:56;;;1595:69;;-1:-1;1687:4;1678:14;;;;1715:4;1706:14;;;;;1549:1;1542:9;1502:225;;1741:124;1805:20;;1830:30;1805:20;1830:30;;1873:432;;1970:3;1963:4;1955:6;1951:17;1947:27;1937:2;;1988:1;1985;1978:12;1937:2;2025:6;2012:20;2047:60;2062:44;2099:6;2062:44;;2047:60;2038:69;;2127:6;2120:5;2113:21;2163:4;2155:6;2151:17;2196:4;2189:5;2185:16;2231:3;2222:6;2217:3;2213:16;2210:25;2207:2;;;2248:1;2245;2238:12;2207:2;2258:41;2292:6;2287:3;2282;2258:41;;;1930:375;;;;;;;;2313:162;2396:20;;2421:49;2396:20;2421:49;;2482:176;2572:20;;2597:56;2572:20;2597:56;;2874:1528;;2988:6;2976:9;2971:3;2967:19;2963:32;2960:2;;;3008:1;3005;2998:12;2960:2;3026:22;3041:6;3026:22;;;3017:31;-1:-1;3104:1;3136:65;3197:3;3177:9;3136:65;;;3111:91;;-1:-1;3268:2;3301:49;3346:3;3322:22;;;3301:49;;;3294:4;3287:5;3283:16;3276:75;3223:139;3414:2;3447:75;3518:3;3509:6;3498:9;3494:22;3447:75;;;3440:4;3433:5;3429:16;3422:101;3372:162;3595:3;3629:49;3674:3;3665:6;3654:9;3650:22;3629:49;;;3622:4;3615:5;3611:16;3604:75;3544:146;3753:3;3787:49;3832:3;3823:6;3812:9;3808:22;3787:49;;;3780:4;3773:5;3769:16;3762:75;3700:148;3906:3;3940:49;3985:3;3976:6;3965:9;3961:22;3940:49;;;3933:4;3926:5;3922:16;3915:75;3858:143;4061:3;4095:49;4140:3;4131:6;4120:9;4116:22;4095:49;;;4088:4;4081:5;4077:16;4070:75;4011:145;4234:3;4223:9;4219:19;4206:33;4259:18;4251:6;4248:30;4245:2;;;4291:1;4288;4281:12;4245:2;4326:54;4376:3;4367:6;4356:9;4352:22;4326:54;;;4319:4;4312:5;4308:16;4301:80;4166:226;2954:1448;;;;;4440:804;;4555:4;4543:9;4538:3;4534:19;4530:30;4527:2;;;4573:1;4570;4563:12;4527:2;4591:20;4606:4;4591:20;;;4582:29;-1:-1;4661:1;4693:46;4735:3;4715:9;4693:46;;;4668:72;;-1:-1;4809:2;4842:72;4910:3;4886:22;;;4842:72;;;4835:4;4828:5;4824:16;4817:98;4761:165;4975:2;5008:69;5073:3;5064:6;5053:9;5049:22;5008:69;;;5001:4;4994:5;4990:16;4983:95;4936:153;5140:2;5173:49;5218:3;5209:6;5198:9;5194:22;5173:49;;;5166:4;5159:5;5155:16;5148:75;5099:135;4521:723;;;;;5277:464;;5385:4;5373:9;5368:3;5364:19;5360:30;5357:2;;;5403:1;5400;5393:12;5357:2;5421:20;5436:4;5421:20;;;5412:29;-1:-1;5492:1;5524:49;5569:3;5549:9;5524:49;;;5499:75;;-1:-1;5637:2;5670:49;5715:3;5691:22;;;5670:49;;;5663:4;5656:5;5652:16;5645:75;5595:136;5351:390;;;;;5748:130;5815:20;;5840:33;5815:20;5840:33;;5885:726;;;6100:2;6088:9;6079:7;6075:23;6071:32;6068:2;;;6116:1;6113;6106:12;6068:2;6151:31;;6202:18;6191:30;;6188:2;;;6234:1;6231;6224:12;6188:2;6254:97;6343:7;6334:6;6323:9;6319:22;6254:97;;;6244:107;;6130:227;6416:2;6405:9;6401:18;6388:32;6440:18;6432:6;6429:30;6426:2;;;6472:1;6469;6462:12;6426:2;6492:103;6587:7;6578:6;6567:9;6563:22;6492:103;;;6482:113;;6367:234;6062:549;;;;;;6619:273;;6778:108;6882:3;6874:6;6778:108;;;6764:122;6757:135;-1:-1;;;6757:135;6901:269;;7034:96;7126:3;7118:6;7034:96;;;-1:-1;;7159:4;7150:14;;7027:143;7178:111;7259:24;7277:5;7259:24;;;7254:3;7247:37;7241:48;;;7363:1072;;7566:79;7639:5;7566:79;;;7658:119;7770:6;7765:3;7658:119;;;7651:126;;7800:3;7842:4;7834:6;7830:17;7825:3;7821:27;7869:81;7944:5;7869:81;;;7970:7;7998:1;7983:413;8008:6;8005:1;8002:13;7983:413;;;8070:9;8064:4;8060:20;8055:3;8048:33;8115:6;8109:13;8137:122;8254:4;8239:13;8137:122;;;8129:130;;8276:85;8354:6;8276:85;;;8384:4;8375:14;;;;;8266:95;-1:-1;;8030:1;8023:9;7983:413;;;-1:-1;8409:4;;7545:890;-1:-1;;;;;;;7545:890;8498:866;;8689:73;8756:5;8689:73;;;8775:113;8881:6;8876:3;8775:113;;;8768:120;;8909:75;8978:5;8909:75;;;9004:7;9032:1;9017:325;9042:6;9039:1;9036:13;9017:325;;;9109:6;9103:13;9130:109;9235:3;9220:13;9130:109;;;9123:116;;9256:79;9328:6;9256:79;;;9246:89;-1:-1;;9064:1;9057:9;9017:325;;;-1:-1;9355:3;;8668:696;-1:-1;;;;;8668:696;9372:102;9447:21;9462:5;9447:21;;9481:331;;9585:34;9613:5;9585:34;;;9631:68;9692:6;9687:3;9631:68;;;9624:75;;9704:52;9749:6;9744:3;9737:4;9730:5;9726:16;9704:52;;;9777:29;9799:6;9777:29;;;9768:39;;;;9565:247;-1:-1;;;9565:247;9819:152;9914:51;9959:5;9914:51;;9978:166;10080:58;10132:5;10080:58;;10319:331;;10479:67;10543:2;10538:3;10479:67;;;10579:33;10559:54;;10641:2;10632:12;;10465:185;-1:-1;;10465:185;10719:1688;10946:23;;10719:1688;;10872:6;10863:16;;;10975:85;10867:3;10946:23;10975:85;;;10894:172;11144:4;11137:5;11133:16;11127:23;11156:71;11221:4;11216:3;11212:14;11198:12;11156:71;;;11076:157;11308:4;11301:5;11297:16;11291:23;11320:127;11441:4;11436:3;11432:14;11418:12;11320:127;;;11243:210;11537:4;11530:5;11526:16;11520:23;11549:71;11614:4;11609:3;11605:14;11591:12;11549:71;;;11463:163;11712:4;11705:5;11701:16;11695:23;11724:71;11789:4;11784:3;11780:14;11766:12;11724:71;;;11636:165;11882:4;11875:5;11871:16;11865:23;11894:73;11959:6;11954:3;11950:16;11936:12;11894:73;;;11811:162;12056:4;12049:5;12045:16;12039:23;12068:73;12133:6;12128:3;12124:16;12110:12;12068:73;;;11983:164;12220:4;12213:5;12209:16;12203:23;12274:3;12268:4;12264:14;12255:6;12250:3;12246:16;12239:40;12294:75;12364:4;12350:12;12294:75;;;12286:83;10845:1562;-1:-1;;;;;10845:1562;12473:861;12686:23;;12620:4;12611:14;;;12715:65;12615:3;12686:23;12715:65;;;12640:146;12867:4;12860:5;12856:16;12850:23;12879:92;12965:4;12960:3;12956:14;12942:12;12879:92;;;12796:181;13049:4;13042:5;13038:16;13032:23;13061:89;13144:4;13139:3;13135:14;13121:12;13061:89;;;12987:169;13230:4;13223:5;13219:16;13213:23;13242:71;13307:4;13302:3;13298:14;13284:12;13242:71;;;13166:153;12593:741;;;;13390:485;13590:23;;13523:4;13514:14;;;13619:71;13518:3;13590:23;13619:71;;;13543:153;13771:4;13764:5;13760:16;13754:23;13783:71;13848:4;13843:3;13839:14;13825:12;13783:71;;13882:123;13982:18;;13976:29;14012:111;14093:24;14111:5;14093:24;;14130:407;14321:2;14335:47;;;14306:18;;14396:131;14306:18;14396:131;;14544:981;14935:2;14920:18;;14949:100;14924:9;15022:6;14949:100;;;15097:9;15091:4;15087:20;15082:2;15071:9;15067:18;15060:48;15122:154;15271:4;15262:6;15122:154;;;15114:162;;15324:9;15318:4;15314:20;15309:2;15298:9;15294:18;15287:48;15349:166;15510:4;15501:6;15349:166;;15532:256;15594:2;15588:9;15620:17;;;15695:18;15680:34;;15716:22;;;15677:62;15674:2;;;15752:1;15749;15742:12;15674:2;15768;15761:22;15572:216;;-1:-1;15572:216;15795:329;;15979:18;15971:6;15968:30;15965:2;;;16011:1;16008;16001:12;15965:2;-1:-1;16046:4;16034:17;;;16099:15;;15902:222;16461:317;;16600:18;16592:6;16589:30;16586:2;;;16632:1;16629;16622:12;16586:2;-1:-1;16763:4;16699;16676:17;;;;16695:9;16672:33;16753:15;;16523:255;16785:176;16934:4;16925:14;;16882:79;17145:162;17273:12;;17244:63;17876:211;18027:19;;;18076:4;18067:14;;18020:67;18650:91;;18712:24;18730:5;18712:24;;18748:85;18814:13;18807:21;;18790:43;18840:138;18918:5;18924:49;18918:5;18924:49;;;18901:77;;;;18985:152;19070:5;19076:56;19070:5;19076:56;;19297:121;19370:42;19359:54;;19342:76;19425:72;19487:5;19470:27;19504:138;;19597:40;19631:5;19597:40;;19649:152;;19749:47;19790:5;19749:47;;19962:145;20043:6;20038:3;20033;20020:30;-1:-1;20099:1;20081:16;;20074:27;20013:94;20116:268;20181:1;20188:101;20202:6;20199:1;20196:13;20188:101;;;20269:11;;;20263:18;20250:11;;;20243:39;20224:2;20217:10;20188:101;;;20304:6;20301:1;20298:13;20295:2;;;-1:-1;;20369:1;20351:16;;20344:27;20165:219;20392:97;20480:2;20460:14;20476:7;20456:28;;20440:49;20497:107;20582:1;20575:5;20572:12;20562:2;;20588:9;20562:2;20556:48;;20611:114;20703:1;20696:5;20693:12;20683:2;;20709:9;20850:117;20919:24;20937:5;20919:24;;;20912:5;20909:35;20899:2;;20958:1;20955;20948:12;20974:111;21040:21;21055:5;21040:21;;21092:110;21177:1;21170:5;21167:12;21157:2;;21193:1;21190;21183:12;21209:117;21301:1;21294:5;21291:12;21281:2;;21317:1;21314;21307:12;21454:117;21523:24;21541:5;21523:24;", "source": "/*\n\n Copyright 2019 dYdX Trading Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.7;\npragma experimental ABIEncoderV2;\n\nimport { ReentrancyGuard } from \"@openzeppelin/contracts/utils/ReentrancyGuard.sol\";\n\nimport { OperationImpl } from \"./impl/OperationImpl.sol\";\n\nimport { Account } from \"./lib/Account.sol\";\nimport { Actions } from \"./lib/Actions.sol\";\n\nimport { HasState } from \"./HasState.sol\";\n\n\n/**\n * @title Operation\n * @author dYdX\n *\n * Primary public function for allowing users and contracts to manage accounts within DolomiteMargin\n */\ncontract Operation is\n HasState,\n ReentrancyGuard\n{\n // ============ Public Functions ============\n\n /**\n * The main entry-point to DolomiteMargin that allows users and contracts to manage accounts.\n * Take one or more actions on one or more accounts. The msg.sender must be the owner or\n * operator of all accounts except for those being liquidated, vaporized, or traded with.\n * One call to operate() is considered a singular \"operation\". Account collateralization is\n * ensured only after the completion of the entire operation.\n *\n * @param accounts A list of all accounts that will be used in this operation. Cannot contain\n * duplicates. In each action, the relevant account will be referred-to by its\n * index in the list.\n * @param actions An ordered list of all actions that will be taken in this operation. The\n * actions will be processed in order.\n */\n function operate(\n Account.Info[] memory accounts,\n Actions.ActionArgs[] memory actions\n )\n public\n nonReentrant\n {\n OperationImpl.operate(\n g_state,\n accounts,\n actions\n );\n }\n}\n", "sourcePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/Operation.sol", "ast": { "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/Operation.sol", "exportedSymbols": { "Operation": [ 18108 ] }, "id": 18109, "nodeType": "SourceUnit", "nodes": [ { "id": 18072, "literals": [ "solidity", "^", "0.5", ".7" ], "nodeType": "PragmaDirective", "src": "603:23:66" }, { "id": 18073, "literals": [ "experimental", "ABIEncoderV2" ], "nodeType": "PragmaDirective", "src": "627:33:66" }, { "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", "id": 18075, "nodeType": "ImportDirective", "scope": 18109, "sourceUnit": 38093, "src": "662:84:66", "symbolAliases": [ { "foreign": 18074, "local": null } ], "unitAlias": "" }, { "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/impl/OperationImpl.sol", "file": "./impl/OperationImpl.sol", "id": 18077, "nodeType": "ImportDirective", "scope": 18109, "sourceUnit": 23216, "src": "748:57:66", "symbolAliases": [ { "foreign": 18076, "local": null } ], "unitAlias": "" }, { "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Account.sol", "file": "./lib/Account.sol", "id": 18079, "nodeType": "ImportDirective", "scope": 18109, "sourceUnit": 24886, "src": "807:44:66", "symbolAliases": [ { "foreign": 18078, "local": null } ], "unitAlias": "" }, { "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol", "file": "./lib/Actions.sol", "id": 18081, "nodeType": "ImportDirective", "scope": 18109, "sourceUnit": 25370, "src": "852:44:66", "symbolAliases": [ { "foreign": 18080, "local": null } ], "unitAlias": "" }, { "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/HasState.sol", "file": "./HasState.sol", "id": 18083, "nodeType": "ImportDirective", "scope": 18109, "sourceUnit": 18071, "src": "898:42:66", "symbolAliases": [ { "foreign": 18082, "local": null } ], "unitAlias": "" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 18084, "name": "HasState", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 18070, "src": "1117:8:66", "typeDescriptions": { "typeIdentifier": "t_contract$_HasState_$18070", "typeString": "contract HasState" } }, "id": 18085, "nodeType": "InheritanceSpecifier", "src": "1117:8:66" }, { "arguments": null, "baseName": { "contractScope": null, "id": 18086, "name": "ReentrancyGuard", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 38092, "src": "1131:15:66", "typeDescriptions": { "typeIdentifier": "t_contract$_ReentrancyGuard_$38092", "typeString": "contract ReentrancyGuard" } }, "id": 18087, "nodeType": "InheritanceSpecifier", "src": "1131:15:66" } ], "contractDependencies": [ 18070, 38092 ], "contractKind": "contract", "documentation": "@title Operation\n@author dYdX\n * Primary public function for allowing users and contracts to manage accounts within DolomiteMargin", "fullyImplemented": true, "id": 18108, "linearizedBaseContracts": [ 18108, 38092, 18070 ], "name": "Operation", "nodeType": "ContractDefinition", "nodes": [ { "body": { "id": 18106, "nodeType": "Block", "src": "2226:112:66", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 18101, "name": "g_state", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18069, "src": "2271:7:66", "typeDescriptions": { "typeIdentifier": "t_struct$_State_$28760_storage", "typeString": "struct Storage.State storage ref" } }, { "argumentTypes": null, "id": 18102, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18090, "src": "2292:8:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Info_$24851_memory_$dyn_memory_ptr", "typeString": "struct Account.Info memory[] memory" } }, { "argumentTypes": null, "id": 18103, "name": "actions", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18093, "src": "2314:7:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_ActionArgs_$24930_memory_$dyn_memory_ptr", "typeString": "struct Actions.ActionArgs memory[] memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_State_$28760_storage", "typeString": "struct Storage.State storage ref" }, { "typeIdentifier": "t_array$_t_struct$_Info_$24851_memory_$dyn_memory_ptr", "typeString": "struct Account.Info memory[] memory" }, { "typeIdentifier": "t_array$_t_struct$_ActionArgs_$24930_memory_$dyn_memory_ptr", "typeString": "struct Actions.ActionArgs memory[] memory" } ], "expression": { "argumentTypes": null, "id": 18098, "name": "OperationImpl", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 23215, "src": "2236:13:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OperationImpl_$23215_$", "typeString": "type(library OperationImpl)" } }, "id": 18100, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "operate", "nodeType": "MemberAccess", "referencedDeclaration": 22105, "src": "2236:21:66", "typeDescriptions": { "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_array$_t_struct$_Info_$24851_memory_$dyn_memory_ptr_$_t_array$_t_struct$_ActionArgs_$24930_memory_$dyn_memory_ptr_$returns$__$", "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory[] memory,struct Actions.ActionArgs memory[] memory)" } }, "id": 18104, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2236:95:66", "typeDescriptions": {